HydroDyn question

Dear everyone,

I am currently experiencing a couple of problems and would appreciate your guidance.
The background of the problem is that I want to use openfast to simulate the wave load on a fixed column in water, and then output the forces and moments acting on the column.
The first question is, there are two methods in HydroDyn, potential flow theory and Morrison’s equations, which one should I use? The DeepCwind model I downloaded from github uses both the potential flow theory and Morrison’s equations, and the IEA15MW platform only uses the potential flow theory. I’m confused about this: why should I still use Morrison’s equations in DeepCwind when Morrison is suitable for smaller components?
The second question is, is it possible to use only Morrison’s equations in the context of my research and just model it in Member in HydroDyn?
The third question is, how do I output the forces and bending moments on the cylinders? In the output list of HydroDyn, it is shown below. I see a lot of output options, but no direct instructions pointing out which force on the column is which. I’m going to take a wild guess that it’s adding all the outputs under Distributed Loads (Per Unit Length) on Members and multiplying them by the height of the column I have underwater, and would appreciate your answers!
The fourth question is, in the context of my question, do I need to activate HydroDyn and ElastDyn, where ElastDyn is used to lock the platform in six degrees of freedom?

Best regards,


Another question I forgot to mention is that I see the output of the viscous drag force option, is this the force acting on the cylinder, do I need to output other options for calculation?
Also I don’t see the torque output option for drag force, I want to output the torque of the wave acting on the cylinder How do I solve it?

Dear @Yushun.Fu,

Here are my responses:

Regarding your first two questions, Morison’s equation is only valid for waves with a long wavelength relative to the diameter of column (L/D > 5) and potential flow is valid when the diameter of the column is larger or wavelength is shorter. We often use a hybrid model that captures both potential flow and the viscous drag term from Morison’s equation if the column is in the vicinity of the limit.

Regarding your third question, if you are interested in the total applied hydrodynamic loads on the column (integrated as you describe), use HydroDyn outputs HydroFxi, etc.

Regarding your fourth question, if you wish to model the loads an fixed/rigid column or with prescribed motion, than you can use the standalone HydroDyn driven (uncoupled from OpenFAST); if you want to model the column that moves in response to the waves or a structurally flexible column, then you should use HydroDyn within OpenFAST with ElastoDyn (and perhaps SubDyn) enabled.

Best regards,

Glad to receive your reply!
HydroFxi defines the force at the wammit reference point, isn’t it necessary to establish the wammit reference point on a cylindrical surface?
For a three-column platform, what should I do if I want to output the forces on the side and main columns?

Dear @Yushun.Fu,

HydroDyn outputs HydroFxi etc. define the total integrated hydrodynamic-applied load on the substructure about (0,0,0), regardless of whether potential-flow theory (WAMIT bodies) is used or not.

HydroDyn does not currently have outputs that represent the total potential-flow plus strip-theory loads on each column of a multi-column semisubmersible. But you can calculate these yourself by integrating the loads on each column based on the available HydroDyn outputs. If you are using the potential-flow solution only with each column represented by a distinct WAMIT body, you can output the potential flow loads on each separate body.

FYI: The HydroDyn output list you are referring to is a bit outdated. The newest list is documented here: https://openfast.readthedocs.io/en/main/_downloads/3f19498a5dc774461e022b671ff01ec6/OutListParameters.xlsx.

Best regards,

Dear Jonkman,

Thanks for your reply, I have decided to adopt the second method you mentioned and only adopt the potential flow theory scheme. However, there is no latest HydroDyn Driver file at present, and errors will always be reported if the old version is used. I have read the source code and found that many formats do not match, so I hope to get a sample file of the new version HydroDyn Driver file.


Dear @Yushun.Fu,

You can find sample HydroDyn driver input files compatible with OpenFAST in the OpenFAST r-test: r-test/modules/hydrodyn at main · OpenFAST/r-test · GitHub.

Best regards,

Dear Jonkman,
For a fixed cylinder with only irregular waves in the environment, I use potential flow theory and Morrison equation to provide Cd, using HydroDyn for calculation, as shown below

---------------------- ENVIRONMENTAL CONDITIONS --------------------------------
     1025   WtrDens        - Water density (kg/m^3)
     250   WtrDpth        - Water depth (meters)
     0   MSL2SWL        - Offset between still-water level and mean sea level (meters) [positive upward; unused when WaveMod = 6; must be zero if PotMod=1 or 2]
---------------------- WAVES ---------------------------------------------------
             2   WaveMod        - Incident wave kinematics model {0: none=still water, 1: regular (periodic), 1P#: regular with user-specified phase, 2: JONSWAP/Pierson-Moskowitz spectrum (irregular), 3: White noise spectrum (irregular), 4: user-defined spectrum from routine UserWaveSpctrm (irregular), 5: Externally generated wave-elevation time series, 6: Externally generated full wave-kinematics time series [option 6 is invalid for PotMod/=0]} (switch)
             0   WaveStMod      - Model for stretching incident wave kinematics to instantaneous free surface {0: none=no stretching, 1: vertical stretching, 2: extrapolation stretching, 3: Wheeler stretching} (switch) [unused when WaveMod=0 or when PotMod/=0]
          13630   WaveTMax       - Analysis time for incident wave calculations (sec) [unused when WaveMod=0; determines WaveDOmega=2Pi/WaveTMax in the IFFT]
          0.25   WaveDT         - Time step for incident wave calculations     (sec) [unused when WaveMod=0; 0.1<=WaveDT<=1.0 recommended; determines WaveOmegaMax=Pi/WaveDT in the IFFT]
             7   WaveHs         - Significant wave height of incident waves (meters) [used only when WaveMod=1, 2, or 3]
            11.9   WaveTp         - Peak-spectral period of incident waves       (sec) [used only when WaveMod=1 or 2]
3.3        WavePkShp      - Peak-shape parameter of incident wave spectrum (-) or DEFAULT (string) [used only when WaveMod=2; use 1.0 for Pierson-Moskowitz]
             0.31   WvLowCOff      - Low  cut-off frequency or lower frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6]
           2.378   WvHiCOff       - High cut-off frequency or upper frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6]
            0   WaveDir        - Incident wave propagation heading direction                         (degrees) [unused when WaveMod=0 or 6]
             0   WaveDirMod     - Directional spreading function {0: none, 1: COS2S}                  (-)       [only used when WaveMod=2,3, or 4]
             1   WaveDirSpread  - Wave direction spreading coefficient ( > 0 )                        (-)       [only used when WaveMod=2,3, or 4 and WaveDirMod=1]
            1   WaveNDir       - Number of wave directions                                           (-)       [only used when WaveMod=2,3, or 4 and WaveDirMod=1; odd number only]
            90   WaveDirRange   - Range of wave directions (full range: WaveDir +/- 1/2*WaveDirRange) (degrees) [only used when WaveMod=2,3,or 4 and WaveDirMod=1]
     123456789   WaveSeed(1)    - First  random seed of incident waves [-2147483648 to 2147483647]    (-)       [unused when WaveMod=0, 5, or 6]
        RANLUX   WaveSeed(2)    - Second random seed of incident waves [-2147483648 to 2147483647] for intrinsic pRNG, or an alternative pRNG: "RanLux"    (-)       [unused when WaveMod=0, 5, or 6]
TRUE             WaveNDAmp      - Flag for normally distributed amplitudes                            (flag)    [only used when WaveMod=2, 3, or 4]
""               WvKinFile      - Root name of externally generated wave data file(s)        (quoted string)    [used only when WaveMod=5 or 6]
             1   NWaveElev      - Number of points where the incident wave elevations can be computed (-)       [maximum of 9 output locations]
             0   WaveElevxi     - List of xi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0]
             0   WaveElevyi     - List of yi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0]
---------------------- 2ND-ORDER WAVES ----------------------------------------- [unused with WaveMod=0 or 6]
False            WvDiffQTF      - Full difference-frequency 2nd-order wave kinematics (flag)
False            WvSumQTF       - Full summation-frequency  2nd-order wave kinematics (flag)
             0   WvLowCOffD     - Low  frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method]
           3.5   WvHiCOffD      - High frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method]
           0.1   WvLowCOffS     - Low  frequency cutoff used in the summation-frequencies  (rad/s) [Only used with a summation-frequency  method]
           3.5   WvHiCOffS      - High frequency cutoff used in the summation-frequencies  (rad/s) [Only used with a summation-frequency  method]
---------------------- CURRENT ------------------------------------------------- [unused with WaveMod=6]
             0   CurrMod        - Current profile model {0: none=no current, 1: standard, 2: user-defined from routine UserCurrent} (switch)
             0   CurrSSV0       - Sub-surface current velocity at still water level  (m/s) [used only when CurrMod=1]
"DEFAULT"        CurrSSDir      - Sub-surface current heading direction (degrees) or DEFAULT (string) [used only when CurrMod=1]
            20   CurrNSRef      - Near-surface current reference depth            (meters) [used only when CurrMod=1]
             0   CurrNSV0       - Near-surface current velocity at still water level (m/s) [used only when CurrMod=1]
             0   CurrNSDir      - Near-surface current heading direction         (degrees) [used only when CurrMod=1]
             0   CurrDIV        - Depth-independent current velocity                 (m/s) [used only when CurrMod=1]
             0   CurrDIDir      - Depth-independent current heading direction    (degrees) [used only when CurrMod=1]
---------------------- FLOATING PLATFORM --------------------------------------- [unused with WaveMod=6]
             1   PotMod         - Potential-flow model {0: none=no potential flow, 1: frequency-to-time-domain transforms based on WAMIT output, 2: fluid-impulse theory (FIT)} (switch)
             1   ExctnMod       - Wave-excitation model {0: no wave-excitation calculation, 1: DFT, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ssexctn INPUT FILE]
             1   RdtnMod        - Radiation memory-effect model {0: no memory-effect calculation, 1: convolution, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ss INPUT FILE]
             60   RdtnTMax       - Analysis time for wave radiation kernel calculations (sec) [only used when PotMod=1 and RdtnMod>0; determines RdtnDOmega=Pi/RdtnTMax in the cosine transform; MAKE SURE THIS IS LONG ENOUGH FOR THE RADIATION IMPULSE RESPONSE FUNCTIONS TO DECAY TO NEAR-ZERO FOR THE GIVEN PLATFORM!]
             0.1        RdtnDT         - Time step for wave radiation kernel calculations (sec) [only used when PotMod=1 and ExctnMod>0 or RdtnMod>0; DT<=RdtnDT<=0.1 recommended; determines RdtnOmegaMax=Pi/RdtnDT in the cosine transform]
             1   NBody          - Number of WAMIT bodies to be used (-) [>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6]
             1   NBodyMod       - Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1]
"HydroData/ConfigC"    PotFile       - Root name of potential-flow model data; WAMIT output files containing the linear, nondimensionalized, hydrostatic restoring matrix (.hst), frequency-dependent hydrodynamic added mass matrix and damping matrix (.1), and frequency- and direction-dependent wave excitation force vector per unit wave amplitude (.3) (quoted string) [1 to NBody if NBodyMod>1] [MAKE SURE THE FREQUENCIES INHERENT IN THESE WAMIT FILES SPAN THE PHYSICALLY-SIGNIFICANT RANGE OF FREQUENCIES FOR THE GIVEN PLATFORM; THEY MUST CONTAIN THE ZERO- AND INFINITE-FREQUENCY LIMITS!]
             1   WAMITULEN      - Characteristic body length scale used to redimensionalize WAMIT output (meters) [1 to NBody if NBodyMod>1] [only used when PotMod=1]
           0.0   PtfmRefxt      - The xt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1]
           0.0   PtfmRefyt      - The yt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1]
           0.0   PtfmRefzt      - The zt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1. If NBodyMod=2,PtfmRefzt=0.0]
           0.0   PtfmRefztRot   - The rotation about zt of the body reference frame(s) from xt/yt (degrees) [1 to NBody] [only used when PotMod=1]
       1583.36   PtfmVol0       - Displaced volume of water when the body is in its undisplaced position (m^3) [1 to NBody] [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!]
           0.0   PtfmCOBxt      - The xt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1]
           0.0   PtfmCOByt      - The yt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1]
---------------------- 2ND-ORDER FLOATING PLATFORM FORCES ---------------------- [unused with WaveMod=0 or 6, or PotMod=0 or 2]
             0   MnDrift        - Mean-drift 2nd-order forces computed                                       {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, MnDrift  /=8]
             0   NewmanApp      - Mean- and slow-drift 2nd-order forces computed with Newman's approximation {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, NewmanApp/=8. Used only when WaveDirMod=0]
             12   DiffQTF        - Full difference-frequency 2nd-order forces computed with full QTF          {0: None; [10, 11, or 12]: WAMIT file to use}          [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero]
             0   SumQTF         - Full summation -frequency 2nd-order forces computed with full QTF          {0: None; [10, 11, or 12]: WAMIT file to use}
---------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING  -------------- [unused with PotMod=0 or 2]
             0   AddF0    - Additional preload (N, N-m) [If NBodyMod=1, one size 6*NBody x 1 vector; if NBodyMod>1, NBody size 6 x 1 vectors]
             0
             0
             0
             0
             0
             0             0             0             0             0             0   AddCLin  - Additional linear stiffness (N/m, N/rad, N-m/m, N-m/rad)                     [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices]
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0   AddBLin  - Additional linear damping(N/(m/s), N/(rad/s), N-m/(m/s), N-m/(rad/s))        [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices]
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0   AddBQuad - Additional quadratic drag(N/(m/s)^2, N/(rad/s)^2, N-m(m/s)^2, N-m/(rad/s)^2) [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices]
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
---------------------- AXIAL COEFFICIENTS --------------------------------------
             2   NAxCoef        - Number of axial coefficients (-)
AxCoefID  AxCd     AxCa     AxCp
   (-)    (-)      (-)      (-)
    1     0.00     0.00     1.00
    2     9.60     0.00     1.00
---------------------- MEMBER JOINTS -------------------------------------------
             2   NJoints        - Number of joints (-)   [must be exactly 0 or at least 2]
JointID   Jointxi     Jointyi     Jointzi  JointAxID   JointOvrlp   [JointOvrlp= 0: do nothing at joint, 1: eliminate overlaps by calculating super member]
   (-)     (m)         (m)         (m)        (-)       (switch)
    1     -28.8675     0.00000   -14.00000      1            0
    2     -28.8675     0.00000     0.00000      1            0
---------------------- MEMBER CROSS-SECTION PROPERTIES -------------------------
             3   NPropSets      - Number of member property sets (-)
PropSetID    PropD         PropThck
   (-)        (m)            (m)
    1        6.50000        0.03000          ! Main Column
    2       12.00000        0.06000          ! Upper Columns
    3       24.00000        0.06000          ! Base Columns
---------------------- SIMPLE HYDRODYNAMIC COEFFICIENTS (model 1) --------------
     SimplCd    SimplCdMG    SimplCa    SimplCaMG    SimplCp    SimplCpMG   SimplAxCd  SimplAxCdMG  SimplAxCa  SimplAxCaMG  SimplAxCp   SimplAxCpMG
       (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)
       0.60        0.60        0.00        0.00        1.00        1.00        1.00        1.00        1.00        1.00        1.00        1.00 
---------------------- DEPTH-BASED HYDRODYNAMIC COEFFICIENTS (model 2) ---------
             0   NCoefDpth       - Number of depth-dependent coefficients (-)
Dpth      DpthCd   DpthCdMG   DpthCa   DpthCaMG       DpthCp   DpthCpMG   DpthAxCd   DpthAxCdMG   DpthAxCa   DpthAxCaMG   DpthAxCp   DpthAxCpMG
(m)       (-)      (-)        (-)      (-)            (-)      (-)        (-)        (-)          (-)        (-)          (-)        (-)
---------------------- MEMBER-BASED HYDRODYNAMIC COEFFICIENTS (model 3) --------
             1   NCoefMembers       - Number of member-based coefficients (-)
MemberID    MemberCd1     MemberCd2    MemberCdMG1   MemberCdMG2    MemberCa1     MemberCa2    MemberCaMG1   MemberCaMG2    MemberCp1     MemberCp2    MemberCpMG1   MemberCpMG2   MemberAxCd1   MemberAxCd2  MemberAxCdMG1 MemberAxCdMG2  MemberAxCa1   MemberAxCa2  MemberAxCaMG1 MemberAxCaMG2  MemberAxCp1  MemberAxCp2   MemberAxCpMG1   MemberAxCpMG2
   (-)         (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)
   1          0.88          0.65          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00         ! Upper Column 1
-------------------- MEMBERS -------------------------------------------------
             1   NMembers       - Number of members (-)
MemberID  MJointID1  MJointID2  MPropSetID1  MPropSetID2  MDivSize   MCoefMod  PropPot   [MCoefMod=1: use simple coeff table, 2: use depth-based coeff table, 3: use member-based coeff table] [ PropPot/=0 if member is modeled with potential-flow theory]
  (-)        (-)        (-)         (-)          (-)        (m)      (switch)   (flag)
    1         1          2           2            2         1.0000      3        TRUE           ! Upper Column 1
---------------------- FILLED MEMBERS ------------------------------------------
             0   NFillGroups     - Number of filled member groups (-) [If FillDens = DEFAULT, then FillDens = WtrDens; FillFSLoc is related to MSL2SWL]
FillNumM FillMList             FillFSLoc     FillDens
(-)      (-)                   (m)           (kg/m^3)
---------------------- MARINE GROWTH -------------------------------------------
             0   NMGDepths      - Number of marine-growth depths specified (-)
MGDpth     MGThck       MGDens
(m)        (m)         (kg/m^3)
---------------------- MEMBER OUTPUT LIST --------------------------------------
             0   NMOutputs      - Number of member outputs (-) [must be < 10]
MemberID   NOutLoc    NodeLocs [NOutLoc < 10; node locations are normalized distance from the start of the member, and must be >=0 and <= 1] [unused if NMOutputs=0]
  (-)        (-)        (-)
---------------------- JOINT OUTPUT LIST ---------------------------------------
             0   NJOutputs      - Number of joint outputs [Must be < 10]
   0           JOutLst        - List of JointIDs which are to be output (-)[unused if NJOutputs=0]
---------------------- OUTPUT --------------------------------------------------
True             HDSum          - Output a summary file [flag]
False            OutAll         - Output all user-specified member and joint loads (only at each member end, not interior locations) [flag]
             3   OutSwtch       - Output requested channels to: [1=Hydrodyn.out, 2=GlueCode.out, 3=both files]
"E16.8e2"       OutFmt         - Output format for numerical results (quoted string) [not checked for validity!]
"A11"            OutSFmt        - Output format for header strings (quoted string) [not checked for validity!]
---------------------- OUTPUT CHANNELS -----------------------------------------
"Wave1Elev"               - Wave elevation at the platform reference point (  0,  0)
"HydroFxi"
"HydroFyi"
"HydroFzi"
"HydroMxi"
"HydroMyi"
"HydroMzi"
"B1Surge"
"B1Sway"
"B1Heave"
"B1Roll"
"B1Pitch"
"B1Yaw"
"B1TVxi"
"B1TVyi"
"B1TVzi"
"B1RVxi"
"B1RVyi"
"B1RVzi"
"B1TAxi"
"B1TAyi"
"B1TAzi"
"B1RAxi"
"B1RAyi"
"B1RAzi"
"B1WvsFxi"
"B1WvsFyi"
"B1WvsFzi"
"B1WvsMxi"
"B1WvsMyi"
"B1WvsMzi"
"B1HDSFxi"
"B1HDSFyi"
"B1HDSFzi"
"B1HDSMxi"
"B1HDSMyi"
"B1HDSMzi"
"B1RdtFxi"
"B1RdtFyi"
"B1RdtFzi"
"B1RdtMxi"
"B1RdtMyi"
"B1RdtMzi"
END of output channels and end of file. (the word "END" must appear in the first 3 columns of this line)
HydroDyn Driver file for OC7.  
Compatible with HydroDyn v3.00
FALSE            Echo                - Echo the input file data (flag)
---------------------- ENVIRONMENTAL CONDITIONS -------------------------------
9.80665          Gravity             - Gravity (m/s^2)
1025             WtrDens             - Water density (kg/m^3)
250              WtrDpth             - Water depth (m)
0                MSL2SWL             - Offset between still-water level and mean sea level (m) [positive upward]
---------------------- HYDRODYN -----------------------------------------------
"LC1.1_HydroDyn.dat" HDInputFile       - Primary HydroDyn input file name (quoted string)
"driver"         OutRootName       - The name which prefixes all HydroDyn generated files (quoted string)
FALSE              Linearize         - Flag to enable linearization
110300               NSteps            - Number of time steps in the simulations (-)
0.1              TimeInterval      - TimeInterval for the simulation (sec)
---------------------- PRP INPUTS (Platform Reference Point) ------------------
0                PRPInputsMod        - Model for the PRP (principal reference point) inputs {0: all inputs are zero for every timestep, 1: steadystate inputs, 2: read inputs from a file (InputsFile)} (switch)
"OpenFAST_DisplacementTimeseries.dat"               PRPInputsFile       - Filename for the PRP HydroDyn input InputsMod = 2 (quoted string)
---------------------- PRP STEADY STATE INPUTS  -------------------------------
1.0   2.0  -3.0  0.0  0.0  0.0    uPRPInSteady         - PRP Steady-state displacements and rotations at the platform reference point (m, rads)
0.0   0.0   0.0  0.0  0.0  0.0    uDotPRPInSteady      - PRP Steady-state translational and rotational velocities at the platform reference point (m/s, rads/s)
0.0   0.0   0.0  0.0  0.0  0.0    uDotDotPRPInSteady   - PRP Steady-state translational and rotational accelerations at the platform reference point (m/s^2, rads/s^2)
---------------------- Waves multipoint elevation output ----------------------                                                                                                                
FALSE            WaveElevSeriesFlag     - T/F flag to calculate the wave elevation field (for movies)
5.0   5.0        WaveElevDX WaveElevDY  - WaveElevSeries spacing -- WaveElevDX WaveElevDY
3   3            WaveElevNX WaveElevNY  - WaveElevSeries points -- WaveElevNX WaveElevNY
END of driver input file

The problem is that I think the forces in the x direction are correct and the forces in the y and z directions are incorrect, and the results are as follows.
image

I used other software to do comparison calculations and found a large gap, as shown below.
image

I think there is something wrong with my hydrodyn setting. The hydrodynamic coefficient is below.

I would like to know where the problem is and hope to get your help
Best regards,

Dear @Yushun.Fu,

I’m not sure. I don’t see anything obviously wrong with your input files.

I would suggest trying to isolate the problem, e.g., do the solutions match if you disable viscous effects and 2nd-order potential-flow theory, leaving only 1st-order potential-flow theory?

Best regards,

Dear Jonkman,
Thanks to your help in solving the previous problem, I adopted the potential flow theory by a distinct WAMIT body for multiple cylinders. But I’m currently encountering a new problem with both single columns and multiple columns that I’m encountering. At present, the force and bending moment in the x direction are on the right side, but the force in the z direction is much different. I output HydroFzi and B1WvsFzi at the same time, corresponding to the mixed model and the potential flow theory alone. Since the cylinder is a rigid body, I assume that the force of HydroFzi at 0,0,0 is equal to the force acting on the cylinder. However, as can be seen in the figure, B1WvsFzi can be correctly matched, but HydroFzi is quite different. I don’t understand the cause of the problem, and I hope to get your help!

------- HydroDyn v2.03.* Input File --------------------------------------------
False            Echo           - Echo the input file data (flag)
---------------------- ENVIRONMENTAL CONDITIONS --------------------------------
     1025   WtrDens        - Water density (kg/m^3)
     250   WtrDpth        - Water depth (meters)
     0   MSL2SWL        - Offset between still-water level and mean sea level (meters) [positive upward; unused when WaveMod = 6; must be zero if PotMod=1 or 2]
---------------------- WAVES ---------------------------------------------------
             2   WaveMod        - Incident wave kinematics model {0: none=still water, 1: regular (periodic), 1P#: regular with user-specified phase, 2: JONSWAP/Pierson-Moskowitz spectrum (irregular), 3: White noise spectrum (irregular), 4: user-defined spectrum from routine UserWaveSpctrm (irregular), 5: Externally generated wave-elevation time series, 6: Externally generated full wave-kinematics time series [option 6 is invalid for PotMod/=0]} (switch)
             0   WaveStMod      - Model for stretching incident wave kinematics to instantaneous free surface {0: none=no stretching, 1: vertical stretching, 2: extrapolation stretching, 3: Wheeler stretching} (switch) [unused when WaveMod=0 or when PotMod/=0]
          13630   WaveTMax       - Analysis time for incident wave calculations (sec) [unused when WaveMod=0; determines WaveDOmega=2Pi/WaveTMax in the IFFT]
          0.25   WaveDT         - Time step for incident wave calculations     (sec) [unused when WaveMod=0; 0.1<=WaveDT<=1.0 recommended; determines WaveOmegaMax=Pi/WaveDT in the IFFT]
             7   WaveHs         - Significant wave height of incident waves (meters) [used only when WaveMod=1, 2, or 3]
            11.9   WaveTp         - Peak-spectral period of incident waves       (sec) [used only when WaveMod=1 or 2]
3.3        WavePkShp      - Peak-shape parameter of incident wave spectrum (-) or DEFAULT (string) [used only when WaveMod=2; use 1.0 for Pierson-Moskowitz]
             0.31   WvLowCOff      - Low  cut-off frequency or lower frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6]
           2.378   WvHiCOff       - High cut-off frequency or upper frequency limit of the wave spectrum beyond which the wave spectrum is zeroed (rad/s) [unused when WaveMod=0, 1, or 6]
            0   WaveDir        - Incident wave propagation heading direction                         (degrees) [unused when WaveMod=0 or 6]
             0   WaveDirMod     - Directional spreading function {0: none, 1: COS2S}                  (-)       [only used when WaveMod=2,3, or 4]
             1   WaveDirSpread  - Wave direction spreading coefficient ( > 0 )                        (-)       [only used when WaveMod=2,3, or 4 and WaveDirMod=1]
            1   WaveNDir       - Number of wave directions                                           (-)       [only used when WaveMod=2,3, or 4 and WaveDirMod=1; odd number only]
            90   WaveDirRange   - Range of wave directions (full range: WaveDir +/- 1/2*WaveDirRange) (degrees) [only used when WaveMod=2,3,or 4 and WaveDirMod=1]
     123456789   WaveSeed(1)    - First  random seed of incident waves [-2147483648 to 2147483647]    (-)       [unused when WaveMod=0, 5, or 6]
        RANLUX   WaveSeed(2)    - Second random seed of incident waves [-2147483648 to 2147483647] for intrinsic pRNG, or an alternative pRNG: "RanLux"    (-)       [unused when WaveMod=0, 5, or 6]
TRUE             WaveNDAmp      - Flag for normally distributed amplitudes                            (flag)    [only used when WaveMod=2, 3, or 4]
""               WvKinFile      - Root name of externally generated wave data file(s)        (quoted string)    [used only when WaveMod=5 or 6]
             1   NWaveElev      - Number of points where the incident wave elevations can be computed (-)       [maximum of 9 output locations]
             0   WaveElevxi     - List of xi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0]
             0   WaveElevyi     - List of yi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0]
---------------------- 2ND-ORDER WAVES ----------------------------------------- [unused with WaveMod=0 or 6]
False            WvDiffQTF      - Full difference-frequency 2nd-order wave kinematics (flag)
False            WvSumQTF       - Full summation-frequency  2nd-order wave kinematics (flag)
             0   WvLowCOffD     - Low  frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method]
           3.5   WvHiCOffD      - High frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method]
           0.1   WvLowCOffS     - Low  frequency cutoff used in the summation-frequencies  (rad/s) [Only used with a summation-frequency  method]
           3.5   WvHiCOffS      - High frequency cutoff used in the summation-frequencies  (rad/s) [Only used with a summation-frequency  method]
---------------------- CURRENT ------------------------------------------------- [unused with WaveMod=6]
             0   CurrMod        - Current profile model {0: none=no current, 1: standard, 2: user-defined from routine UserCurrent} (switch)
             0   CurrSSV0       - Sub-surface current velocity at still water level  (m/s) [used only when CurrMod=1]
"DEFAULT"        CurrSSDir      - Sub-surface current heading direction (degrees) or DEFAULT (string) [used only when CurrMod=1]
            20   CurrNSRef      - Near-surface current reference depth            (meters) [used only when CurrMod=1]
             0   CurrNSV0       - Near-surface current velocity at still water level (m/s) [used only when CurrMod=1]
             0   CurrNSDir      - Near-surface current heading direction         (degrees) [used only when CurrMod=1]
             0   CurrDIV        - Depth-independent current velocity                 (m/s) [used only when CurrMod=1]
             0   CurrDIDir      - Depth-independent current heading direction    (degrees) [used only when CurrMod=1]
---------------------- FLOATING PLATFORM --------------------------------------- [unused with WaveMod=6]
             1   PotMod         - Potential-flow model {0: none=no potential flow, 1: frequency-to-time-domain transforms based on WAMIT output, 2: fluid-impulse theory (FIT)} (switch)
             1   ExctnMod       - Wave-excitation model {0: no wave-excitation calculation, 1: DFT, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ssexctn INPUT FILE]
             1   RdtnMod        - Radiation memory-effect model {0: no memory-effect calculation, 1: convolution, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ss INPUT FILE]
             60   RdtnTMax       - Analysis time for wave radiation kernel calculations (sec) [only used when PotMod=1 and RdtnMod>0; determines RdtnDOmega=Pi/RdtnTMax in the cosine transform; MAKE SURE THIS IS LONG ENOUGH FOR THE RADIATION IMPULSE RESPONSE FUNCTIONS TO DECAY TO NEAR-ZERO FOR THE GIVEN PLATFORM!]
             0.1        RdtnDT         - Time step for wave radiation kernel calculations (sec) [only used when PotMod=1 and ExctnMod>0 or RdtnMod>0; DT<=RdtnDT<=0.1 recommended; determines RdtnOmegaMax=Pi/RdtnDT in the cosine transform]
             1   NBody          - Number of WAMIT bodies to be used (-) [>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6]
             1   NBodyMod       - Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1]
"HydroData/ConfigF"    PotFile       - Root name of potential-flow model data; WAMIT output files containing the linear, nondimensionalized, hydrostatic restoring matrix (.hst), frequency-dependent hydrodynamic added mass matrix and damping matrix (.1), and frequency- and direction-dependent wave excitation force vector per unit wave amplitude (.3) (quoted string) [1 to NBody if NBodyMod>1] [MAKE SURE THE FREQUENCIES INHERENT IN THESE WAMIT FILES SPAN THE PHYSICALLY-SIGNIFICANT RANGE OF FREQUENCIES FOR THE GIVEN PLATFORM; THEY MUST CONTAIN THE ZERO- AND INFINITE-FREQUENCY LIMITS!]
             1   WAMITULEN      - Characteristic body length scale used to redimensionalize WAMIT output (meters) [1 to NBody if NBodyMod>1] [only used when PotMod=1]
           -28.3190   PtfmRefxt      - The xt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1]
           0.0   PtfmRefyt      - The yt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1]
           0.0   PtfmRefzt      - The zt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1. If NBodyMod=2,PtfmRefzt=0.0]
           0.0   PtfmRefztRot   - The rotation about zt of the body reference frame(s) from xt/yt (degrees) [1 to NBody] [only used when PotMod=1]
       4015.31   PtfmVol0       - Displaced volume of water when the body is in its undisplaced position (m^3) [1 to NBody] [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!]
           -0.994725   PtfmCOBxt      - The xt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1]
           0.0   PtfmCOByt      - The yt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1]
---------------------- 2ND-ORDER FLOATING PLATFORM FORCES ---------------------- [unused with WaveMod=0 or 6, or PotMod=0 or 2]
             0   MnDrift        - Mean-drift 2nd-order forces computed                                       {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, MnDrift  /=8]
             0   NewmanApp      - Mean- and slow-drift 2nd-order forces computed with Newman's approximation {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, NewmanApp/=8. Used only when WaveDirMod=0]
             12   DiffQTF        - Full difference-frequency 2nd-order forces computed with full QTF          {0: None; [10, 11, or 12]: WAMIT file to use}          [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero]
             0   SumQTF         - Full summation -frequency 2nd-order forces computed with full QTF          {0: None; [10, 11, or 12]: WAMIT file to use}
---------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING  -------------- [unused with PotMod=0 or 2]
             0   AddF0    - Additional preload (N, N-m) [If NBodyMod=1, one size 6*NBody x 1 vector; if NBodyMod>1, NBody size 6 x 1 vectors]
             0
             0
             0
             0
             0
             0             0             0             0             0             0   AddCLin  - Additional linear stiffness (N/m, N/rad, N-m/m, N-m/rad)                     [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices]
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0   AddBLin  - Additional linear damping(N/(m/s), N/(rad/s), N-m/(m/s), N-m/(rad/s))        [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices]
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0   AddBQuad - Additional quadratic drag(N/(m/s)^2, N/(rad/s)^2, N-m(m/s)^2, N-m/(rad/s)^2) [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices]
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
             0             0             0             0             0             0
---------------------- AXIAL COEFFICIENTS --------------------------------------
             3   NAxCoef        - Number of axial coefficients (-)
AxCoefID  AxCd     AxCa     AxCp
   (-)    (-)      (-)      (-)
    1     0.000     0.00     1.00
    2     2.710     0.00     1.00
    3     1.998     0.00     1.00
---------------------- MEMBER JOINTS -------------------------------------------
             3   NJoints        - Number of joints (-)   [must be exactly 0 or at least 2]
JointID   Jointxi     Jointyi     Jointzi  JointAxID   JointOvrlp   [JointOvrlp= 0: do nothing at joint, 1: eliminate overlaps by calculating super member]
   (-)     (m)         (m)         (m)        (-)       (switch)
    1     -29.8470     0.00000   -17.43640      3            0
    2     -29.3240     0.00000   -11.45920      2            0
    3     -28.3190     0.00000     0.00000      1            0
---------------------- MEMBER CROSS-SECTION PROPERTIES -------------------------
             3   NPropSets      - Number of member property sets (-)
PropSetID    PropD         PropThck
   (-)        (m)            (m)
    1        6.50000        0.03000          ! Main Column
    2       12.00000        0.06000          ! Upper Columns
    3       24.00000        0.06000          ! Base Columns
---------------------- SIMPLE HYDRODYNAMIC COEFFICIENTS (model 1) --------------
     SimplCd    SimplCdMG    SimplCa    SimplCaMG    SimplCp    SimplCpMG   SimplAxCd  SimplAxCdMG  SimplAxCa  SimplAxCaMG  SimplAxCp   SimplAxCpMG
       (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)
       0.60        0.00        0.00        0.00        1.00        0.00        1.00        0.00        1.00        0.00        1.00        0.00 
---------------------- DEPTH-BASED HYDRODYNAMIC COEFFICIENTS (model 2) ---------
             0   NCoefDpth       - Number of depth-dependent coefficients (-)
Dpth      DpthCd   DpthCdMG   DpthCa   DpthCaMG       DpthCp   DpthCpMG   DpthAxCd   DpthAxCdMG   DpthAxCa   DpthAxCaMG   DpthAxCp   DpthAxCpMG
(m)       (-)      (-)        (-)      (-)            (-)      (-)        (-)        (-)          (-)        (-)          (-)        (-)
---------------------- MEMBER-BASED HYDRODYNAMIC COEFFICIENTS (model 3) --------
             2   NCoefMembers       - Number of member-based coefficients (-)
MemberID    MemberCd1     MemberCd2    MemberCdMG1   MemberCdMG2    MemberCa1     MemberCa2    MemberCaMG1   MemberCaMG2    MemberCp1     MemberCp2    MemberCpMG1   MemberCpMG2   MemberAxCd1   MemberAxCd2  MemberAxCdMG1 MemberAxCdMG2  MemberAxCa1   MemberAxCa2  MemberAxCaMG1 MemberAxCaMG2  MemberAxCp1  MemberAxCp2   MemberAxCpMG1   MemberAxCpMG2
   (-)         (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)
   1          0.61         0.68          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00         ! Upper Column 1
   2          2.298        0.61          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00          0.00         ! Heave Plate 1
-------------------- MEMBERS -------------------------------------------------
             2   NMembers       - Number of members (-)
MemberID  MJointID1  MJointID2  MPropSetID1  MPropSetID2  MDivSize   MCoefMod  PropPot   [MCoefMod=1: use simple coeff table, 2: use depth-based coeff table, 3: use member-based coeff table] [ PropPot/=0 if member is modeled with potential-flow theory]
  (-)        (-)        (-)         (-)          (-)        (m)      (switch)   (flag)
    1         2          3           2            2         1.0000      3        TRUE           ! Upper Column 1
    2         1          2           3            3         1.0000      3        TRUE           ! Heave Plate 1
---------------------- FILLED MEMBERS ------------------------------------------
             0   NFillGroups     - Number of filled member groups (-) [If FillDens = DEFAULT, then FillDens = WtrDens; FillFSLoc is related to MSL2SWL]
FillNumM FillMList             FillFSLoc     FillDens
(-)      (-)                   (m)           (kg/m^3)
---------------------- MARINE GROWTH -------------------------------------------
             0   NMGDepths      - Number of marine-growth depths specified (-)
MGDpth     MGThck       MGDens
(m)        (m)         (kg/m^3)
---------------------- MEMBER OUTPUT LIST --------------------------------------
             0   NMOutputs      - Number of member outputs (-) [must be < 10]
MemberID   NOutLoc    NodeLocs [NOutLoc < 10; node locations are normalized distance from the start of the member, and must be >=0 and <= 1] [unused if NMOutputs=0]
  (-)        (-)        (-)
---------------------- JOINT OUTPUT LIST ---------------------------------------
             0   NJOutputs      - Number of joint outputs [Must be < 10]
   0           JOutLst        - List of JointIDs which are to be output (-)[unused if NJOutputs=0]
---------------------- OUTPUT --------------------------------------------------
True             HDSum          - Output a summary file [flag]
False            OutAll         - Output all user-specified member and joint loads (only at each member end, not interior locations) [flag]
             3   OutSwtch       - Output requested channels to: [1=Hydrodyn.out, 2=GlueCode.out, 3=both files]
"E16.8e2"       OutFmt         - Output format for numerical results (quoted string) [not checked for validity!]
"A11"            OutSFmt        - Output format for header strings (quoted string) [not checked for validity!]
---------------------- OUTPUT CHANNELS -----------------------------------------
"Wave1Elev"               - Wave elevation at the platform reference point (  0,  0)
"B1WvsFxi"
"B1WvsFyi"
"B1WvsFzi"
"B1WvsMxi"
"B1WvsMyi"
"B1WvsMzi"
"HydroFxi"
"HydroFyi"
"HydroFzi"
"HydroMxi"
"HydroMyi"
"HydroMzi"
END of output channels and end of file. (the word "END" must appear in the first 3 columns of this line)

One more question I wanted to follow up on, you said that if you want to get forces and moments on three cylinders you can use wamit’s potential flow theory, but I want to also take into account Morrison’s viscosity what options should I output? I observe only HydroFxi, but the output is the force at the origin.
Or I can use the MEMBER OUTPUT LIST to output the viscous drag force on the member: “M1N1FDxi”, “M1N1FDyi”, “M1N1FDzi” and then add the results of the calculated three directions xyz to “B1WvsFxi”, “B1WvsFyi”, “B1WvsFzi”, is it also a solution, just like sima adds Morrison rods to supplement the viscosity.
Look forward to your help!
Best regards,

Dear @Yushun.Fu,

Regarding the difference between B1WvsFzi and HydroFzi, I would guess the big difference you are seeing is the inclusion of the hydrostatic loads, e.g., WtrDens * PtfmVol0 * Gravity in HydroFzi that is not in B1WvsFzi.

HydroDyn does not have a great way currently of outputting the total integrated hydrodynamic loads (hydrostatic, viscous, plus potential flow) that exist separately on each body. You can output the potential-flow loads separately on each body, but the viscous effects are output at each node. So, the solution I would suggesed would be to integrate the strip-theory loads across the member and sum with the potential-flow loads on that body. This could be done in a post-processing step or by changing the HydroDyn source code.

Best regards,