Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
9450632
Implemented force extrapolation to improve SubDyn force outputs at me…
luwang00 Jun 17, 2026
f7e8d7c
SubDyn: Fixed a sign error in the member load outputs with the OutAll…
luwang00 Jun 23, 2026
db1b213
SubDyn: Removed the inertial member load output channels, e.g., M1N1F…
luwang00 Jun 23, 2026
c0da6e7
SubDyn: Fixed output file column headers with the OutAll option
luwang00 Jun 23, 2026
835a963
Update beams self-weight (only sensor outputs)
RBergua Jun 3, 2026
8b73bfb
Fix (SubDyn): remove incorrect comment about Fg
RBergua Jun 4, 2026
ee6d8df
SubDyn: update CALC_NODE_FORCES description and comments
RBergua Jun 4, 2026
2a4d223
SubDyn: self-weight reconstruction in floating systems
RBergua Jun 5, 2026
5d82014
SubDyn floating: equivalent nodal moments based on the actual directi…
RBergua Jun 6, 2026
94aaf91
SubDyn floating: refactored self-weight output calculation
RBergua Jun 6, 2026
374d19f
SubDyn_Output.f90: clean up trailing whitespace
RBergua Jun 6, 2026
a0d4677
New SD regression test self-weight CTestList
RBergua Jun 9, 2026
821cee3
Add SubDyn self-weight regression test
RBergua Jun 9, 2026
ae7eb8f
SubDyn: Fixed a new bug with load output when dealing with non-beam m…
luwang00 Jun 23, 2026
88c0628
SubDyn_Output.f90: Clarification self-weight vs cable pretension
RBergua Jun 24, 2026
6151e5e
SubDyn: Clean up load output code
luwang00 Jun 24, 2026
6857d52
SubDyn_Output.f90: separate beam self-weight (forces zeroed) and cabl…
RBergua Jun 24, 2026
01ef866
Merge RBergua/SubDyn_self-weight
luwang00 Jun 24, 2026
83b32f0
SubDyn: more clean-up
luwang00 Jun 24, 2026
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
481 changes: 273 additions & 208 deletions modules/subdyn/src/SubDyn_Output.f90

Large diffs are not rendered by default.

48,617 changes: 20,281 additions & 28,336 deletions modules/subdyn/src/SubDyn_Output_Params.f90

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion modules/subdyn/src/SubDyn_Registry.txt
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,9 @@ typedef ^ MeshAuxDataType INTEGER NodeCnt {:} - - "Node ordina
typedef ^ MeshAuxDataType INTEGER NodeIDs {:} - - "Node IDs associated with ordinal numbers for the output member"
typedef ^ MeshAuxDataType INTEGER ElmIDs {:}{:} - - "Element IDs connected to each NodeIDs; max 10 elements"
typedef ^ MeshAuxDataType INTEGER ElmNds {:}{:} - - "Flag to indicate 1st or 2nd node of element for each ElmIDs"
typedef ^ MeshAuxDataType R8Ki Me {:}{:}{:}{:} - - "Mass matrix connected to each joint element for outAll output"
typedef ^ MeshAuxDataType R8Ki Ke {:}{:}{:}{:} - - "Mass matrix connected to each joint element for outAll output"
typedef ^ MeshAuxDataType R8Ki Fg {:}{:}{:} - - "Gravity load vector connected to each joint element for requested member output"
typedef ^ MeshAuxDataType LOGICAL extrap {:} - - "Whether to extrapolate force; true for member end nodes if member has more than 1 element"

# CB_MatArrays: Matrices and arrays for CB summary
typedef ^ CB_MatArrays R8Ki MBB {:}{:} - - "FULL MBB ( no constraints applied)"
Expand Down
36 changes: 18 additions & 18 deletions modules/subdyn/src/SubDyn_Types.f90
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ MODULE SubDyn_Types
INTEGER(IntKi) , DIMENSION(:), ALLOCATABLE :: NodeIDs !< Node IDs associated with ordinal numbers for the output member [-]
INTEGER(IntKi) , DIMENSION(:,:), ALLOCATABLE :: ElmIDs !< Element IDs connected to each NodeIDs; max 10 elements [-]
INTEGER(IntKi) , DIMENSION(:,:), ALLOCATABLE :: ElmNds !< Flag to indicate 1st or 2nd node of element for each ElmIDs [-]
REAL(R8Ki) , DIMENSION(:,:,:,:), ALLOCATABLE :: Me !< Mass matrix connected to each joint element for outAll output [-]
REAL(R8Ki) , DIMENSION(:,:,:,:), ALLOCATABLE :: Ke !< Mass matrix connected to each joint element for outAll output [-]
REAL(R8Ki) , DIMENSION(:,:,:), ALLOCATABLE :: Fg !< Gravity load vector connected to each joint element for requested member output [-]
LOGICAL , DIMENSION(:), ALLOCATABLE :: extrap !< Whether to extrapolate force; true for member end nodes if member has more than 1 element [-]
END TYPE MeshAuxDataType
! =======================
! ========= CB_MatArrays =======
Expand Down Expand Up @@ -546,18 +546,6 @@ subroutine SD_CopyMeshAuxDataType(SrcMeshAuxDataTypeData, DstMeshAuxDataTypeData
end if
DstMeshAuxDataTypeData%ElmNds = SrcMeshAuxDataTypeData%ElmNds
end if
if (allocated(SrcMeshAuxDataTypeData%Me)) then
LB(1:4) = lbound(SrcMeshAuxDataTypeData%Me)
UB(1:4) = ubound(SrcMeshAuxDataTypeData%Me)
if (.not. allocated(DstMeshAuxDataTypeData%Me)) then
allocate(DstMeshAuxDataTypeData%Me(LB(1):UB(1),LB(2):UB(2),LB(3):UB(3),LB(4):UB(4)), stat=ErrStat2)
if (ErrStat2 /= 0) then
call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshAuxDataTypeData%Me.', ErrStat, ErrMsg, RoutineName)
return
end if
end if
DstMeshAuxDataTypeData%Me = SrcMeshAuxDataTypeData%Me
end if
if (allocated(SrcMeshAuxDataTypeData%Ke)) then
LB(1:4) = lbound(SrcMeshAuxDataTypeData%Ke)
UB(1:4) = ubound(SrcMeshAuxDataTypeData%Ke)
Expand All @@ -582,6 +570,18 @@ subroutine SD_CopyMeshAuxDataType(SrcMeshAuxDataTypeData, DstMeshAuxDataTypeData
end if
DstMeshAuxDataTypeData%Fg = SrcMeshAuxDataTypeData%Fg
end if
if (allocated(SrcMeshAuxDataTypeData%extrap)) then
LB(1:1) = lbound(SrcMeshAuxDataTypeData%extrap)
UB(1:1) = ubound(SrcMeshAuxDataTypeData%extrap)
if (.not. allocated(DstMeshAuxDataTypeData%extrap)) then
allocate(DstMeshAuxDataTypeData%extrap(LB(1):UB(1)), stat=ErrStat2)
if (ErrStat2 /= 0) then
call SetErrStat(ErrID_Fatal, 'Error allocating DstMeshAuxDataTypeData%extrap.', ErrStat, ErrMsg, RoutineName)
return
end if
end if
DstMeshAuxDataTypeData%extrap = SrcMeshAuxDataTypeData%extrap
end if
end subroutine

subroutine SD_DestroyMeshAuxDataType(MeshAuxDataTypeData, ErrStat, ErrMsg)
Expand All @@ -603,15 +603,15 @@ subroutine SD_DestroyMeshAuxDataType(MeshAuxDataTypeData, ErrStat, ErrMsg)
if (allocated(MeshAuxDataTypeData%ElmNds)) then
deallocate(MeshAuxDataTypeData%ElmNds)
end if
if (allocated(MeshAuxDataTypeData%Me)) then
deallocate(MeshAuxDataTypeData%Me)
end if
if (allocated(MeshAuxDataTypeData%Ke)) then
deallocate(MeshAuxDataTypeData%Ke)
end if
if (allocated(MeshAuxDataTypeData%Fg)) then
deallocate(MeshAuxDataTypeData%Fg)
end if
if (allocated(MeshAuxDataTypeData%extrap)) then
deallocate(MeshAuxDataTypeData%extrap)
end if
end subroutine

subroutine SD_PackMeshAuxDataType(RF, Indata)
Expand All @@ -625,9 +625,9 @@ subroutine SD_PackMeshAuxDataType(RF, Indata)
call RegPackAlloc(RF, InData%NodeIDs)
call RegPackAlloc(RF, InData%ElmIDs)
call RegPackAlloc(RF, InData%ElmNds)
call RegPackAlloc(RF, InData%Me)
call RegPackAlloc(RF, InData%Ke)
call RegPackAlloc(RF, InData%Fg)
call RegPackAlloc(RF, InData%extrap)
if (RegCheckErr(RF, RoutineName)) return
end subroutine

Expand All @@ -645,9 +645,9 @@ subroutine SD_UnPackMeshAuxDataType(RF, OutData)
call RegUnpackAlloc(RF, OutData%NodeIDs); if (RegCheckErr(RF, RoutineName)) return
call RegUnpackAlloc(RF, OutData%ElmIDs); if (RegCheckErr(RF, RoutineName)) return
call RegUnpackAlloc(RF, OutData%ElmNds); if (RegCheckErr(RF, RoutineName)) return
call RegUnpackAlloc(RF, OutData%Me); if (RegCheckErr(RF, RoutineName)) return
call RegUnpackAlloc(RF, OutData%Ke); if (RegCheckErr(RF, RoutineName)) return
call RegUnpackAlloc(RF, OutData%Fg); if (RegCheckErr(RF, RoutineName)) return
call RegUnpackAlloc(RF, OutData%extrap); if (RegCheckErr(RF, RoutineName)) return
end subroutine

subroutine SD_CopyCB_MatArrays(SrcCB_MatArraysData, DstCB_MatArraysData, CtrlCode, ErrStat, ErrMsg)
Expand Down
9 changes: 5 additions & 4 deletions reg_tests/CTestList.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -56,11 +56,11 @@ function(regression TEST_SCRIPT EXECUTABLE SOURCE_DIRECTORY BUILD_DIRECTORY STEA
if(STEADYSTATE_FLAG STREQUAL " ")
set(STEADYSTATE_FLAG "")
endif()

if(OTHER_FLAGS STREQUAL " ")
set(OTHER_FLAGS "")
endif()

add_test(
${TESTNAME} ${Python_EXECUTABLE}
${TEST_SCRIPT}
Expand Down Expand Up @@ -111,7 +111,7 @@ function(of_fastlib_regression TESTNAME LABEL)
regression(${TEST_SCRIPT} ${OPENFAST_EXECUTABLE} ${SOURCE_DIRECTORY} ${BUILD_DIRECTORY} " " "${TESTNAME}_fastlib" "${LABEL}" " " ${TESTNAME})
endfunction(of_fastlib_regression)

# openfast aeroacoustic
# openfast aeroacoustic
function(of_regression_aeroacoustic TESTNAME LABEL)
set(TEST_SCRIPT "${CMAKE_CURRENT_LIST_DIR}/executeOpenfastAeroAcousticRegressionCase.py")
set(OPENFAST_EXECUTABLE "${CTEST_OPENFAST_EXECUTABLE}")
Expand Down Expand Up @@ -514,7 +514,7 @@ sd_regression("SD_PendulumDamp" "subdyn;offshore")
sd_regression("SD_Rigid" "subdyn;offshore")
sd_regression("SD_SparHanging" "subdyn;offshore")
sd_regression("SD_AnsysComp1_PinBeam" "subdyn;offshore") # TODO Issue #855
sd_regression("SD_AnsysComp2_Cable" "subdyn;offshore")
sd_regression("SD_AnsysComp2_Cable" "subdyn;offshore")
sd_regression("SD_AnsysComp3_PinBeamCable" "subdyn;offshore") # TODO Issue #855
sd_regression("SD_Spring_Case1" "subdyn;offshore")
sd_regression("SD_Spring_Case2" "subdyn;offshore")
Expand All @@ -523,6 +523,7 @@ sd_regression("SD_Revolute_Joint" "subdyn;offshore")
sd_regression("SD_2Beam_Spring" "subdyn;offshore")
sd_regression("SD_2Beam_Cantilever" "subdyn;offshore")
sd_regression("SD_CantileverBeam_Rectangular" "subdyn;offshore")
sd_regression("SD_SelfWeight_FloatingSystem" "subdyn;offshore")
# TODO test below are bugs, should be added when fixed
# sd_regression("SD_Force" "subdyn;offshore")
# sd_regression("SD_AnsysComp4_UniversalCableRigid" "subdyn;offshore")
Expand Down
2 changes: 1 addition & 1 deletion reg_tests/r-test
Submodule r-test updated 102 files
Loading