Skip to content

Commit

Permalink
AD: update documentation and input file
Browse files Browse the repository at this point in the history
  • Loading branch information
Emmanuel Branlard committed Mar 14, 2024
1 parent 3778fd9 commit cca6607
Show file tree
Hide file tree
Showing 7 changed files with 45 additions and 24 deletions.
42 changes: 26 additions & 16 deletions docs/source/user/aerodyn/examples/ad_primary_example.dat
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
------- AERODYN v15 for OpenFAST INPUT FILE -----------------------------------------------
------- AERODYN for OpenFAST INPUT FILE -------------------------------------------------------------
Description line that will be printed in the output file and written to the screen.
====== General Options ============================================================================
True Echo - Echo the input to "<rootname>.AD.ech"? (flag)
Expand All @@ -19,26 +19,36 @@ False CompAA - Flag to compute AeroAcoustics calculation [us
"default" SpdSound - Speed of sound in working fluid (m/s)
"default" Patm - Atmospheric pressure (Pa) [used only when CavitCheck=True]
"default" Pvap - Vapour pressure of working fluid (Pa) [used only when CavitCheck=True]
====== Blade-Element/Momentum Theory Options ====================================================== [unused when WakeMod=0 or 3]
1 SkewMod - Type of skewed-wake correction model (switch) {1=uncoupled, 2=Pitt/Peters, 3=coupled} [unused when WakeMod=0 or 3]
"default" SkewModFactor - Constant used in Pitt/Peters skewed wake model {or "default" is 15/32*pi} (-) [used only when SkewMod=2; unused when WakeMod=0 or 3]
f TipLoss - Use the Prandtl tip-loss model? (flag) [unused when WakeMod=0 or 3]
f HubLoss - Use the Prandtl hub-loss model? (flag) [unused when WakeMod=0 or 3]
====== Blade-Element/Momentum Theory Options ====================================================== [unused when WakeMod=0 or 3, except for BEM_Mod]
1 BEM_Mod - BEM model {1=legacy NoSweepPitchTwist, 2=polar} (switch) [used for all Wake_Mod to determine output coordinate system]
--- Skew correction
1 Skew_Mod - Skew model {0=No skew model, -1=Remove non-normal component for linearization, 1=skew model active}
True SkewMomCorr - Turn the skew momentum correction on or off [used only when Skew_Mod=1]
1 SkewRedistr_Mod - Type of skewed-wake correction model (switch) {0=no redistribution, 1=Glauert/Pitt/Peters} [used only when Skew_Mod=1]
"default" SkewRedistrFactor - Constant used in Pitt/Peters skewed wake model {or "default" is 15/32*pi} (-) [used only when Skew_Mod=1 and SkewRedistr_Mod=1]
--- BEM algorithm
True TipLoss - Use the Prandtl tip-loss model? (flag) [unused when WakeMod=0 or 3]
True HubLoss - Use the Prandtl hub-loss model? (flag) [unused when WakeMod=0 or 3]
True TanInd - Include tangential induction in BEMT calculations? (flag) [unused when WakeMod=0 or 3]
True AIDrag - Include the drag term in the axial-induction calculation? (flag) [unused when WakeMod=0 or 3]
True TIDrag - Include the drag term in the tangential-induction calculation? (flag) [unused when WakeMod=0,3 or TanInd=FALSE]
1E-05 IndToler - Convergence tolerance for BEMT nonlinear solve residual equation {or "default"} (-) [unused when WakeMod=0 or 3]
"Default" IndToler - Convergence tolerance for BEMT nonlinear solve residual equation {or "default"} (-) [unused when WakeMod=0 or 3]
100 MaxIter - Maximum number of iteration steps (-) [unused when WakeMod=0]
====== Dynamic Blade-Element/Momentum Theory Options ============================================== [used only when WakeMod=2]
2 DBEMT_Mod - Type of dynamic BEMT (DBEMT) model {1=constant tau1, 2=time-dependent tau1, 3=constant tau1 with continuous formulation} (-) [used only when WakeMod=2]
4 tau1_const - Time constant for DBEMT (s) [used only when WakeMod=2 and DBEMT_Mod=1 or 3]
--- Shear correction
False SectAvg - Use sector averaging (flag)
1 SectAvgWeighting - Weighting function for sector average {1=Uniform} within a sector centered on the blade (switch) [used only when SectAvg=True]
5 SectAvgNPoints - Number of points per sectors (-) [used only when SectAvg=True]
--- Dynamic wake/inflow
0 DBEMT_Mod - Type of dynamic BEMT (DBEMT) model {0=No Dynamic Wake, -1=Frozen Wake for linearization, 1:constant tau1, 2=time-dependent tau1, 3=constant tau1 with continuous formulation} (-)
20 tau1_const - Time constant for DBEMT (s) [used only when DBEMT_Mod=1 or 3]
====== OLAF -- cOnvecting LAgrangian Filaments (Free Vortex Wake) Theory Options ================== [used only when WakeMod=3]
"unused" OLAFInputFileName - Input file for OLAF [used only when WakeMod=3]
====== Beddoes-Leishman Unsteady Airfoil Aerodynamics Options ===================================== [used only when AFAeroMod=2]
1 UAMod - Unsteady Aero Model Switch (switch) {2=B-L Gonzalez, 3=B-L Minnema/Pierce, 4=B-L HGM 4-states, 5=B-L HGM+vortex 5 states, 6=Oye, 7=Boeing-Vertol} [used only when AFAeroMod=2]
FALSE FLookup - Flag to indicate whether a lookup for f' will be calculated (TRUE) or whether best-fit exponential equations will be used (FALSE); if FALSE S1-S4 must be provided in airfoil input files (flag) [used only when AFAeroMod=2]
0.25 UAStartRad - Starting radius for dynamic stall (fraction of rotor radius [0.0,1.0]) [used only when AFAeroMod=2; if line is missing UAStartRad=0]
0.95 UAEndRad - Ending radius for dynamic stall (fraction of rotor radius [0.0,1.0]) [used only when AFAeroMod=2; if line is missing UAEndRad=1]
====== Unsteady Airfoil Aerodynamics Options ====================================================
True AoA34 - Sample the angle of attack (AoA) at the 3/4 chord or the AC point {default=True} [always used]
0 UA_Mod - Unsteady Aero Model Switch (switch) {0=Quasi-steady (no UA), 2=B-L Gonzalez, 3=B-L Minnema/Pierce, 4=B-L HGM 4-states, 5=B-L HGM+vortex 5 states, 6=Oye, 7=Boeing-Vertol}
True FLookup - Flag to indicate whether a lookup for f' will be calculated (TRUE) or whether best-fit exponential equations will be used (FALSE); if FALSE S1-S4 must be provided in airfoil input files (flag) [used only when AFAeroMod=2]
0 UAStartRad - Starting radius for dynamic stall (fraction of rotor radius [0.0,1.0]) [used only when AFAeroMod=2; if line is missing UAStartRad=0]
1 UAEndRad - Ending radius for dynamic stall (fraction of rotor radius [0.0,1.0]) [used only when AFAeroMod=2; if line is missing UAEndRad=1]
====== Airfoil Information =========================================================================
1 AFTabMod - Interpolation method for multiple airfoil tables {1=1D interpolation on AoA (first table only); 2=2D interpolation on AoA and Re; 3=2D interpolation on AoA and UserProp} (-)
1 InCol_Alfa - The column in the airfoil tables that contains the angle of attack (-)
Expand Down Expand Up @@ -113,4 +123,4 @@ END of OutList section (the word "END" must appear in the first 3 columns of the
"Vindy"
"Alpha"
END (the word "END" must appear in the first 3 columns of this last OutList line in the optional nodal output section)
====================================================================================================
====================================================================================================
4 changes: 2 additions & 2 deletions docs/source/user/aerodyn/input.rst
Original file line number Diff line number Diff line change
Expand Up @@ -214,8 +214,8 @@ The feature will be documented at a later time.
- 0: no redistribution
- 1: Glauert (Pitt-Peters) redistribution model

**SkewModFactor**
Defines the constant used in the Gluaert redistribution model (``SkewRedistr_Mod=1``).
**SkewRedistrFactor**
Defines the constant used in the Glauert redistribution model (``SkewRedistr_Mod=1``).
Use ``"default"`` to use the default value of :math:`\frac{15 \pi}{32}`.


Expand Down
5 changes: 4 additions & 1 deletion docs/source/user/api_change.rst
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ Additional ressources:

- The `discussion <https://github.com/OpenFAST/openfast/discussions/1895>`__ that led to these new inputs.

- A directory with an example of AeroDyn input file: `here <https://github.com/OpenFAST/r-test/blob/dev/modules/aerodyn/ad_BAR_OLAF/OpenFAST_BAR_00_AeroDyn15.dat>`__
- An example of AeroDyn input file at it's latest format: :download:`Example <aerodyn/examples/ad_primary_example.dat>`:

- A directory with a working example: `here <https://github.com/OpenFAST/r-test/blob/dev/modules/aerodyn/ad_BAR_OLAF/OpenFAST_BAR_00_AeroDyn15.dat>`__


=========================== =========================================================
Expand All @@ -61,6 +63,7 @@ Old inputs Corresponding new inputs
`FrozenWake=False` `DBEMT_Mod=0` (quasi-steady) or `DBEMT_Mod>0` (dynamic)
`SkewMod=2` (Glauert) `Skew_Mod=1` and `SkewRedistr_Mod=1`
`SkewMod=0` (Orthogonal) `Skew_Mod=-1`
`SkewModFactor` `SkewRedistrFactor`
`UAMod={2-7}` `UA_Mod={2-7}` and `AoA34=True`
=========================== =========================================================

Expand Down
4 changes: 2 additions & 2 deletions modules/aerodyn/src/AeroDyn.f90
Original file line number Diff line number Diff line change
Expand Up @@ -349,12 +349,12 @@ subroutine AD_Init( InitInp, u, p, x, xd, z, OtherState, y, m, Interval, InitOut
if (AeroProjMod(iR) == -1) then
if (InputFileData%Wake_Mod /= WakeMod_BEMT) then
! For BEMT, we don't throw a warning
call WrScr('[INFO] Using the input file input `BEMT_Mod` to match BEM coordinate system outputs')
call WrScr('[INFO] Using the input file input `BEM_Mod` to match BEM coordinate system outputs')
endif
select case (InputFileData%BEM_Mod)
case (BEMMod_2D); AeroProjMod(ir) = APM_BEM_NoSweepPitchTwist
case (BEMMod_3D); AeroProjMod(ir) = APM_BEM_Polar
case default; call Fatal('Input `BEMT_Mod` not supported'); return
case default; call Fatal('Input `BEM_Mod` not supported: '//trim(num2lstr(InputFileData%BEM_Mod))); return
end select

endif
Expand Down
10 changes: 9 additions & 1 deletion modules/aerodyn/src/AeroDyn_IO.f90
Original file line number Diff line number Diff line change
Expand Up @@ -778,6 +778,8 @@ SUBROUTINE ParsePrimaryFileInfo( PriPath, InitInp, InputFile, RootName, NumBlade
if (newInputMissing('BEM_Mod', CurLine, errStat2, errMsg2)) then
call WrScr(' Setting BEM_Mod to 1 (NoPitchSweepPitch) as the input is Missing (legacy behavior).')
InputFileData%BEM_Mod = BEMMod_2D
else
call ParseCom (FileInfo_in, CurLine, sDummy, errStat2, errMsg2, UnEc, isLegalComment); if (Failed()) return
endif

! SkewMod Legacy
Expand Down Expand Up @@ -811,7 +813,13 @@ SUBROUTINE ParsePrimaryFileInfo( PriPath, InitInp, InputFile, RootName, NumBlade

! SkewModFactor - Constant used in Pitt/Peters skewed wake model {or "default" is 15/32*pi} (-) [used only when SkewMod=2; unused when WakeMod=0 or 3]
call ParseVarWDefault( FileInfo_In, CurLine, "SkewModFactor", InputFileData%SkewModFactor, (15.0_ReKi * pi / 32.0_ReKi), ErrStat2, ErrMsg2, UnEc )
if (Failed()) return
if( legacyInputPresent('SkewModFactor', CurLine, ErrStat2, ErrMsg2, 'Rename this parameter to SkewRedistrFactor')) then

else
call ParseVarWDefault( FileInfo_In, CurLine, "SkewRedistrFactor", InputFileData%SkewModFactor, (15.0_ReKi * pi / 32.0_ReKi), ErrStat2, ErrMsg2, UnEc ); if (Failed()) return
call ParseCom (FileInfo_in, CurLine, sDummy, errStat2, errMsg2, UnEc, isLegalComment); if (Failed()) return
endif

! TipLoss - Use the Prandtl tip-loss model? (flag) [unused when WakeMod=0 or 3]
call ParseVar( FileInfo_In, CurLine, "TipLoss", InputFileData%TipLoss, ErrStat2, ErrMsg2, UnEc )
if (Failed()) return
Expand Down
2 changes: 1 addition & 1 deletion modules/aerodyn/src/BEMT_Registry.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ param BEMT/BEMT - INTEGER
param BEMT/BEMT - INTEGER SkewRedistrMod_PittPeters - 1 - "Pitt/Peters/Glauert redistribution" -
#param BEMT/BEMT - INTEGER SkewRedistrMod_VCyl - 2 - "Vortex cylinder redistribution" -

param BEMT/BEMT - INTEGER BEMMod_2D - 0 - "2D BEM assuming Cx, Cy, phi, L, D are in the same plane" -
param BEMT/BEMT - INTEGER BEMMod_2D - 1 - "2D BEM assuming Cx, Cy, phi, L, D are in the same plane" -
param BEMT/BEMT - INTEGER BEMMod_3D - 2 - "3D BEM assuming a momentum balance system, and an airfoil system" -

#
Expand Down
2 changes: 1 addition & 1 deletion modules/aerodyn/src/BEMT_Types.f90
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ MODULE BEMT_Types
INTEGER(IntKi), PUBLIC, PARAMETER :: Skew_Mod_PittPeters_Cont = 4 ! Pitt/Peters continuous formulation [-]
INTEGER(IntKi), PUBLIC, PARAMETER :: SkewRedistrMod_None = 0 ! No redistribution [-]
INTEGER(IntKi), PUBLIC, PARAMETER :: SkewRedistrMod_PittPeters = 1 ! Pitt/Peters/Glauert redistribution [-]
INTEGER(IntKi), PUBLIC, PARAMETER :: BEMMod_2D = 0 ! 2D BEM assuming Cx, Cy, phi, L, D are in the same plane [-]
INTEGER(IntKi), PUBLIC, PARAMETER :: BEMMod_2D = 1 ! 2D BEM assuming Cx, Cy, phi, L, D are in the same plane [-]
INTEGER(IntKi), PUBLIC, PARAMETER :: BEMMod_3D = 2 ! 3D BEM assuming a momentum balance system, and an airfoil system [-]
! ========= BEMT_InitInputType =======
TYPE, PUBLIC :: BEMT_InitInputType
Expand Down

0 comments on commit cca6607

Please sign in to comment.