diff --git a/docs/source/user/aerodyn/examples/ad_primary_example.dat b/docs/source/user/aerodyn/examples/ad_primary_example.dat index 7f0c4abd99..3b1127ca87 100644 --- a/docs/source/user/aerodyn/examples/ad_primary_example.dat +++ b/docs/source/user/aerodyn/examples/ad_primary_example.dat @@ -34,8 +34,10 @@ True TIDrag - Include the drag term in the tangential-induc 100 MaxIter - Maximum number of iteration steps (-) [unused when WakeMod=0] --- 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] +1 SectAvgWeighting - Weighting function for sector average {1=Uniform, default=1} within a sector centered on the blade (switch) [used only when SectAvg=True] +5 SectAvgNPoints - Number of points per sectors (-) {default=5} [used only when SectAvg=True] +-60 SectAvgPsiBwd - Backward azimuth relative to blade where the sector starts (<=0) {default=-60} (deg) [used only when SectAvg=True] + 60 SectAvgPsiFwd - Forward azimuth relative to blade where the sector ends (>=0) {default=60} (deg) [used only when SectAvg=True] --- Dynamic wake/inflow 2 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] diff --git a/docs/source/user/aerodyn/input.rst b/docs/source/user/aerodyn/input.rst index 2ef3fa66df..93fc266d3e 100644 --- a/docs/source/user/aerodyn/input.rst +++ b/docs/source/user/aerodyn/input.rst @@ -197,6 +197,8 @@ The following inputs in this section are only used when ``WakeMod = 1``. - ``Skew_Mod=0`` means no skew model at all (not recommended) - ``Skew_Mod=-1`` throws away non-normal component (for linearization). This setting makes sure the wind speed is always normal to the rotor to limit periodic variation of the wind speed if the rotor is not perpendicular to the wind (e.g. tower top tilting or tilt). This is mostly needed for linearization. +Currently (``Skew_Mod=0``) or (``Skew_Mod=1`` and ``SkewModCorr=False`` and ``SkewRedistr_Mod = 0``) are the same, both set of inputs turn off the skew correction entirely. + .. note:: Link to old inputs: Previous implementations always had the skew model on. `Skew_Mod=-1` replaces the old `SkewMod=0` (an option that few users were using). @@ -253,16 +255,22 @@ Shear corrections ~~~~~~~~~~~~~~~~~ The BEM algorithm may need to be corrected to account for shear. -Currently, a sector average correction is implemented, as a beta feature, to limit fluctuations associtated with variations of wind speed as the blade rotates. +Currently, a sector average correction is implemented, as a beta feature, to limit fluctuations associated with variations of wind speed as the blade rotates. -The feature will be documented at a later time. +The feature will be documented at a later time and is still at an experimental stage. -**SectAvg** Use Sector Averaging (flag) +**SectAvg** Use Sector Averaging (flag). +The method uses sectors expanding forward and backward relative to the current azimuth of the blade (see ``SectAvgPsiBwd`` and ``SectAvgPsiFwd``). +The velocity is averaged within this sector by attributing different weighting at different points in the sector (see ``SectAvgWeighting``). **SectAvgWeighting** Weighting function for sector average. -1=Uniform within a sector centered on the blade (switch) [used only when ``SectAvg=True``] +1=Uniform (switch) [used only when ``SectAvg=True``]. Default is 1. + +**SectAvgNPoints** Number of points per sectors (-) [used only when ``SectAvg=True``]. Default is 5. + +**SectAvgPsiBwd** Backward azimuth (in degrees) relative to the blade azimuth where the sector starts. Must be negative. [used only when SectAvg=True]. Default is -60 deg. -**SectAvgNPoints** Number of points per sectors (-) [used only when ``SectAvg=True``] +**SectAvgPsiFwd** Forward azimuth (in degrees) relative to the blade azimuth where the sector ends. Must be positive. [used only when SectAvg=True]. Default is 60 deg. diff --git a/modules/aerodyn/src/AeroDyn_IO.f90 b/modules/aerodyn/src/AeroDyn_IO.f90 index eb3b4ec094..3cceff5290 100644 --- a/modules/aerodyn/src/AeroDyn_IO.f90 +++ b/modules/aerodyn/src/AeroDyn_IO.f90 @@ -852,8 +852,10 @@ SUBROUTINE ParsePrimaryFileInfo( PriPath, InitInp, InputFile, RootName, NumBlade call WrScr(' Setting SectAvg to False as the input is Missing (legacy behavior).') InputFileData%SectAvg = .false. else - call ParseVar( FileInfo_In, CurLine, "SectAvgWeighting", InputFileData%SA_Weighting, ErrStat2, ErrMsg2, UnEc ); if (Failed()) return - call ParseVar( FileInfo_In, CurLine, "SectAvgNPoints" , InputFileData%SA_nPerSec, ErrStat2, ErrMsg2, UnEc ); if (Failed()) return + call ParseVarWDefault( FileInfo_In, CurLine, "SectAvgWeighting", InputFileData%SA_Weighting, 1 , ErrStat2, ErrMsg2, UnEc ); if (Failed()) return + call ParseVarWDefault( FileInfo_In, CurLine, "SectAvgNPoints" , InputFileData%SA_nPerSec, 5 , ErrStat2, ErrMsg2, UnEc ); if (Failed()) return + call ParseVarWDefault( FileInfo_In, CurLine, "SectAvgPsiBwd" , InputFileData%SA_PsiBwd, -60._ReKi, ErrStat2, ErrMsg2, UnEc ); if (Failed()) return + call ParseVarWDefault( FileInfo_In, CurLine, "SectAvgPsiFwd" , InputFileData%SA_PsiFwd, 60._ReKi, ErrStat2, ErrMsg2, UnEc ); if (Failed()) return call ParseCom (FileInfo_in, CurLine, sDummy, errStat2, errMsg2, UnEc, isLegalComment); if (Failed()) return endif diff --git a/modules/aerodyn/src/AeroDyn_Registry.txt b/modules/aerodyn/src/AeroDyn_Registry.txt index 702a34d2e0..68228a9a2f 100644 --- a/modules/aerodyn/src/AeroDyn_Registry.txt +++ b/modules/aerodyn/src/AeroDyn_Registry.txt @@ -199,7 +199,7 @@ typedef ^ AD_InputFile Logical SectAvg - - False "Use Sector average for BEM inf typedef ^ ^ IntKi SA_Weighting - - 1 "Sector Average - Weighting function for sector average {1=Uniform, 2=Impulse, } within a 360/nB sector centered on the blade (switch) [used only when SectAvg=True]" - typedef ^ ^ ReKi SA_PsiBwd - -60 - "Sector Average - Backard Azimuth (<0)" deg typedef ^ ^ ReKi SA_PsiFwd - 60 - "Sector Average - Forward Azimuth (>0)" deg -typedef ^ ^ IntKi SA_nPerSec - 11 - "Sector average - Number of points per sectors (-) [used only when SectAvg=True]" - +typedef ^ ^ IntKi SA_nPerSec - 5 - "Sector average - Number of points per sectors (-) [used only when SectAvg=True]" - typedef ^ ^ LOGICAL AoA34 - - - "Sample the angle of attack (AoA) at the 3/4 chord or the AC point {default=True} [always used]" - typedef ^ ^ IntKi UAMod - - - "Unsteady Aero Model Switch (switch) {0=Quasi-steady (no UA), 2=Gonzalez's variant (changes in Cn,Cc,Cm), 3=Minnema/Pierce variant (changes in Cc and Cm)}" - typedef ^ AD_InputFile LOGICAL 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 [used only when AFAeroMod=2]" flag diff --git a/modules/aerodyn/src/AeroDyn_Types.f90 b/modules/aerodyn/src/AeroDyn_Types.f90 index e273ca1e14..d40f34040e 100644 --- a/modules/aerodyn/src/AeroDyn_Types.f90 +++ b/modules/aerodyn/src/AeroDyn_Types.f90 @@ -225,7 +225,7 @@ MODULE AeroDyn_Types INTEGER(IntKi) :: SA_Weighting = 0_IntKi !< Sector Average - Weighting function for sector average {1=Uniform, 2=Impulse, } within a 360/nB sector centered on the blade (switch) [used only when SectAvg=True] [-] REAL(ReKi) :: SA_PsiBwd = -60 !< Sector Average - Backard Azimuth (<0) [deg] REAL(ReKi) :: SA_PsiFwd = 60 !< Sector Average - Forward Azimuth (>0) [deg] - INTEGER(IntKi) :: SA_nPerSec = 11 !< Sector average - Number of points per sectors (-) [used only when SectAvg=True] [-] + INTEGER(IntKi) :: SA_nPerSec = 5 !< Sector average - Number of points per sectors (-) [used only when SectAvg=True] [-] LOGICAL :: AoA34 = .false. !< Sample the angle of attack (AoA) at the 3/4 chord or the AC point {default=True} [always used] [-] INTEGER(IntKi) :: UAMod = 0_IntKi !< Unsteady Aero Model Switch (switch) {0=Quasi-steady (no UA), 2=Gonzalez's variant (changes in Cn,Cc,Cm), 3=Minnema/Pierce variant (changes in Cc and Cm)} [-] LOGICAL :: FLookup = .false. !< 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 [used only when AFAeroMod=2] [flag]