Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified docs/OtherSupporting/OutListParameters.xlsx
Binary file not shown.
21 changes: 21 additions & 0 deletions modules/beamdyn/src/BeamDyn.f90
Original file line number Diff line number Diff line change
Expand Up @@ -1746,6 +1746,27 @@ subroutine Init_MiscVars( p, u, y, m, ErrStat, ErrMsg )
CALL BD_CopyInput(u, m%u2, MESH_NEWCOPY, ErrStat2, ErrMsg2)
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName )

! compute mapping of applied distributed loads to the root location
! NOTE: PtLoads are not handled at present. See comments in BeamDyn_IO.f90 for changes required.
if (p%CompAppliedLdAtRoot .and. p%BldMotionNodeLoc == BD_MESH_QP) then
! create point mesh at root (cousin of rootmotion)
CALL MeshCopy( SrcMesh = u%RootMotion &
, DestMesh = m%LoadsAtRoot &
, CtrlCode = MESH_COUSIN &
, IOS = COMPONENT_OUTPUT &
, Force = .TRUE. &
, Moment = .TRUE. &
, ErrStat = ErrStat2 &
, ErrMess = ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName )
if (ErrStat>=AbortErrLev) RETURN

! mapping of distributed loads to LoadsAtRoot
CALL MeshMapCreate( u%DistrLoad, m%LoadsAtRoot, m%Map_u_DistrLoad_to_R, ErrStat2, ErrMsg2 )
CALL SetErrStat( ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName )
m%LoadsAtRoot%remapFlag = .false.

endif

end subroutine Init_MiscVars
!-----------------------------------------------------------------------------------------------------------------------------------
Expand Down
1,161 changes: 642 additions & 519 deletions modules/beamdyn/src/BeamDyn_IO.f90

Large diffs are not rendered by default.

20 changes: 20 additions & 0 deletions modules/beamdyn/src/BeamDyn_Types.f90
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,7 @@ MODULE BeamDyn_Types
LOGICAL :: RotStates = .false. !< Orient states in rotating frame during linearization? (flag) [-]
LOGICAL :: RelStates = .false. !< Define states relative to root motion during linearization? (flag) [-]
LOGICAL :: CompAeroMaps = .FALSE. !< flag to determine if BeamDyn is computing aero maps (true) or running a normal simulation (false) [-]
LOGICAL :: CompAppliedLdAtRoot = .FALSE. !< flag to determine if BeamDyn should compute the applied loads at root [-]
END TYPE BD_ParameterType
! =======================
! ========= BD_InputType =======
Expand Down Expand Up @@ -295,8 +296,10 @@ MODULE BeamDyn_Types
TYPE, PUBLIC :: BD_MiscVarType
TYPE(MeshType) :: u_DistrLoad_at_y !< input loads at output node locations [-]
TYPE(MeshType) :: y_BldMotion_at_u !< output motions at input node locations (displacements necessary for mapping loads) [-]
TYPE(MeshType) :: LoadsAtRoot !< Applied loads mapped to root [-]
TYPE(MeshMapType) :: Map_u_DistrLoad_to_y !< mapping of input loads to output node locations [-]
TYPE(MeshMapType) :: Map_y_BldMotion_to_u !< mapping of output motions to input node locations (for load transfer) [-]
TYPE(MeshMapType) :: Map_u_DistrLoad_to_R !< mapping of input loads to root location [-]
INTEGER(IntKi) :: Un_Sum = 0_IntKi !< unit number of summary file [-]
TYPE(EqMotionQP) :: qp !< Quadrature point calculation info [-]
REAL(R8Ki) , DIMENSION(:,:), ALLOCATABLE :: lin_A !< A (dXdx) matrix used in linearization (before RotState is applied) [-]
Expand Down Expand Up @@ -1685,6 +1688,7 @@ subroutine BD_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg)
DstParamData%RotStates = SrcParamData%RotStates
DstParamData%RelStates = SrcParamData%RelStates
DstParamData%CompAeroMaps = SrcParamData%CompAeroMaps
DstParamData%CompAppliedLdAtRoot = SrcParamData%CompAppliedLdAtRoot
end subroutine

subroutine BD_DestroyParam(ParamData, ErrStat, ErrMsg)
Expand Down Expand Up @@ -1899,6 +1903,7 @@ subroutine BD_PackParam(RF, Indata)
call RegPack(RF, InData%RotStates)
call RegPack(RF, InData%RelStates)
call RegPack(RF, InData%CompAeroMaps)
call RegPack(RF, InData%CompAppliedLdAtRoot)
if (RegCheckErr(RF, RoutineName)) return
end subroutine

Expand Down Expand Up @@ -2013,6 +2018,7 @@ subroutine BD_UnPackParam(RF, OutData)
call RegUnpack(RF, OutData%RotStates); if (RegCheckErr(RF, RoutineName)) return
call RegUnpack(RF, OutData%RelStates); if (RegCheckErr(RF, RoutineName)) return
call RegUnpack(RF, OutData%CompAeroMaps); if (RegCheckErr(RF, RoutineName)) return
call RegUnpack(RF, OutData%CompAppliedLdAtRoot); if (RegCheckErr(RF, RoutineName)) return
end subroutine

subroutine BD_CopyInput(SrcInputData, DstInputData, CtrlCode, ErrStat, ErrMsg)
Expand Down Expand Up @@ -2747,12 +2753,18 @@ subroutine BD_CopyMisc(SrcMiscData, DstMiscData, CtrlCode, ErrStat, ErrMsg)
call MeshCopy(SrcMiscData%y_BldMotion_at_u, DstMiscData%y_BldMotion_at_u, CtrlCode, ErrStat2, ErrMsg2 )
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
if (ErrStat >= AbortErrLev) return
call MeshCopy(SrcMiscData%LoadsAtRoot, DstMiscData%LoadsAtRoot, CtrlCode, ErrStat2, ErrMsg2 )
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
if (ErrStat >= AbortErrLev) return
call NWTC_Library_CopyMeshMapType(SrcMiscData%Map_u_DistrLoad_to_y, DstMiscData%Map_u_DistrLoad_to_y, CtrlCode, ErrStat2, ErrMsg2)
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
if (ErrStat >= AbortErrLev) return
call NWTC_Library_CopyMeshMapType(SrcMiscData%Map_y_BldMotion_to_u, DstMiscData%Map_y_BldMotion_to_u, CtrlCode, ErrStat2, ErrMsg2)
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
if (ErrStat >= AbortErrLev) return
call NWTC_Library_CopyMeshMapType(SrcMiscData%Map_u_DistrLoad_to_R, DstMiscData%Map_u_DistrLoad_to_R, CtrlCode, ErrStat2, ErrMsg2)
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
if (ErrStat >= AbortErrLev) return
DstMiscData%Un_Sum = SrcMiscData%Un_Sum
call BD_CopyEqMotionQP(SrcMiscData%qp, DstMiscData%qp, CtrlCode, ErrStat2, ErrMsg2)
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
Expand Down Expand Up @@ -3138,10 +3150,14 @@ subroutine BD_DestroyMisc(MiscData, ErrStat, ErrMsg)
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
call MeshDestroy( MiscData%y_BldMotion_at_u, ErrStat2, ErrMsg2)
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
call MeshDestroy( MiscData%LoadsAtRoot, ErrStat2, ErrMsg2)
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
call NWTC_Library_DestroyMeshMapType(MiscData%Map_u_DistrLoad_to_y, ErrStat2, ErrMsg2)
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
call NWTC_Library_DestroyMeshMapType(MiscData%Map_y_BldMotion_to_u, ErrStat2, ErrMsg2)
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
call NWTC_Library_DestroyMeshMapType(MiscData%Map_u_DistrLoad_to_R, ErrStat2, ErrMsg2)
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
call BD_DestroyEqMotionQP(MiscData%qp, ErrStat2, ErrMsg2)
call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
if (allocated(MiscData%lin_A)) then
Expand Down Expand Up @@ -3247,8 +3263,10 @@ subroutine BD_PackMisc(RF, Indata)
if (RF%ErrStat >= AbortErrLev) return
call MeshPack(RF, InData%u_DistrLoad_at_y)
call MeshPack(RF, InData%y_BldMotion_at_u)
call MeshPack(RF, InData%LoadsAtRoot)
call NWTC_Library_PackMeshMapType(RF, InData%Map_u_DistrLoad_to_y)
call NWTC_Library_PackMeshMapType(RF, InData%Map_y_BldMotion_to_u)
call NWTC_Library_PackMeshMapType(RF, InData%Map_u_DistrLoad_to_R)
call RegPack(RF, InData%Un_Sum)
call BD_PackEqMotionQP(RF, InData%qp)
call RegPackAlloc(RF, InData%lin_A)
Expand Down Expand Up @@ -3296,8 +3314,10 @@ subroutine BD_UnPackMisc(RF, OutData)
if (RF%ErrStat /= ErrID_None) return
call MeshUnpack(RF, OutData%u_DistrLoad_at_y) ! u_DistrLoad_at_y
call MeshUnpack(RF, OutData%y_BldMotion_at_u) ! y_BldMotion_at_u
call MeshUnpack(RF, OutData%LoadsAtRoot) ! LoadsAtRoot
call NWTC_Library_UnpackMeshMapType(RF, OutData%Map_u_DistrLoad_to_y) ! Map_u_DistrLoad_to_y
call NWTC_Library_UnpackMeshMapType(RF, OutData%Map_y_BldMotion_to_u) ! Map_y_BldMotion_to_u
call NWTC_Library_UnpackMeshMapType(RF, OutData%Map_u_DistrLoad_to_R) ! Map_u_DistrLoad_to_R
call RegUnpack(RF, OutData%Un_Sum); if (RegCheckErr(RF, RoutineName)) return
call BD_UnpackEqMotionQP(RF, OutData%qp) ! qp
call RegUnpackAlloc(RF, OutData%lin_A); if (RegCheckErr(RF, RoutineName)) return
Expand Down
3 changes: 3 additions & 0 deletions modules/beamdyn/src/Registry_BeamDyn.txt
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ typedef ^ ParameterType Integer Jac_nx -
typedef ^ ParameterType logical RotStates - - - "Orient states in rotating frame during linearization? (flag)" -
typedef ^ ParameterType Logical RelStates - - - "Define states relative to root motion during linearization? (flag)" -
typedef ^ ParameterType LOGICAL CompAeroMaps - .FALSE. - "flag to determine if BeamDyn is computing aero maps (true) or running a normal simulation (false)" -
typedef ^ ParameterType LOGICAL CompAppliedLdAtRoot - .FALSE. - "flag to determine if BeamDyn should compute the applied loads at root" -


# ..... Inputs
Expand Down Expand Up @@ -330,8 +331,10 @@ typedef ^ EqMotionQP ^ Yd :::: - - "Dissipative
# e.g. indices for searching in an array, large arrays that are local variables in any routine called multiple times, etc.
typedef ^ MiscVarType MeshType u_DistrLoad_at_y - - - "input loads at output node locations" -
typedef ^ MiscVarType MeshType y_BldMotion_at_u - - - "output motions at input node locations (displacements necessary for mapping loads)" -
typedef ^ MiscVarType MeshType LoadsAtRoot - - - "Applied loads mapped to root" -
typedef ^ MiscVarType MeshMapType Map_u_DistrLoad_to_y - - - "mapping of input loads to output node locations" -
typedef ^ MiscVarType MeshMapType Map_y_BldMotion_to_u - - - "mapping of output motions to input node locations (for load transfer)" -
typedef ^ MiscVarType MeshMapType Map_u_DistrLoad_to_R - - - "mapping of input loads to root location" -
typedef ^ MiscVarType IntKi Un_Sum - - - "unit number of summary file" -
typedef ^ MiscVarType EqMotionQP qp - - - "Quadrature point calculation info" -
typedef ^ MiscVarType R8Ki lin_A {:}{:} - - "A (dXdx) matrix used in linearization (before RotState is applied)" -
Expand Down
2 changes: 1 addition & 1 deletion modules/openfast-library/src/FAST_Registry.txt
Original file line number Diff line number Diff line change
Expand Up @@ -720,7 +720,7 @@ typedef ^ FAST_ModuleMapType MeshMapType TStC_P_2_ED_P_T {:} - - "Map ServoDyn/T
typedef ^ FAST_ModuleMapType MeshMapType ED_L_2_BStC_P_B {:}{:} - - "Map ElastoDyn blade line2 mesh to ServoDyn/BStC point mesh"
typedef ^ FAST_ModuleMapType MeshMapType BStC_P_2_ED_P_B {:}{:} - - "Map ServoDyn/BStC point mesh to ElastoDyn point load mesh on the blade"
typedef ^ FAST_ModuleMapType MeshMapType BD_L_2_BStC_P_B {:}{:} - - "Map BeamDyn blade line2 mesh to ServoDyn/BStC point mesh"
typedef ^ FAST_ModuleMapType MeshMapType BStC_P_2_BD_P_B {:}{:} - - "Map ServoDyn/BStC point mesh to BeamDyn point load mesh on the blade"
typedef ^ FAST_ModuleMapType MeshMapType BStC_P_2_BD_P_B {:}{:} - - "Map ServoDyn/BStC point mesh to BeamDyn distributed load mesh on the blade"
# ED/SD <-> SrvD/StC -- Platform TMD
typedef ^ FAST_ModuleMapType MeshMapType SStC_P_P_2_SubStructure {:} - - "Map ServoDyn/SStC platform point mesh load to SubDyn/ElastoDyn point load mesh"
typedef ^ FAST_ModuleMapType MeshMapType SubStructure_2_SStC_P_P {:} - - "Map SubDyn y3mesh or ED platform mesh motion to ServoDyn/SStC point mesh"
Expand Down
2 changes: 1 addition & 1 deletion modules/openfast-library/src/FAST_Types.f90
Original file line number Diff line number Diff line change
Expand Up @@ -743,7 +743,7 @@ MODULE FAST_Types
TYPE(MeshMapType) , DIMENSION(:,:), ALLOCATABLE :: ED_L_2_BStC_P_B !< Map ElastoDyn blade line2 mesh to ServoDyn/BStC point mesh [-]
TYPE(MeshMapType) , DIMENSION(:,:), ALLOCATABLE :: BStC_P_2_ED_P_B !< Map ServoDyn/BStC point mesh to ElastoDyn point load mesh on the blade [-]
TYPE(MeshMapType) , DIMENSION(:,:), ALLOCATABLE :: BD_L_2_BStC_P_B !< Map BeamDyn blade line2 mesh to ServoDyn/BStC point mesh [-]
TYPE(MeshMapType) , DIMENSION(:,:), ALLOCATABLE :: BStC_P_2_BD_P_B !< Map ServoDyn/BStC point mesh to BeamDyn point load mesh on the blade [-]
TYPE(MeshMapType) , DIMENSION(:,:), ALLOCATABLE :: BStC_P_2_BD_P_B !< Map ServoDyn/BStC point mesh to BeamDyn distributed load mesh on the blade [-]
TYPE(MeshMapType) , DIMENSION(:), ALLOCATABLE :: SStC_P_P_2_SubStructure !< Map ServoDyn/SStC platform point mesh load to SubDyn/ElastoDyn point load mesh [-]
TYPE(MeshMapType) , DIMENSION(:), ALLOCATABLE :: SubStructure_2_SStC_P_P !< Map SubDyn y3mesh or ED platform mesh motion to ServoDyn/SStC point mesh [-]
TYPE(MeshMapType) :: ED_P_2_SrvD_P_P !< Map ElastoDyn/Simplified-ElastoDyn platform point mesh motion to ServoDyn point mesh -- for passing to controller [-]
Expand Down