diff --git a/README b/README new file mode 100644 index 0000000000000000000000000000000000000000..7bb4f1b8b8fbfdfbef53e50c8db58f24514c9f17 --- /dev/null +++ b/README @@ -0,0 +1,217 @@ +Introduction +============ + +The Wind Energy Toolbox (or ``wetb``, pronounce as wee-tee-bee) is a +collection of Python scripts that facilitate working with (potentially a +lot) of HAWC2, HAWCStab2, FAST or other text input based simulation +tools. + +Note that this toolbox is very much a WIP (work in progress). For +example, some of the functions in the `prepost <#prepost>`__ module have +a similar functions in `Hawc2io <wetb/hawc2/Hawc2io.py>`__. These +different implementations will be merged in due time. + +How to create HAWC2 DLB's and run them on a cluster +=================================================== + +The process of how to generated, run and post-process a design load +basis (DLB) of HAWC2 simulations on a DTU Wind Energy cluster is +outlined in more detail in the documentation: + +- `Auto-generation of Design Load Cases <docs/howto-make-dlcs.md>`__ +- `House rules mimer/hawc2sim and HAWC2 folder + structure <docs/houserules-mimerhawc2sim.md>`__ +- `Generate DLB spreadsheets <docs/generate-spreadsheet.md>`__ +- `How to use the Statistics DataFrame <docs/using-statistics-df.md>`__ + +You can also use the Pdap for post-processing, which includes a MS Word +report generator based on a full DLB, a GUI for easy plotting of HAWC2 +result files, and a Python scripting interface: + +- `Pdap <http://www.hawc2.dk/Download/Post-processing-tools/Pdap>`__ +- `Pdap + report/docs <http://orbit.dtu.dk/en/publications/post-processing-of-design-load-cases-using-pdap%28827c432b-cf7d-44eb-899b-93e9c0648ca5%29.html>`__ + +Works with Python 2 and Python 3 +================================ + +This module is tested for Python 2 and 3 compatibility, and works on +both Windows and Linux. Testing for Mac is on the way, but in theory it +should work. Python 2 and 3 compatibility is achieved with a single code +base with the help of the Python module +`future <http://python-future.org/index.html>`__. + +Switching to Python 3 is in general a very good idea especially since +Python 3.5 was released. Some even dare to say it `is like eating your +vegetables <http://nothingbutsnark.svbtle.com/porting-to-python-3-is-like-eating-your-vegetables>`__. +So if you are still on Python 2, we would recommend you to give Python 3 +a try! + +You can automatically convert your code from Python 2 to 3 using the +`2to3 <https://docs.python.org/2/library/2to3.html>`__ utility which is +included in Python 2.7 by default. You can also write code that is +compatible with both 2 and 3 at the same time (you can find additional +resources in `issue +1 <https://gitlab.windenergy.dtu.dk/toolbox/WindEnergyToolbox/issues/1>`__). + +Dependencies +============ + +- `numpy <http://www.numpy.org/>`__ + +- `cython <http://cython.org/>`__ + +- `scipy <http://scipy.org/scipylib/>`__ + +- `pandas <http://pandas.pydata.org/>`__ + +- xlrd and xlwt from `python-excel <http://www.python-excel.org/>`__ + +- `openpyxl <http://openpyxl.readthedocs.org/en/default/>`__ + +- h5py + +- `matplotlib <http://matplotlib.org/>`__ + +- `pytables <http://www.pytables.org/>`__ + +- `pyscaffold <http://pyscaffold.readthedocs.org/en/>`__ + +- pytest, pytest-cov + +- six, `future <http://python-future.org/index.html>`__ + +Installation +============ + +Detailed installation instructions, including how to install Python from +scratch, are described in the `detailed installation +manual <docs/install-manual-detailed.md>`__. + +If you know what you are doing, you can install as a package as follows: + +:: + + python setup.py install + +Or in development mode, install from your working directory + +:: + + pip install -e ./ + +Or create a binary wheel distribution package with: + +:: + + python setup.py bdist_wheel -d dist + +Tests +===== + +Only a small part of the code is covered by unittests currently. More +tests are forthcoming. + +Contents of WindEnergyToolbox, `wetb <wetb>`__ +============================================== + +Overview +~~~~~~~~ + +- `hawc2 <#hawc2>`__ +- `gtsdf <#gtsdf>`__ +- `fatigue\_tools <#fatigue_tools>`__ +- `wind <#wind>`__ +- `dlc <#dlc>`__ +- `prepost <#prepost>`__ +- `fast <#fast>`__ +- `utils <#utils>`__ + +`hawc2 <wetb/hawc2>`__ +~~~~~~~~~~~~~~~~~~~~~~ + +- `Hawc2io <wetb/hawc2/Hawc2io.py>`__: Read binary, ascii and flex + result files +- `sel\_file <wetb/hawc2/sel_file.py>`__: Read/write \*.sel (sensor + list) files +- `htc\_file <wetb/hawc2/htc_file.py>`__: Read/write/manipulate htc + files +- `ae\_file <wetb/hawc2/ae_file.py>`__: Read AE (aerodynamic blade + layout) files +- `pc\_file <wetb/hawc2/pc_file.py>`__: Read PC (profile coefficient) + files +- `shear\_file <wetb/hawc2/shear_file.py>`__: Create user defined shear + file +- `at\_time\_file <wetb/hawc2/at_time_file.py>`__: Read at + output\_at\_time files +- `log\_file <wetb/hawc2/log_file.py>`__: Read and interpret log files +- `ascii2bin <wetb/hawc2/ascii2bin>`__: Compress HAWC2 ascii result + files to binary + +`gtsdf <wetb/gtsdf>`__ +~~~~~~~~~~~~~~~~~~~~~~ + +General Time Series Data Format, a binary hdf5 data format for storing +time series data. - `gtsdf <wetb/gtsdf/gtsdf.py>`__: read/write/append +gtsdf files - `unix\_time <wetb/gtsdf/unix_time.py>`__: convert between +datetime and unix time (seconds since 1/1/1970) + +`fatigue\_tools <wetb/fatigue_tools>`__ +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +- `fatigue <wetb/fatigue_tools/fatigue.py>`__: Rainflow counting, cycle + matrix and equivalent loads +- `bearing\_damage <wetb/fatigue_tools/bearing_damage.py>`__: Calculate + a comparable measure of bearing damage + +`wind <wetb/wind>`__ +~~~~~~~~~~~~~~~~~~~~ + +- `shear <wetb/wind/shear.py>`__: Calculate and fit wind shear + +`dlc <wetb/dlc>`__ +~~~~~~~~~~~~~~~~~~ + +Module for working with "Design load cases" (Code independent) - +`high\_level <wetb/dlc/high_level.py>`__ Class for working with the +highlevel dlc excell sheet + +`prepost <wetb/prepost>`__ +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Module for creating an arbitrary number of HAWC2 simulations, and +optionally corresponding execution scripts for a PBS Torque cluster +(Linux), simple bash (Linux), or Windows batch scripts. A +post-processing module is also included that calculates statistical +parameters, performs rainflow counting for fatigue load calculations, +and create load envelopes. + +Additional documentation can be found here: + +- `Auto-generation of Design Load Cases <docs/howto-make-dlcs.md>`__ + +- `How to use the Statistics DataFrame <docs/using-statistics-df.md>`__ + +`fast <wetb/fast>`__ +~~~~~~~~~~~~~~~~~~~~ + +Tools for working with NREL's FAST code (An aeroelastic computer-aided +engineering (CAE) tool for horizontal axis wind turbines) - +`fast\_io <wetb/fast/fast_io.py>`__: Read binary and ascii result files + +`utils <wetb/utils>`__ +~~~~~~~~~~~~~~~~~~~~~~ + +Other functions - `geometry <wetb/utils/geometry.py>`__: Different kind +of geometry conversion functions - +`process\_exec <wetb/utils/process_exec.py>`__: Run system command in +subprocess - `timing <wetb/utils/timing.py>`__: Decorators for +evaluating execution time of functions - +`caching <wetb/utils/caching.py>`__: Decorators to create cached +(calculate once) functions and properties + +Note +==== + +This project has been set up using PyScaffold 2.5. For details and usage +information on PyScaffold see http://pyscaffold.readthedocs.org/.