@@ -115,6 +115,7 @@ MODULE SubDyn_Types
115115 REAL (ReKi) :: SubRotateZ = 0.0_ReKi ! < Rotation angle in degrees about global Z [-]
116116 REAL (ReKi) , DIMENSION (:,:,:), ALLOCATABLE :: SoilStiffness ! < Soil stiffness matrices from SoilDyn ['(N/m,]
117117 TYPE (MeshType) :: SoilMesh ! < Mesh for soil stiffness locations [-]
118+ LOGICAL :: SlDNonLinear = .false. ! < Flag indicating that SoilDyn is returning nonlinear loads [-]
118119 LOGICAL :: Linearize = .FALSE. ! < Flag that tells this module if the glue code wants to linearize. [-]
119120 END TYPE SD_InitInputType
120121! =======================
@@ -258,6 +259,7 @@ MODULE SubDyn_Types
258259 INTEGER (IntKi) :: nDOFRB = 0_IntKi ! < number of rigid-body modes [-]
259260 INTEGER (IntKi) :: SttcSolve = 0_IntKi ! < Solve dynamics about static equilibrium point (flag) [-]
260261 LOGICAL :: Floating = .false. ! < True if floating bottom (the 6 DOF are free at all reaction nodes) [-]
262+ LOGICAL :: SlDNonLinear = .false. ! < Flag indicating that SoilDyn is returning nonlinear loads [-]
261263 REAL (ReKi) , DIMENSION (:), ALLOCATABLE :: KMMDiag ! < Diagonal coefficients of Kmm (OmegaM squared) [-]
262264 REAL (ReKi) , DIMENSION (:), ALLOCATABLE :: CMMDiag ! < Diagonal coefficients of Cmm (~2 Zeta OmegaM)) [-]
263265 REAL (ReKi) , DIMENSION (:,:), ALLOCATABLE :: MMB ! < Matrix after C-B reduction (transpose of MBM [-]
@@ -987,6 +989,7 @@ subroutine SD_CopyInitInput(SrcInitInputData, DstInitInputData, CtrlCode, ErrSta
987989 call MeshCopy(SrcInitInputData% SoilMesh, DstInitInputData% SoilMesh, CtrlCode, ErrStat2, ErrMsg2 )
988990 call SetErrStat(ErrStat2, ErrMsg2, ErrStat, ErrMsg, RoutineName)
989991 if (ErrStat >= AbortErrLev) return
992+ DstInitInputData% SlDNonLinear = SrcInitInputData% SlDNonLinear
990993 DstInitInputData% Linearize = SrcInitInputData% Linearize
991994end subroutine
992995
@@ -1023,6 +1026,7 @@ subroutine SD_PackInitInput(RF, Indata)
10231026 call RegPack(RF, InData% SubRotateZ)
10241027 call RegPackAlloc(RF, InData% SoilStiffness)
10251028 call MeshPack(RF, InData% SoilMesh)
1029+ call RegPack(RF, InData% SlDNonLinear)
10261030 call RegPack(RF, InData% Linearize)
10271031 if (RegCheckErr(RF, RoutineName)) return
10281032end subroutine
@@ -1044,6 +1048,7 @@ subroutine SD_UnPackInitInput(RF, OutData)
10441048 call RegUnpack(RF, OutData% SubRotateZ); if (RegCheckErr(RF, RoutineName)) return
10451049 call RegUnpackAlloc(RF, OutData% SoilStiffness); if (RegCheckErr(RF, RoutineName)) return
10461050 call MeshUnpack(RF, OutData% SoilMesh) ! SoilMesh
1051+ call RegUnpack(RF, OutData% SlDNonLinear); if (RegCheckErr(RF, RoutineName)) return
10471052 call RegUnpack(RF, OutData% Linearize); if (RegCheckErr(RF, RoutineName)) return
10481053end subroutine
10491054
@@ -2413,6 +2418,7 @@ subroutine SD_CopyParam(SrcParamData, DstParamData, CtrlCode, ErrStat, ErrMsg)
24132418 DstParamData% nDOFRB = SrcParamData% nDOFRB
24142419 DstParamData% SttcSolve = SrcParamData% SttcSolve
24152420 DstParamData% Floating = SrcParamData% Floating
2421+ DstParamData% SlDNonLinear = SrcParamData% SlDNonLinear
24162422 if (allocated (SrcParamData% KMMDiag)) then
24172423 LB(1 :1 ) = lbound (SrcParamData% KMMDiag)
24182424 UB(1 :1 ) = ubound (SrcParamData% KMMDiag)
@@ -3466,6 +3472,7 @@ subroutine SD_PackParam(RF, Indata)
34663472 call RegPack(RF, InData% nDOFRB)
34673473 call RegPack(RF, InData% SttcSolve)
34683474 call RegPack(RF, InData% Floating)
3475+ call RegPack(RF, InData% SlDNonLinear)
34693476 call RegPackAlloc(RF, InData% KMMDiag)
34703477 call RegPackAlloc(RF, InData% CMMDiag)
34713478 call RegPackAlloc(RF, InData% MMB)
@@ -3666,6 +3673,7 @@ subroutine SD_UnPackParam(RF, OutData)
36663673 call RegUnpack(RF, OutData% nDOFRB); if (RegCheckErr(RF, RoutineName)) return
36673674 call RegUnpack(RF, OutData% SttcSolve); if (RegCheckErr(RF, RoutineName)) return
36683675 call RegUnpack(RF, OutData% Floating); if (RegCheckErr(RF, RoutineName)) return
3676+ call RegUnpack(RF, OutData% SlDNonLinear); if (RegCheckErr(RF, RoutineName)) return
36693677 call RegUnpackAlloc(RF, OutData% KMMDiag); if (RegCheckErr(RF, RoutineName)) return
36703678 call RegUnpackAlloc(RF, OutData% CMMDiag); if (RegCheckErr(RF, RoutineName)) return
36713679 call RegUnpackAlloc(RF, OutData% MMB); if (RegCheckErr(RF, RoutineName)) return
0 commit comments