Skip to content

Commit 52b0082

Browse files
committed
HD: Add outputs of Morison mesh nodal loads when OutAll is true
1 parent 7d6edb0 commit 52b0082

3 files changed

Lines changed: 52 additions & 7 deletions

File tree

docs/source/user/hydrodyn/input_files.rst

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -899,9 +899,10 @@ HydroDyn standalone, or by the OpenFAST program when running a coupled
899899
simulation. See :numref:`hd-summary-file` for summary file details.
900900

901901
If **OutAll** is set to TRUE, HydroDyn will output the total strip-theory
902-
forces and moments on each user-defined member and joint. These additional
903-
output channels are inserted as additional columns in the output file
904-
independent of any user-requested outputs. See :ref:`hd-outall-option`
902+
forces and moments on each user-defined member and joint, followed by the
903+
forces and moments on each computational node of the strip-theory mesh.
904+
These additional output channels are inserted as additional columns in the
905+
output file independent of any user-requested outputs. See :ref:`hd-outall-option`
905906
for more information.
906907

907908
If **OutSwtch** is set to 1, outputs are sent to a file with the name

docs/source/user/hydrodyn/output_files.rst

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,8 @@ data for a single 6\ **NBody**-by-6\ **NBody** matrix. If **NBodyMod** > 1
174174
If **OutAll** is set to TRUE, HydroDyn will output the total strip-theory
175175
forces and moments on each user-defined member and joint. These are
176176
included as additional columns in the output file independent of any
177-
user-requested outputs. The forces and moments on the members (loads on
178-
the side wall) will be written first. For example, the 6 load components
177+
user-requested outputs. The forces and moments on the members (integrated loads across
178+
all side walls) will be written first. For example, the 6 load components
179179
on the first member in the **MEMBERS** table (the first row of the table)
180180
are given by **M1TotFxi**, **M1TotFyi**, **M1TotFzi**, **M1TotMxi**,
181181
**M1TotMyi**, and **M1TotMzi**. After the member loads, the total lumped
@@ -197,7 +197,27 @@ force and moment components are resolved in the earth-fixed inertial frame
197197
of reference, and the moments are computed about the instantaneous principal
198198
reference point (PRP), same as the output channels **HydroFxi**,
199199
**HydroFyi**, etc. As a reminder, the PRP is a body-fixed point located at
200-
the earth-fixed origin when the HydroDyn structure is undisplaced.
200+
the earth-fixed origin when the HydroDyn structure is undisplaced. Summing
201+
all member and joint loads gives the total strip-theory loads on the entire
202+
structure.
203+
204+
After the member and joint loads, HydroDyn also outputs the total forces
205+
and moments on each computational node of the HydroDyn strip-theory (Morison)
206+
mesh. This internal mesh is used to map the loads to other structural
207+
modules, such as SubDyn, and contains joint nodes at the user-defined joint
208+
locations followed by member internal nodes created from member discretization.
209+
The force and moment components are again resolved in the earth-fixed inertial
210+
frame of reference. However, the moment on each node is about the node itself,
211+
not about the PRP as with the member and joint load outputs above. Additionally,
212+
the joint mesh nodes can have load contributions from both member side walls
213+
and from the joint/endplates. This is because part of the side-wall loads on
214+
the first and last element of a member can be assignd to the joint nodes. As
215+
a result, the load outputs at the joint nodes do not necessarily match the joint
216+
load outputs above, which do not contain contributions from member side walls.
217+
The nodal load output column names indicate the node number, e.g., **N1TotFxi**,
218+
**N1TotFyi**, **N1TotFzi**, **N1TotMxi**, **N1TotMyi**, and **N1TotMzi** for
219+
the first node. The node numbering follows the **Nodes** table in the HydroDyn
220+
summary file.
201221

202222
Results File
203223
~~~~~~~~~~~~

modules/hydrodyn/src/Morison_Output.f90

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7936,6 +7936,11 @@ SUBROUTINE MrsnOut_MapOutputs( y, p, u, m )
79367936
y%WriteOutput(I+1:I+6) = m%F_tot_End(:,im)
79377937
I = I + 6_IntKi
79387938
END DO
7939+
DO im = 1,p%NNodes
7940+
y%WriteOutput(I+1:I+3) = y%Mesh%Force(:,im)
7941+
y%WriteOutput(I+4:I+6) = y%Mesh%Moment(:,im)
7942+
I = I + 6_IntKi
7943+
END DO
79397944

79407945
END SUBROUTINE MrsnOut_MapOutputs
79417946

@@ -8957,7 +8962,7 @@ SUBROUTINE SetOutParam(OutList, p, ErrStat, ErrMsg )
89578962
! If a selected output channel is not available in this module, set error flag.
89588963
!-------------------------------------------------------------------------------------------------
89598964
if (p%OutAll) then
8960-
ALLOCATE ( p%OutParam(1:(p%NumOuts + 6_IntKi*p%NMembers + 6_IntKi*p%NJoints)) , STAT=ErrStat2 )
8965+
ALLOCATE ( p%OutParam(1:(p%NumOuts + 6_IntKi*p%NMembers + 6_IntKi*p%NJoints + 6_IntKi*p%NNodes)) , STAT=ErrStat2 )
89618966
else
89628967
ALLOCATE ( p%OutParam(1:p%NumOuts) , STAT=ErrStat2 )
89638968
endif
@@ -9042,6 +9047,25 @@ SUBROUTINE SetOutParam(OutList, p, ErrStat, ErrMsg )
90429047
p%OutParam(k)%SignM = 1_IntKi
90439048
end do
90449049
end do
9050+
do i = 1,p%NNodes
9051+
p%OutParam(k+1)%Name = "N"//trim(num2lstr(i))//"TotFxi"
9052+
p%OutParam(k+1)%Units = "(N)"
9053+
p%OutParam(k+2)%Name = "N"//trim(num2lstr(i))//"TotFyi"
9054+
p%OutParam(k+2)%Units = "(N)"
9055+
p%OutParam(k+3)%Name = "N"//trim(num2lstr(i))//"TotFzi"
9056+
p%OutParam(k+3)%Units = "(N)"
9057+
p%OutParam(k+4)%Name = "N"//trim(num2lstr(i))//"TotMxi"
9058+
p%OutParam(k+4)%Units = "(N-m)"
9059+
p%OutParam(k+5)%Name = "N"//trim(num2lstr(i))//"TotMyi"
9060+
p%OutParam(k+5)%Units = "(N-m)"
9061+
p%OutParam(k+6)%Name = "N"//trim(num2lstr(i))//"TotMzi"
9062+
p%OutParam(k+6)%Units = "(N-m)"
9063+
do j = 1,6
9064+
k = k + 1_IntKi
9065+
p%OutParam(k)%Indx = -1_IntKi
9066+
p%OutParam(k)%SignM = 1_IntKi
9067+
end do
9068+
end do
90459069
end if
90469070

90479071
RETURN

0 commit comments

Comments
 (0)