diff --git a/docs/generate-spreadsheet.md b/docs/generate-spreadsheet.md new file mode 100644 index 0000000000000000000000000000000000000000..44caf721075ba25f894e708d386557a33e3e7210 --- /dev/null +++ b/docs/generate-spreadsheet.md @@ -0,0 +1,33 @@ +Auto-generation of DLB Spreadsheets +=================================== + +Introduction +------------ + +This manual explains how to automatically generate the set of spreadsheets that +defines a DLB and is required as input to the pre-processor. + +This tool comes handy in the following scenarios: +* a DLB for a new turbine needs to be generated; +* a different wind turbine class needs to be evaluated; +* a new parameter needs to be included in the htc file; +* different parameters variations are required, e.g. different wind speed range or different number of turbulent seed. + +The generator of the cases uses an input spreadsheet where the cases are defined +in a more compact way. +The tool is based on the "tags" concept that is used for the genetaion of the htc files. + +Main spreatsheet +---------------- + +A main spreadsheet is used to defines all the DLC of the DLB. The file specifies the tags that are then required in the htc files. + +The file has: +* a Main sheet where some wind turbines parameters are defined, the tags are initialized, and the definitions of turbulence and gusts are given. +* a series of other sheets, each defining a DLC. In these sheets the tags that changes in that DLC are defined. + +The tags are devided into three possible different categories: +* Constants (C). Constants are tags that do not change in a DLC, e.g. simulation time, output format, ...; +* Variables (V). Variables are tags that define the number of cases in a DLC through their combinations, e.g. wind speed, number of turbilence seeds, wind direction, ..; +* Functions (F). Functions are tags that depend on other tags through an expression, e.g. turbulence intensity, case name, .... + diff --git a/wetb/prepost/GenerateDLCs.py b/wetb/prepost/GenerateDLCs.py index 3bcf9bd2d5db7d36c437f551bc6f0994da094196..7003a8ff65e02d49de7346886947932093316897 100644 --- a/wetb/prepost/GenerateDLCs.py +++ b/wetb/prepost/GenerateDLCs.py @@ -14,6 +14,8 @@ from __future__ import absolute_import from numpy import floor, arctan, pi import pandas as pd import xlrd +from argparse import ArgumentParser +import os def multi_for(iterables): @@ -230,7 +232,9 @@ class GenerateDLCCases(GeneralDLC): self.add_formulas(dlc, general_functions) self.eval_formulas(dlc) df = pd.DataFrame(dlc) - df.to_excel(folder+sheet.name+'.xls', index=False) + if not os.path.exists(folder): + os.makedirs(folder) + df.to_excel(os.path.join(folder, sheet.name+'.xls'), index=False) class RunTest(): @@ -257,6 +261,12 @@ class RunTest(): assert_frame_equal(book1, book2, check_dtype=False) if __name__ == '__main__': + + parser = ArgumentParser(description = "generator of DLB spreadsheets") + parser.add_argument('--master', type=str, default='DLCs.xlsx', action='store', + dest='filename', help='Master spreadsheet file') + parser.add_argument('--folder', type=str, default='', action='store', + dest='folder', help='Destination folder name') + opt = parser.parse_args() DLB = GenerateDLCCases() - DLB.execute() - pass + DLB.execute(filename=opt.filename, folder=opt.folder) \ No newline at end of file