Skip to content

SubDyn: add per-member discretization support to align meshes with HydroDyn - #3385

Merged
andrew-platt merged 3 commits into
OpenFAST:devfrom
luwang00:subdyn_discretization
Jul 30, 2026
Merged

SubDyn: add per-member discretization support to align meshes with HydroDyn#3385
andrew-platt merged 3 commits into
OpenFAST:devfrom
luwang00:subdyn_discretization

Conversation

@luwang00

Copy link
Copy Markdown
Contributor

This PR is ready. Need to merge PR #3356 into rc-5.0.1 and merge rc-5.0.1 into dev first.

Feature or improvement description

This PR adds optional element-length-based discretization for beam member to SubDyn. In the SubDyn input file, the MEMBERS table now accepts a new optional 8th column at the end called MDivSize. It defines the maximum length in meters of the resulting equal-length elements after discretizing the member. Effectively, it behaves the same way as MDivSize in the HydroDyn input file.

Each member can have a different MDivSize. If omitted for a given member, that particular member will revert back to NDiv elements as before. This allows for backward compatibility. MDivSize is always ignored for non-beam members, including cables, rigid links, and spring elements, which are not subdivided.

Internally, SubDyn initialization and output have been revised to support differing number of elements for each member. When requesting beam member nodal outputs (load and motion), NodeCnt must be less than or equal to NDiv+1 if default discretization based on NDiv is used (MDivSize not specified), or be less than or equal to the actual number of nodes belonging to that member after discretization based on MDivSize. Users can refer to the SubDyn summary file for the number of nodes belonging to each member.

The primary purpose of this change is to simplify mesh alignment between SubDyn and HydroDyn for hydroelastic simulations. Aligned meshes between the two modules are recommended to ensure physical results. With this update, if a member has the same starting and ending joint coordinates and the same MDivSize in the two module input files, the internal mesh nodes will also be aligned between the two modules. Additionally, if members have drastically different lengths in SubDyn, the MDivSize based discretization is more appropriate compared to the uniform subdivision based on NDiv. The latter will either result in excessive discretization of short members or inadequate discretization of long members.

Impacted areas of the software
SubDyn, docs, r-test

Generative AI usage
Co-authored-by: Microsoft Copilot copilot@microsoft.com

Test results, if applicable
No change to existing r-tests (all passed); added a new SubDyn module r-test called SD_2Beam_MixedDiscretization to demonstrate the new discretization capability for beams.

  • r-test branch merging required

luwang00 and others added 2 commits July 10, 2026 16:16
Add optional per-member MDivSize parsing and resolve per-member MemberNDiv with global NDiv fallback.

Refactor FEM discretization to use per-member divisions, cache MemberElemStart, and avoid max-width MemberNodes storage.

Update output mapping and summary generation to reconstruct member node ordinals from connectivity and MemberElemStart.

Register and document SD_2Beam_MixedDiscretization regression case and update r-test submodule pointer.

Co-authored-by: GitHub Copilot <copilot@github.com>
@andrew-platt
andrew-platt merged commit caee860 into OpenFAST:dev Jul 30, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants