Skip to content

Commit

Permalink
Merge pull request #1509 from ebranlard/f/ad-cone
Browse files Browse the repository at this point in the history
AeroDyn: Improved coning and prebend modeling in future BEM
  • Loading branch information
andrew-platt authored Apr 4, 2023
2 parents 68373b9 + 4d214b0 commit a209327
Show file tree
Hide file tree
Showing 12 changed files with 567 additions and 341 deletions.
446 changes: 258 additions & 188 deletions modules/aerodyn/src/AeroDyn.f90

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion modules/aerodyn/src/AeroDyn_Driver_Registry.txt
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,8 @@ typedef ^ ^ TwrData twr
typedef ^ ^ IntKi numBlades - - - "" -
typedef ^ ^ logical basicHAWTFormat - - - "If true simply input HubRad/Pitch/Overhang/Cone, otherwise all turbine inputs" -
typedef ^ ^ logical hasTower - - - "" -
typedef ^ ^ IntKi projMod - - - "If true simply input HubRad/Pitch/Overhang/Cone, otherwise all turbine inputs" -
typedef ^ ^ IntKi projMod - - - "If true simply input HubRad/Pitch/Overhang/Cone, otherwise all turbine inputs" -
typedef ^ ^ IntKi BEM_Mod - - - "Switch for different BEM implementations" -
typedef ^ ^ logical HAWTprojection - - - "" -
typedef ^ ^ IntKi motionType - - - "" -
typedef ^ ^ ReKi motion :: - - "" "-"
Expand Down
20 changes: 14 additions & 6 deletions modules/aerodyn/src/AeroDyn_Driver_Subs.f90
Original file line number Diff line number Diff line change
Expand Up @@ -195,7 +195,7 @@ subroutine Dvr_InitCase(iCase, dvr, ADI, FED, errStat, errMsg )
else
! Should never happen
endif
dvr%numSteps = ceiling(dvr%tMax/dvr%dt)
dvr%numSteps = ceiling(dvr%tMax/dvr%dt) ! TODO I believe we need a plus one here

! Validate the inputs
call ValidateInputs(dvr, errStat2, errMsg2) ; if(Failed()) return
Expand Down Expand Up @@ -429,11 +429,16 @@ subroutine Init_ADI_ForDriver(iCase, ADI, dvr, FED, dt, errStat, errMsg)
else
! UA does not like changes of dt between cases
if ( .not. EqualRealNos(ADI%p%AD%DT, dt) ) then
call WrScr('Info: dt is changing between cases, AeroDyn will be re-initialized')
call ADI_End( ADI%u(1:1), ADI%p, ADI%x, ADI%xd, ADI%z, ADI%OtherState, ADI%y, ADI%m, errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, 'Init_ADI_ForDriver'); if(Failed()) return
!call AD_Dvr_DestroyAeroDyn_Data (AD , errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, RoutineName)
call WrScr('[INFO] dt is changing between cases, AeroDyn will be re-initialized')
needInit=.true.
endif
if (ADI%p%AD%WakeMod == WakeMod_FVW) then
call WrScr('[INFO] OLAF is used, AeroDyn will be re-initialized')
needInit=.true.
endif
if (needInit) then
call ADI_End( ADI%u(1:1), ADI%p, ADI%x, ADI%xd, ADI%z, ADI%OtherState, ADI%y, ADI%m, errStat2, errMsg2); call SetErrStat(errStat2, errMsg2, errStat, errMsg, 'Init_ADI_ForDriver'); if(Failed()) return
endif
endif

if (needInit) then
Expand Down Expand Up @@ -484,7 +489,8 @@ subroutine Init_ADI_ForDriver(iCase, ADI, dvr, FED, dt, errStat, errMsg)
else
InitInp%AD%rotors(iWT)%AeroProjMod = wt%projMod
endif
!call WrScr('>>> Using projection method '//trim(num2lstr(InitInp%AD%rotors(iWT)%AeroProjMod)))
InitInp%AD%rotors(iWT)%AeroBEM_Mod = wt%BEM_Mod
!call WrScr(' Driver: projMod: '//trim(num2lstr(InitInp%AD%rotors(iWT)%AeroProjMod))//', BEM_Mod:'//trim(num2lstr(InitInp%AD%rotors(iWT)%AeroBEM_Mod)))
InitInp%AD%rotors(iWT)%HubPosition = y_ED%HubPtMotion%Position(:,1)
InitInp%AD%rotors(iWT)%HubOrientation = y_ED%HubPtMotion%RefOrientation(:,:,1)
InitInp%AD%rotors(iWT)%NacellePosition = y_ED%NacelleMotion%Position(:,1)
Expand All @@ -503,6 +509,7 @@ subroutine Init_ADI_ForDriver(iCase, ADI, dvr, FED, dt, errStat, errMsg)
endif
else
! --- Reinit
! TODO change rootname, but that's a parameter..
call ADI_ReInit(ADI%p, ADI%x, ADI%xd, ADI%z, ADI%OtherState, ADI%m, dt, errStat2, errMsg2); if(Failed()) return
endif

Expand Down Expand Up @@ -973,8 +980,9 @@ subroutine Dvr_ReadInputFile(fileName, dvr, errStat, errMsg )
call ParseVar(FileInfo_In, CurLine, 'ProjMod'//sWT , wt%projMod , errStat2, errMsg2, unEc);
if (errStat2==ErrID_Fatal) then
wt%projMod = -1
wt%BEM_Mod = -1
else
call WrScr('>>> ProjMod is present in AeroDyn driver input file. ProjMod: '//trim(num2lstr(wt%projMod)))
call ParseVar(FileInfo_In, CurLine, 'BEM_Mod'//sWT , wt%BEM_Mod , errStat2, errMsg2, unEc); if(Failed()) return
endif
call ParseVar(FileInfo_In, CurLine, 'BasicHAWTFormat'//sWT , wt%basicHAWTFormat , errStat2, errMsg2, unEc); if(Failed()) return

Expand Down
7 changes: 7 additions & 0 deletions modules/aerodyn/src/AeroDyn_Driver_Types.f90
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ MODULE AeroDyn_Driver_Types
LOGICAL :: basicHAWTFormat !< If true simply input HubRad/Pitch/Overhang/Cone, otherwise all turbine inputs [-]
LOGICAL :: hasTower !< [-]
INTEGER(IntKi) :: projMod !< If true simply input HubRad/Pitch/Overhang/Cone, otherwise all turbine inputs [-]
INTEGER(IntKi) :: BEM_Mod !< Switch for different BEM implementations [-]
LOGICAL :: HAWTprojection !< [-]
INTEGER(IntKi) :: motionType !< [-]
REAL(ReKi) , DIMENSION(:,:), ALLOCATABLE :: motion !< [-]
Expand Down Expand Up @@ -2395,6 +2396,7 @@ SUBROUTINE AD_Dvr_CopyWTData( SrcWTDataData, DstWTDataData, CtrlCode, ErrStat, E
DstWTDataData%basicHAWTFormat = SrcWTDataData%basicHAWTFormat
DstWTDataData%hasTower = SrcWTDataData%hasTower
DstWTDataData%projMod = SrcWTDataData%projMod
DstWTDataData%BEM_Mod = SrcWTDataData%BEM_Mod
DstWTDataData%HAWTprojection = SrcWTDataData%HAWTprojection
DstWTDataData%motionType = SrcWTDataData%motionType
IF (ALLOCATED(SrcWTDataData%motion)) THEN
Expand Down Expand Up @@ -2690,6 +2692,7 @@ SUBROUTINE AD_Dvr_PackWTData( ReKiBuf, DbKiBuf, IntKiBuf, Indata, ErrStat, ErrMs
Int_BufSz = Int_BufSz + 1 ! basicHAWTFormat
Int_BufSz = Int_BufSz + 1 ! hasTower
Int_BufSz = Int_BufSz + 1 ! projMod
Int_BufSz = Int_BufSz + 1 ! BEM_Mod
Int_BufSz = Int_BufSz + 1 ! HAWTprojection
Int_BufSz = Int_BufSz + 1 ! motionType
Int_BufSz = Int_BufSz + 1 ! motion allocated yes/no
Expand Down Expand Up @@ -3005,6 +3008,8 @@ SUBROUTINE AD_Dvr_PackWTData( ReKiBuf, DbKiBuf, IntKiBuf, Indata, ErrStat, ErrMs
Int_Xferred = Int_Xferred + 1
IntKiBuf(Int_Xferred) = InData%projMod
Int_Xferred = Int_Xferred + 1
IntKiBuf(Int_Xferred) = InData%BEM_Mod
Int_Xferred = Int_Xferred + 1
IntKiBuf(Int_Xferred) = TRANSFER(InData%HAWTprojection, IntKiBuf(1))
Int_Xferred = Int_Xferred + 1
IntKiBuf(Int_Xferred) = InData%motionType
Expand Down Expand Up @@ -3473,6 +3478,8 @@ SUBROUTINE AD_Dvr_UnPackWTData( ReKiBuf, DbKiBuf, IntKiBuf, Outdata, ErrStat, Er
Int_Xferred = Int_Xferred + 1
OutData%projMod = IntKiBuf(Int_Xferred)
Int_Xferred = Int_Xferred + 1
OutData%BEM_Mod = IntKiBuf(Int_Xferred)
Int_Xferred = Int_Xferred + 1
OutData%HAWTprojection = TRANSFER(IntKiBuf(Int_Xferred), OutData%HAWTprojection)
Int_Xferred = Int_Xferred + 1
OutData%motionType = IntKiBuf(Int_Xferred)
Expand Down
5 changes: 0 additions & 5 deletions modules/aerodyn/src/AeroDyn_IO.f90
Original file line number Diff line number Diff line change
Expand Up @@ -2098,11 +2098,6 @@ subroutine calcCantAngle(f, xi,stencilSize,n,cantAngle)
real(ReKi) :: cx(stencilSize), cf(stencilSize), xiIn(stencilSize)
real(ReKi) :: fIn(stencilSize), cPrime(n), fPrime(n), xiAbs(n)
real(ReKi), intent(inout) :: cantAngle(n)

!dimension :: f(n),xi(n), sortInd(n), cx(stencilSize),cf(stencilSize), xiIn(stencilSize)
!dimension :: cantAngle(n), fIn(stencilSize), cPrime(n), fPrime(n), indexIn(stencilSize), xiAbs(n)



do i = 1,size(xi)

Expand Down
12 changes: 10 additions & 2 deletions modules/aerodyn/src/AeroDyn_Inflow.f90
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@ module AeroDyn_Inflow
use NWTC_Library
use AeroDyn_Inflow_Types
use AeroDyn_Types
use AeroDyn, only: AD_Init, AD_ReInit, AD_CalcOutput, AD_UpdateStates
use AeroDyn, only: AD_Init, AD_ReInit, AD_CalcOutput, AD_UpdateStates, AD_End
use AeroDyn, only: AD_NumWindPoints, AD_GetExternalWind, AD_SetExternalWindPositions
use AeroDyn_IO, only: AD_SetVTKSurface
use InflowWind, only: InflowWind_Init, InflowWind_CalcOutput
use InflowWind, only: InflowWind_Init, InflowWind_CalcOutput, InflowWind_End

implicit none

Expand Down Expand Up @@ -168,6 +168,10 @@ subroutine ADI_End( u, p, x, xd, z, OtherState, y, m, errStat, errMsg )
errStat = ErrID_None
errMsg = ""

! End modules
call AD_End(u(1)%AD, p%AD, x%AD, xd%AD, z%AD, OtherState%AD, y%AD, m%AD, ErrStat, ErrMsg)
call InflowWind_End(m%IW%u, m%IW%p, m%IW%x, m%IW%xd, m%IW%z, m%IW%OtherSt, m%IW%y, m%IW%m, ErrStat, ErrMsg)

! Destroy the input data:
!if (allocated(u)) then
do i=1,size(u)
Expand Down Expand Up @@ -472,12 +476,16 @@ subroutine ADI_CalcOutput_IW(t, u_IfW, IW, errStat, errMsg)
call InflowWind_CalcOutput(t, u_IfW, IW%p, IW%x, IW%xd, IW%z, IW%OtherSt, IW%y, IW%m, errStat2, errMsg2)
call SetErrStat(errStat2, errMsg2, errStat, errMsg, 'ADI_CalcOutput_IW')
else
!$OMP PARALLEL DEFAULT(SHARED)
!$OMP DO PRIVATE(j,z) schedule(runtime)
do j=1,size(u_IfW%PositionXYZ,2)
z = u_IfW%PositionXYZ(3,j)
IW%y%VelocityUVW(1,j) = IW%HWindSpeed*(z/IW%RefHt)**IW%PLExp
IW%y%VelocityUVW(2,j) = 0.0_ReKi !V
IW%y%VelocityUVW(3,j) = 0.0_ReKi !W
end do
!$OMP END DO
!$OMP END PARALLEL
endif
end subroutine ADI_CalcOutput_IW
!----------------------------------------------------------------------------------------------------------------------------------
Expand Down
5 changes: 4 additions & 1 deletion modules/aerodyn/src/AeroDyn_Registry.txt
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ typedef ^ RotInitInputType R8Ki BladeRootOrientation {:}{:}{:} - - "DCM referenc
typedef ^ RotInitInputType R8Ki NacellePosition {3} - - "X-Y-Z reference position of nacelle" m
typedef ^ RotInitInputType R8Ki NacelleOrientation {3}{3} - - "DCM reference orientation of nacelle" -
typedef ^ RotInitInputType IntKi AeroProjMod - 1 - "Flag to switch between different projection models" -
typedef ^ RotInitInputType IntKi AeroBEM_Mod - -1 - "Flag to switch between different BEM Model" -

typedef ^ InitInputType RotInitInputType rotors {:} - - "Init Input Types for rotors" -
typedef ^ InitInputType CHARACTER(1024) InputFile - - - "Name of the input file" -
Expand Down Expand Up @@ -302,7 +303,8 @@ typedef ^ RotMiscVarType MeshType TwrBuoyLoadPoint - - - "point mesh for lumped
typedef ^ RotMiscVarType MeshType TwrBuoyLoad - - - "line mesh for per unit length buoyant tower loads" -
typedef ^ RotMiscVarType MeshMapType T_P_2_T_L - - - "mapping data structure to map buoyant tower point loads (m%TwrBuoyLoadPoint) to buoyant tower line loads (m%TwrBuoyLoad)"
typedef ^ RotMiscVarType Logical FirstWarn_TowerStrike - - - "flag to avoid printing tower strike multiple times" -
typedef ^ RotMiscVarType ReKi AvgDiskVel {3} - - "disk-averaged U,V,W" m/s
typedef ^ RotMiscVarType ReKi AvgDiskVel {3} - - "disk-averaged U,V,W (undisturbed)" m/s
typedef ^ RotMiscVarType ReKi AvgDiskVelDist {3} - - "disk-averaged U,V,W (disturbed)" m/s
# TailFin
typedef ^ RotMiscVarType ReKi TFinAlpha - - - "Angle of attack for tailfin"
typedef ^ RotMiscVarType ReKi TFinRe - - - "Reynolds number for tailfin"
Expand Down Expand Up @@ -370,6 +372,7 @@ typedef ^ RotParameterType ReKi Pvap - - - "Vapour pressure" P
typedef ^ RotParameterType ReKi WtrDpth - - - "Water depth" m
typedef ^ RotParameterType ReKi MSL2SWL - - - "Offset between still-water level and mean sea level" m
typedef ^ RotParameterType IntKi AeroProjMod - 1 - "Flag to switch between different projection models" -
typedef ^ RotParameterType IntKi AeroBEM_Mod - -1 - "Flag to switch between different BEM Model" -
# parameters for output
typedef ^ RotParameterType IntKi NumOuts - - - "Number of parameters in the output list (number of outputs requested)" -
typedef ^ RotParameterType CHARACTER(1024) RootName - - - "RootName for writing output files" -
Expand Down
29 changes: 28 additions & 1 deletion modules/aerodyn/src/AeroDyn_Types.f90
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ MODULE AeroDyn_Types
REAL(R8Ki) , DIMENSION(1:3) :: NacellePosition !< X-Y-Z reference position of nacelle [m]
REAL(R8Ki) , DIMENSION(1:3,1:3) :: NacelleOrientation !< DCM reference orientation of nacelle [-]
INTEGER(IntKi) :: AeroProjMod = 1 !< Flag to switch between different projection models [-]
INTEGER(IntKi) :: AeroBEM_Mod = -1 !< Flag to switch between different BEM Model [-]
END TYPE RotInitInputType
! =======================
! ========= AD_InitInputType =======
Expand Down Expand Up @@ -342,7 +343,8 @@ MODULE AeroDyn_Types
TYPE(MeshType) :: TwrBuoyLoad !< line mesh for per unit length buoyant tower loads [-]
TYPE(MeshMapType) :: T_P_2_T_L !< mapping data structure to map buoyant tower point loads (m%TwrBuoyLoadPoint) to buoyant tower line loads (m%TwrBuoyLoad) [-]
LOGICAL :: FirstWarn_TowerStrike !< flag to avoid printing tower strike multiple times [-]
REAL(ReKi) , DIMENSION(1:3) :: AvgDiskVel !< disk-averaged U,V,W [m/s]
REAL(ReKi) , DIMENSION(1:3) :: AvgDiskVel !< disk-averaged U,V,W (undisturbed) [m/s]
REAL(ReKi) , DIMENSION(1:3) :: AvgDiskVelDist !< disk-averaged U,V,W (disturbed) [m/s]
REAL(ReKi) :: TFinAlpha !< Angle of attack for tailfin [-]
REAL(ReKi) :: TFinRe !< Reynolds number for tailfin [-]
REAL(ReKi) :: TFinVrel !< Orthogonal relative velocity nrom at the reference point [-]
Expand Down Expand Up @@ -409,6 +411,7 @@ MODULE AeroDyn_Types
REAL(ReKi) :: WtrDpth !< Water depth [m]
REAL(ReKi) :: MSL2SWL !< Offset between still-water level and mean sea level [m]
INTEGER(IntKi) :: AeroProjMod = 1 !< Flag to switch between different projection models [-]
INTEGER(IntKi) :: AeroBEM_Mod = -1 !< Flag to switch between different BEM Model [-]
INTEGER(IntKi) :: NumOuts !< Number of parameters in the output list (number of outputs requested) [-]
CHARACTER(1024) :: RootName !< RootName for writing output files [-]
TYPE(OutParmType) , DIMENSION(:), ALLOCATABLE :: OutParam !< Names and units (and other characteristics) of all requested output parameters [-]
Expand Down Expand Up @@ -1429,6 +1432,7 @@ SUBROUTINE AD_CopyRotInitInputType( SrcRotInitInputTypeData, DstRotInitInputType
DstRotInitInputTypeData%NacellePosition = SrcRotInitInputTypeData%NacellePosition
DstRotInitInputTypeData%NacelleOrientation = SrcRotInitInputTypeData%NacelleOrientation
DstRotInitInputTypeData%AeroProjMod = SrcRotInitInputTypeData%AeroProjMod
DstRotInitInputTypeData%AeroBEM_Mod = SrcRotInitInputTypeData%AeroBEM_Mod
END SUBROUTINE AD_CopyRotInitInputType

SUBROUTINE AD_DestroyRotInitInputType( RotInitInputTypeData, ErrStat, ErrMsg, DEALLOCATEpointers )
Expand Down Expand Up @@ -1511,6 +1515,7 @@ SUBROUTINE AD_PackRotInitInputType( ReKiBuf, DbKiBuf, IntKiBuf, Indata, ErrStat,
Db_BufSz = Db_BufSz + SIZE(InData%NacellePosition) ! NacellePosition
Db_BufSz = Db_BufSz + SIZE(InData%NacelleOrientation) ! NacelleOrientation
Int_BufSz = Int_BufSz + 1 ! AeroProjMod
Int_BufSz = Int_BufSz + 1 ! AeroBEM_Mod
IF ( Re_BufSz .GT. 0 ) THEN
ALLOCATE( ReKiBuf( Re_BufSz ), STAT=ErrStat2 )
IF (ErrStat2 /= 0) THEN
Expand Down Expand Up @@ -1607,6 +1612,8 @@ SUBROUTINE AD_PackRotInitInputType( ReKiBuf, DbKiBuf, IntKiBuf, Indata, ErrStat,
END DO
IntKiBuf(Int_Xferred) = InData%AeroProjMod
Int_Xferred = Int_Xferred + 1
IntKiBuf(Int_Xferred) = InData%AeroBEM_Mod
Int_Xferred = Int_Xferred + 1
END SUBROUTINE AD_PackRotInitInputType

SUBROUTINE AD_UnPackRotInitInputType( ReKiBuf, DbKiBuf, IntKiBuf, Outdata, ErrStat, ErrMsg )
Expand Down Expand Up @@ -1725,6 +1732,8 @@ SUBROUTINE AD_UnPackRotInitInputType( ReKiBuf, DbKiBuf, IntKiBuf, Outdata, ErrSt
END DO
OutData%AeroProjMod = IntKiBuf(Int_Xferred)
Int_Xferred = Int_Xferred + 1
OutData%AeroBEM_Mod = IntKiBuf(Int_Xferred)
Int_Xferred = Int_Xferred + 1
END SUBROUTINE AD_UnPackRotInitInputType

SUBROUTINE AD_CopyInitInput( SrcInitInputData, DstInitInputData, CtrlCode, ErrStat, ErrMsg )
Expand Down Expand Up @@ -9330,6 +9339,7 @@ SUBROUTINE AD_CopyRotMiscVarType( SrcRotMiscVarTypeData, DstRotMiscVarTypeData,
IF (ErrStat>=AbortErrLev) RETURN
DstRotMiscVarTypeData%FirstWarn_TowerStrike = SrcRotMiscVarTypeData%FirstWarn_TowerStrike
DstRotMiscVarTypeData%AvgDiskVel = SrcRotMiscVarTypeData%AvgDiskVel
DstRotMiscVarTypeData%AvgDiskVelDist = SrcRotMiscVarTypeData%AvgDiskVelDist
DstRotMiscVarTypeData%TFinAlpha = SrcRotMiscVarTypeData%TFinAlpha
DstRotMiscVarTypeData%TFinRe = SrcRotMiscVarTypeData%TFinRe
DstRotMiscVarTypeData%TFinVrel = SrcRotMiscVarTypeData%TFinVrel
Expand Down Expand Up @@ -9996,6 +10006,7 @@ SUBROUTINE AD_PackRotMiscVarType( ReKiBuf, DbKiBuf, IntKiBuf, Indata, ErrStat, E
END IF
Int_BufSz = Int_BufSz + 1 ! FirstWarn_TowerStrike
Re_BufSz = Re_BufSz + SIZE(InData%AvgDiskVel) ! AvgDiskVel
Re_BufSz = Re_BufSz + SIZE(InData%AvgDiskVelDist) ! AvgDiskVelDist
Re_BufSz = Re_BufSz + 1 ! TFinAlpha
Re_BufSz = Re_BufSz + 1 ! TFinRe
Re_BufSz = Re_BufSz + 1 ! TFinVrel
Expand Down Expand Up @@ -11096,6 +11107,10 @@ SUBROUTINE AD_PackRotMiscVarType( ReKiBuf, DbKiBuf, IntKiBuf, Indata, ErrStat, E
ReKiBuf(Re_Xferred) = InData%AvgDiskVel(i1)
Re_Xferred = Re_Xferred + 1
END DO
DO i1 = LBOUND(InData%AvgDiskVelDist,1), UBOUND(InData%AvgDiskVelDist,1)
ReKiBuf(Re_Xferred) = InData%AvgDiskVelDist(i1)
Re_Xferred = Re_Xferred + 1
END DO
ReKiBuf(Re_Xferred) = InData%TFinAlpha
Re_Xferred = Re_Xferred + 1
ReKiBuf(Re_Xferred) = InData%TFinRe
Expand Down Expand Up @@ -12519,6 +12534,12 @@ SUBROUTINE AD_UnPackRotMiscVarType( ReKiBuf, DbKiBuf, IntKiBuf, Outdata, ErrStat
OutData%AvgDiskVel(i1) = ReKiBuf(Re_Xferred)
Re_Xferred = Re_Xferred + 1
END DO
i1_l = LBOUND(OutData%AvgDiskVelDist,1)
i1_u = UBOUND(OutData%AvgDiskVelDist,1)
DO i1 = LBOUND(OutData%AvgDiskVelDist,1), UBOUND(OutData%AvgDiskVelDist,1)
OutData%AvgDiskVelDist(i1) = ReKiBuf(Re_Xferred)
Re_Xferred = Re_Xferred + 1
END DO
OutData%TFinAlpha = ReKiBuf(Re_Xferred)
Re_Xferred = Re_Xferred + 1
OutData%TFinRe = ReKiBuf(Re_Xferred)
Expand Down Expand Up @@ -13442,6 +13463,7 @@ SUBROUTINE AD_CopyRotParameterType( SrcRotParameterTypeData, DstRotParameterType
DstRotParameterTypeData%WtrDpth = SrcRotParameterTypeData%WtrDpth
DstRotParameterTypeData%MSL2SWL = SrcRotParameterTypeData%MSL2SWL
DstRotParameterTypeData%AeroProjMod = SrcRotParameterTypeData%AeroProjMod
DstRotParameterTypeData%AeroBEM_Mod = SrcRotParameterTypeData%AeroBEM_Mod
DstRotParameterTypeData%NumOuts = SrcRotParameterTypeData%NumOuts
DstRotParameterTypeData%RootName = SrcRotParameterTypeData%RootName
IF (ALLOCATED(SrcRotParameterTypeData%OutParam)) THEN
Expand Down Expand Up @@ -13786,6 +13808,7 @@ SUBROUTINE AD_PackRotParameterType( ReKiBuf, DbKiBuf, IntKiBuf, Indata, ErrStat,
Re_BufSz = Re_BufSz + 1 ! WtrDpth
Re_BufSz = Re_BufSz + 1 ! MSL2SWL
Int_BufSz = Int_BufSz + 1 ! AeroProjMod
Int_BufSz = Int_BufSz + 1 ! AeroBEM_Mod
Int_BufSz = Int_BufSz + 1 ! NumOuts
Int_BufSz = Int_BufSz + 1*LEN(InData%RootName) ! RootName
Int_BufSz = Int_BufSz + 1 ! OutParam allocated yes/no
Expand Down Expand Up @@ -14309,6 +14332,8 @@ SUBROUTINE AD_PackRotParameterType( ReKiBuf, DbKiBuf, IntKiBuf, Indata, ErrStat,
Re_Xferred = Re_Xferred + 1
IntKiBuf(Int_Xferred) = InData%AeroProjMod
Int_Xferred = Int_Xferred + 1
IntKiBuf(Int_Xferred) = InData%AeroBEM_Mod
Int_Xferred = Int_Xferred + 1
IntKiBuf(Int_Xferred) = InData%NumOuts
Int_Xferred = Int_Xferred + 1
DO I = 1, LEN(InData%RootName)
Expand Down Expand Up @@ -14988,6 +15013,8 @@ SUBROUTINE AD_UnPackRotParameterType( ReKiBuf, DbKiBuf, IntKiBuf, Outdata, ErrSt
Re_Xferred = Re_Xferred + 1
OutData%AeroProjMod = IntKiBuf(Int_Xferred)
Int_Xferred = Int_Xferred + 1
OutData%AeroBEM_Mod = IntKiBuf(Int_Xferred)
Int_Xferred = Int_Xferred + 1
OutData%NumOuts = IntKiBuf(Int_Xferred)
Int_Xferred = Int_Xferred + 1
DO I = 1, LEN(OutData%RootName)
Expand Down
Loading

0 comments on commit a209327

Please sign in to comment.