Skip to content

Commit

Permalink
Merge pull request #688 from ebranlard/f/driver
Browse files Browse the repository at this point in the history
AeroDyn driver update for multiple wind turbines, with arbitrary motions and geometries
  • Loading branch information
rafmudaf authored Sep 14, 2021
2 parents d8f8c3f + ac26b1f commit fef5b7e
Show file tree
Hide file tree
Showing 81 changed files with 27,232 additions and 9,542 deletions.
2 changes: 1 addition & 1 deletion docs/source/install/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ After extracting the contents, the OpenFAST executables
can be tested by opening a command prompt, moving into the directory
containing the executables, and running a simple test command:

.. code-block::
.. code-block:: bash
cd C:\your\path\Desktop\openfast_binaries\
openfast_x64.exe /h
Expand Down
2 changes: 1 addition & 1 deletion docs/source/user/aerodyn-olaf/AppendixA.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ Appendix A: OLAF Primary Input File
.. container::
:name: Tab:OLAFinputfile

.. literalinclude:: ExampleFiles/ExampleFile--OLAF.txt
.. literalinclude:: ExampleFiles/ExampleFile--OLAF.dat
:linenos:
:language: none
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,29 @@ Free wake input file for the Helix test case
--------------------------- GENERAL OPTIONS ---------------------------------------------------
5 IntMethod Integration method {1: Runge-Kutta 4th order, 5: Forward Euler 1st order, default: 5} (switch)
0.2 DTfvw Time interval for wake propagation. {default: dtaero} (s)
5 FreeWakeStart Time when wake is free. (-) value = always free. {default: 0.0} (s)
2.0 FullCircStart Time at which full circulation is reached. {default: 0.0} (s)
default FreeWakeStart Time when wake is free. (-) value = always free. {default: 0.0} (s)
default FullCircStart Time at which full circulation is reached. {default: 0.0} (s)
--------------------------- CIRCULATION SPECIFICATIONS ----------------------------------------
1 CircSolvingMethod Circulation solving method {1: Cl-Based, 2: No-Flow Through, 3: Prescribed, default: 1 }(switch)
0.01 CircSolvConvCrit Convergence criteria {default: 0.001} [only if CircSolvingMethod=1] (-)
0.1 CircSolvRelaxation Relaxation factor {default: 0.1} [only if CircSolvingMethod=1] (-)
30 CircSolvMaxIter Maximum number of iterations for circulation solving {default: 30} (-)
default CircSolvConvCrit Convergence criteria {default: 0.001} [only if CircSolvingMethod=1] (-)
default CircSolvRelaxation Relaxation factor {default: 0.1} [only if CircSolvingMethod=1] (-)
default CircSolvMaxIter Maximum number of iterations for circulation solving {default: 30} (-)
"NA" PrescribedCircFile File containing prescribed circulation [only if CircSolvingMethod=3] (quoted string)
===============================================================================================
--------------------------- WAKE OPTIONS ------------------------------------------------------
------------------- WAKE EXTENT AND DISCRETIZATION --------------------------------------------
50 nNWPanel Number of near-wake panels [integer] (-)
150 nNWPanel Number of near-wake panels [integer] (-)
400 WakeLength Total wake distance [integer] (number of time steps)
default FreeWakeLength Wake length that is free [integer] (number of time steps) {default: WakeLength}
False FWShedVorticity Include shed vorticity in the far wake {default: false}
------------------- WAKE REGULARIZATIONS AND DIFFUSION -----------------------------------------
0 DiffusionMethod Diffusion method to account for viscous effects {0: None, 1: Core Spreading, "default": 0}
0 RegDeterMethod Method to determine the regularization parameters {0: Constant, 1: Optimized, 2: Chord-scaled, 3: dr-scaled, default: 0 }
2 RegDeterMethod Method to determine the regularization parameters {0: Constant, 1: Optimized, 2: Chord-scaled, 3: dr-scaled, default: 0 }
2 RegFunction Viscous diffusion function {0: None, 1: Rankine, 2: LambOseen, 3: Vatistas, 4: Denominator, "default": 3} (switch)
0 WakeRegMethod Wake regularization method {1: Constant, 2: Stretching, 3: Age, default: 1} (switch)
2.0 WakeRegFactor Wake regularization factor (m or -)
2.0 BladeRegFactor Blade regularization factor (m or -)
100 CoreSpreadEddyVisc Eddy viscosity in core spreading methods, typical values 1-1000
3 WakeRegMethod Wake regularization method {1: Constant, 2: Stretching, 3: Age, default: 1} (switch)
0.25 WakeRegFactor Wake regularization factor (m or -)
0.25 BladeRegFactor Blade regularization factor (m or -)
1000 CoreSpreadEddyVisc Eddy viscosity in core spreading methods, typical values 1-1000
------------------- WAKE TREATMENT OPTIONS ---------------------------------------------------
False TwrShadowOnWake Include tower flow disturbance effects on wake convection {default:false} [only if TwrPotent or TwrShadow]
0 ShearModel Shear Model {0: No treatment, 1: Mirrored vorticity, default: 0}
Expand All @@ -40,6 +40,6 @@ False TwrShadowOnWake Include tower flow disturbance effects on wake convec
2 VTKCoord Coordinate system used for VTK export. {1: Global, 2: Hub, "default": 1}
1 VTK_fps Frame rate for VTK output (frames per second) {"all" for all glue code timesteps, "default" for all OLAF timesteps} [used only if WrVTK=1]
0 nGridOut Number of grid outputs
GridName DTOut XStart XEnd nX YStart YEnd nY ZStart ZEnd nZ
(-) (s) (m) (m) (-) (m) (m) (-) (m) (m) (-)
GridName GridType TStart TEnd DTOut XStart XEnd nX YStart YEnd nY ZStart ZEnd nZ
(-) (-) (s) (s) (s) (m) (m) (-) (m) (m) (-) (m) (m) (-)
------------------------------------------------------------------------------------------------
41 changes: 26 additions & 15 deletions docs/source/user/aerodyn-olaf/InputFiles.rst
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,11 @@ Output Options

**WrVTK** [flag] specifies if Visualization Toolkit (VTK) visualization files
are to be written out. *WrVTK* = *[0]* does not write out any VTK files. *WrVTK*
= *[1]* outputs a VTK file at every time step. The outputs are written in the
= *[1]* outputs VTK files at time steps defined by *VTK_fps*.
*WrVTK*= *[2]*, outputs at time steps defined by *VTK_fps*, but ensures that
a file is written at the beginning and the end of the simulation (typically
used with `VTK_fps=0` to output only at the end of the simulation).
The outputs are written in the
folder, ``vtk_fvw.`` The parameters *WrVTK*, *VTKCoord*, and *VTK_fps* are
independent of the glue code VTK output options.

Expand All @@ -229,29 +233,36 @@ coordinate system *[2]*. The default option is *[1]*.
**VTK_fps** [:math:`1`/sec] specifies the output frequency of the VTK files. The
provided value is rounded to the nearest allowable multiple of the time step.
The default value is :math:`1/dt_\text{fvw}`. Specifying *VTK_fps* = *[all]*,
is equivalent to using the value :math:`1/dt_\text{aero}`.

is equivalent to using the value :math:`1/dt_\text{aero}`. If *VTK_fps<0*, then
no outputs are created, except if *WrVTK=2*.

**nGridOut** [-] specifies the number of grid outputs. The default value is 0.
The grid outputs are velocity fields that are exported on a regular Cartesian grid.
The are defined using a table that follows on the subsequent lines, with two lines of headers.
The user needs to specify a **GridName**, used for the VTK output filename, a time interval
**DTOut**, and the grid extent in each directions, e.g. **XStart**, **XEnd**, **nX**.
With these options, it is possible to export the velocity field at a point (**nX=nY=nZ=1**),
a line, a plane, or a box. When the variable **DTOut** is set to "all", the AeroDyn time step is used, when it is set to "default", the OLAF time step is used.
The grid outputs are fields (velocity, vorticity) that are exported on a regular Cartesian grid.
They are defined using a table that follows on the subsequent lines, with two lines of headers.
The user needs to specify a name (**GridName**) used for the VTK output filename,
a grid type (**GridType**), a start time (**TStart**), an end time (**TEnd**), a time interval
(**DTOut**), and the grid extent in each directions, e.g. **XStart**, **XEnd**, **nX**.
When **GridType** is 1, the velocity field is written to disk, when **GridType** is 2,
both the velocity field and the vorticity field (computed using finite differences) are written.
It is possible to export fields at a point (**nX=nY=nZ=1**),
a line, a plane, or a 3D grid.
When set to "default", the start time is 0 and the end time is set to the end of the simulation.
The outputs are done for :math:`t_{Start}\leq t \leq t_{End}`
When the variable **DTOut** is set to "all", the AeroDyn time step is used, when it is set to "default", the OLAF time step is used.
An example of input is given below:

.. code::
3 nGridOut Number of grid outputs
GridName DTOut XStart XEnd nX YStart YEnd nY ZStart ZEnd nZ
(-) (s) (m) (m) (-) (m) (m) (-) (m) (m) (-)
"box" all -200 1000. 5 -150. 150. 20 5. 300. 30
"vert" default -200 1000. 100 0. 0. 1 5. 300. 30
"hori" 2.0 -200 1000. 100 -150. 150. 20 100. 100. 1
GridName GridType TStart TEnd DTOut XStart XEnd nX YStart YEnd nY ZStart ZEnd nZ
(-) (-) (s) (s) (s) (m) (m) (-) (m) (m) (-) (m) (m) (-)
"box" 2 default default all -200 1000. 5 -150. 150. 20 5. 300. 30
"vert" 1 default default default -200 1000. 100 0. 0. 1 5. 300. 30
"hori" 1 default default 2.0 -200 1000. 100 -150. 150. 20 100. 100. 1
In this example, the first grid, named "box", is exported at the AeroDyn time step, and consists
of a box of shape 5x20x30 and dimension 1200x300x295. The two other grids are vertical and horizontal planes.
of a box of shape 5x20x30 and dimension 1200x300x295. The grid contains both the velocity and vorticity.
The two other grids are vertical and horizontal planes containing only the velocity.


AeroDyn15 Input File
Expand Down
21 changes: 13 additions & 8 deletions docs/source/user/aerodyn/appendix.rst
Original file line number Diff line number Diff line change
Expand Up @@ -10,19 +10,22 @@ AeroDyn Input Files

In this appendix we describe the AeroDyn input-file structure and provide examples.

1) AeroDyn Driver Input File
:download:`(driver input file example) <examples/ad_driver_example.inp>`:

1) Baseline AeroDyn Driver Input Files:
:download:`(driver input file example) <examples/ad_driver_example.dvr>`:
The driver input file is only needed for the standalone version of AeroDyn and contains inputs normally generated by OpenFAST, and necessary to control the aerodynamic simulation for uncoupled models.

2) AeroDyn Driver Timeseries Input File
:download:`(driver timeseries input file example) <examples/ad_driver_timeseries_example.inp>`:
AeroDyn Driver Timeseries Input File
:download:`(driver timeseries input file example) <examples/ad_driver_timeseries_example.csv>`:
The timeseries input file for a case in the AeroDyn driver allows the parameters
to vary with time. This feature can be useful for debugging the aerodynamic response
outside of OpenFAST.

2) Multi-rotor AeroDyn Driver Input File
:download:`(driver input file example) <examples/ad_driver_multiple.dvr>`:


3) AeroDyn Primary Input File
:download:`(primary input file example) <examples/ad_primary_example.inp>`:
:download:`(primary input file example) <examples/ad_primary_example.dat>`:

The primary AeroDyn input file defines modeling options, environmental conditions (except freestream flow), airfoils, tower nodal discretization and properties, as well as output file specifications.

Expand All @@ -31,12 +34,14 @@ The file is organized into several functional sections. Each section correspond
The input file begins with two lines of header information which is for your use, but is not used by the software.

4) Airfoil Data Input File
:download:`(airfoil data input file example) <examples/ad_airfoil_example.inp>`:

:download:`(profile data) <examples/ad_polar_example.dat>`:
:download:`(profile coordinates) <examples/ad_airfoil_example.dat>`:

The airfoil data input files themselves (one for each airfoil) include tables containing coefficients of lift force, drag force, and pitching moment versus AoA, as well as UA model parameters. In these files, any line whose first non-blank character is an exclamation point (!) is ignored (for inserting comment lines). The non-comment lines should appear within the file in order, but comment lines may be intermixed as desired for reading clarity.

5) Blade Data Input File
:download:`(blade data input file example) <examples/ad_blade_example.inp>`:
:download:`(blade data input file example) <examples/ad_blade_example.dat>`:

The blade data input file contains the nodal discretization, geometry, twist, chord, and airfoil identifier for a blade. Separate files are used for each blade, which permits modeling of aerodynamic imbalances.

Expand Down
96 changes: 96 additions & 0 deletions docs/source/user/aerodyn/bibliography.bib
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@

@TECHREPORT{AeroDyn:manual,
title = {AeroDyn Theory Manual},
author = {P. J. Moriarty and A. Craig Hansen},
institution = {National Renewable Energy Laboratory},
year = 2005,
month = {December},
note = {NREL/EL-500-36881}
}

@TECHREPORT{AeroDyn:manualUnsteady,
title = {The Unsteady Aerodynamics Module for FAST 8},
author = {R. Damiani and G. Hayman},
year = 2019,
institution = {National Renewable Energy Laboratory},
note = {NREL/TP-5000-66347}
}

@book{Branlard:book,
author = {E. Branlard},
title = {Wind Turbine Aerodynamics and Vorticity-Based Methods: Fundamentals and Recent Applications},
year = {2017},
publisher= {Springer International Publishing},
doi={10.1007/978-3-319-55164-7},
isbn={ 978-3-319-55163-0}
}


@article{Hansen:book,
author = {Hansen, M. O. L. and S{\o}rensen, J. N. and Voutsinas, S. and S{\o}rensen, N. and Madsen, H. Aa.},
doi = {10.1016/j.paerosci.2006.10.002},
journal = {Progress in Aerospace Sciences},
keywords = {aeroelasticity,wind turbines},
pages = {285--330},
title = {{State of the art in wind turbine aerodynamics and aeroelasticity}},
volume = {42},
year = {2006}
}


@article{Ning:2014,
author = {Ning, S. Andrew},
title = {A simple solution method for the blade element momentum equations with guaranteed convergence},
journal = {Wind Energy},
volume = {17},
number = {9},
pages = {1327-1345},
keywords = {blade element momentum equations, robust solution methodology, guaranteed convergence},
doi = {https://doi.org/10.1002/we.1636},
year = {2014}
}


@techreport{Hansen:2004,
title = {A Beddoes-Leishman type dynamic stall model in state-space and indicial formulations},
author = {Hansen, M.H. and Gaunaa, Mac and Aagaard Madsen, Helge},
year = {2004},
issn = {01062840},
isbn = {8755030904},
institution={Ris{\o} National Laboratory},
address={Roskilde, Denmark}
}

@techreport{Bladed:manual,
title = {Bladed Theory Manual version 4.8},
author = {DNV GL},
year = {2016},
institution={DNV-GL - Energy},
address={Bristol, UK}
}


@article{Oye:1991,
author = {S. {\O}ye},
title = {Dynamic stall, simulated as a time lag of separation},
year = {1991},
journal= {Proceedings of the 4th IEA Symposium on the Aerodynamics of Wind Turbines},
publisher={ETSU-N-118, Harwell Laboratory, UK}
}

@article{LeishmanBeddoes:1989,
author = {J. G. Leishman and T.S. Beddoes},
title = {A semi-empirical model for dynamic stall},
year = {1989},
journal= {Journal of the American Helicopter Society},
volume={34},
number={3},
pages={p3-17}
}

@techreport{Murray:2011,
title={The development of CACTUS : a wind and marine turbine performance simulation code.},
author={J. Murray and M. Barone},
year={2011},
institution={49th AIAA Aerospace Sciences Meeting, Orlando, Florida}
}
Loading

0 comments on commit fef5b7e

Please sign in to comment.