hydrodynamic analysis of multi body platform

dear jonkman

I’m interested in combined wave energy convertor and floating wind turbine systems. I don’t have any access to WAMIT so I will use ANSYS AQWA for modeling and frequency domain analysis of this multi body system. is it possible to get result for this multi body system from Hydrodyn? how can I use Hydrodyne for this purpose ?

thanks a lot

best regards

Dear Mehdi,

I know some panel codes (e.g., WAMIT) can model wave-body interaction between multiple bodies such that there is a direct interaction of the hydrodynamic wave scattering and radiation loads between the bodies. However, FAST/HydroDyn have not been developed to support this feature yet. Including this feature would take a bit of modification to HydroDyn and the addition of new structural degrees of freedom.

Best regards,

Dear junkman

Thanks a lot for your kindly replying. as I understood you mean I should modify Hydrodyn source code.
as I don’t have much time, is it possible for me to modify Hydrodyn ??? can you help me to overcome this project?

Thanks

Best Regards

Dear Mehdi,

As I said, you would need to modify both HydroDyn and the structural model to include the hydrodynamic loads and structural DOFs of the additional floating bodies. I suspect this is quite a bit of work. FAST is open source, so, you are certainly free to do it, but NREL does not have sufficient resources to offer much guidance.

Best regards,

Hi Jason,

Apologies for posting on an old thread but thought this was relevant. I am simulating a catamaran type floating platform to support a 5MW NREL reference wind turbine. I am observing an instability in sway which in turn creates an instability in roll and yaw modes. My model is a simplified catamaran with two hulls spaced apart with a plate on top that supports the turbine in the middle. Because the plate sits on top of the two hulls and thus out of water, does hydrodyn account for this connection? Is this why I am seeing an instability because of multibody interaction and OpenFASTs incapability to model multibody structures? When I disable Sway DOF the model completes furthermore.

Kind regards,

Josh

Dear Josh,

NREL recently introduced the capability in OpenFAST to model floating substructures as flexible bodies with multiple potential-flow (WAMIT) bodies, but I suspect you are not using this capability yet (this functionality was introduced in the following pull request, which has been merged into the dev branch of OpenFAST, but is not yet in main: github.com/OpenFAST/openfast/pull/537).

Assuming you are not using this new capability, the floating substructure is modeled as a single six-degree of freedom rigid body, even if the WAMIT solution or strip-theory members in HydroDyn have two distinct pontoons that are physically connected by a plate above the water.

I don’t think I can guess why your model is going unstable without knowing more about your model set up.

Best regards,

Dear Jason,

Thank you for point out this capability, I was not aware of this. In this situation though I am simulating the platform as a single rigid body.

If a multibody floating substructure was modelled as a single rigid body that should not make a simulation unstable, only less accurate as hydrodynamic interaction between the two bodies are not accounted for meaning there most likely is an error in my model?

My own model is a Catamaran-type FOWT, 70m L x 45m W, each demi hull is 10 x 10 x 70. As a starting point I used similar dimensions to the ITI Energy Barge. Therefore, my model has the similar draft, freeboard, volume and mass and mooring system (except this has been adapted as my platform is slightly longer, I made sure similar initial tensions were obtained). The wind turbine itself is identical and has the same tower base height and I have not altered these input files i.e. AeroDyn and ServoDyn. I can send some results over and my OpenFAST model if required, what would be the best way to do this?

Kind regards,

Dear Josh,

You haven’t really described enough about your model set up or obtained results for me to comment, but it sounds like your model is not behaving as you expect. Adding floater flexibility would only complicate the model, not help with instability.

Can you clarify what you mean by “instability”?

I would first suggest simplifying to debug. Does your model maintain hydrostatic equilibrium if you disable aerodynamics (CompAero = 0) and use still water (WaveMod = 0)? If so, what feature, when enabled, results in the unstable response you are describing?

Best regards,

Dear Jason,

My apologies for lack of thoroughness. I have attempted to debug myself. I initially ran a simulation T = 4000s, a turbulent wind condition at rated wind speed with an irregular wave (Ts = 5.01s, Hs = 1.94m). I applied a rotor speed of 12.1 rpm as a initial condition.

After the transient effect period wears off, for sway and roll modes they begin to grow in amplitude exponentially. This was my first observation of the instability. So I then ran a regular wave case only with same period and wave height as the irregular wave and reset initial conditions. I have attached the rigid body modes of this simulation. I thought this was the error when introducing a wave climate, so to confirm this I ran a wind only condition too with WaveMod = 0, however the same instability occurs.

I have carried out a free decay analysis and run a simulation with the conditions you have suggest and the platform reached a steady state equilibrium for 4000s. It is only when I introduce a wind/wave climate that the instability occurs.

Kind regards,

Josh

Note this is correct roll response from regular wave case, as in the previous image was the sway response.
Capture2.PNG

Dear Josh,

OK, thanks for clarifying. I see the unstable behaviour, but is odd to me that it does not appear until about 3 hours into the simulation. Is there something (e.g., controller related) that changes at this point? It is not common to wrong simulations this long; what is your reason for doing so?

I gather from your post that the instability is wind-driven. Can you confirm that you do not see any signs of instability for simulations without aerodynamics?

Best regards,

Dear Jason,

I have solved the instability. However I am not sure of the reasoning. I have attached two HydroDyn input files. The first that caused the instability I removed all the data from the strip-theory section such as axial coefficients, member coefficients so on and so forth. I presumed this would not affect my model (clearly I was wrong) as using potential theory to model the hydrodynamics. The second keeps the default values from the ITI Energy Barge. Do you have any idea as to why this would cause an instability?

NOTE: Instabilities occurred after 1300s not 13000s, it was an improper format in excel.

Kind regards,

Josh

------- HydroDyn v2.03.* Input File --------------------------------------------
NREL 5.0 MW offshore baseline floating platform HydroDyn input properties for the ITI Barge with 4m draft.
False Echo - Echo the input file data (flag)
---------------------- ENVIRONMENTAL CONDITIONS --------------------------------
1025 WtrDens - Water density (kg/m^3)
150 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 ---------------------------------------------------
0 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]
4000 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]
1.94 WaveHs - Significant wave height of incident waves (meters) [used only when WaveMod=1, 2, or 3]
5.01 WaveTp - Peak-spectral period of incident waves (sec) [used only when WaveMod=1 or 2]
“1.0” WavePkShp - Peak-shape parameter of incident wave spectrum (-) or DEFAULT (string) [used only when WaveMod=2; use 1.0 for Pierson-Moskowitz]
0 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]
500 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]
1011121314 WaveSeed(2) - Second random seed of incident waves [-2147483648 to 2147483647] (-) [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)
“…/5MW_Baseline/HydroData/WAMITFILES” 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) [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) [only used when PotMod=1]
5500.5874 PtfmVol0 - Displaced volume of water when the platform is in its undisplaced position (m^3) [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!]
0 PtfmCOBxt - The xt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1]
0 PtfmCOByt - The yt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1]
1 ExctnMod - Wave Excitation model {0: None, 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!]
“DEFAULT” RdtnDT - Time step for wave radiation kernel calculations (sec) [only used when PotMod=1 and RdtnMod=1; DT<=RdtnDT<=0.1 recommended; determines RdtnOmegaMax=Pi/RdtnDT in the cosine transform]
---------------------- 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]
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. Used only when WaveDirMod=0]
0 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}
---------------------- FLOATING PLATFORM FORCE FLAGS -------------------------- [unused with WaveMod=6]
True PtfmSgF - Platform horizontal surge translation force (flag) or DEFAULT
True PtfmSwF - Platform horizontal sway translation force (flag) or DEFAULT
True PtfmHvF - Platform vertical heave translation force (flag) or DEFAULT
True PtfmRF - Platform roll tilt rotation force (flag) or DEFAULT
True PtfmPF - Platform pitch tilt rotation force (flag) or DEFAULT
True PtfmYF - Platform yaw rotation force (flag) or DEFAULT
---------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING --------------
0 0 0 0 0 0 AddF0 - Additional preload (N, N-m)
0 0 0 0 0 0 AddCLin - Additional linear stiffness (N/m, N/rad, N-m/m, N-m/rad)
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))
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)
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 --------------------------------------
0 NAxCoef - Number of axial coefficients (-)
AxCoefID AxCd AxCa AxCp
(-) (-) (-) (-)
---------------------- MEMBER JOINTS -------------------------------------------
0 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)
---------------------- MEMBER CROSS-SECTION PROPERTIES -------------------------
0 NPropSets - Number of member property sets (-)
PropSetID PropD PropThck
(-) (m) (m)
---------------------- SIMPLE HYDRODYNAMIC COEFFICIENTS (model 1) --------------
SimplCd SimplCdMG SimplCa SimplCaMG SimplCp SimplCpMG SimplAxCa SimplAxCaMG SimplAxCp SimplAxCpMG
(-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
1.00 1.00 0.00 0.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 DpthAxCa DpthAxCaMG DpthAxCp DpthAxCpMG
(m) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
---------------------- MEMBER-BASED HYDRODYNAMIC COEFFICIENTS (model 3) --------
0 NCoefMembers - Number of member-based coefficients (-)
MemberID MemberCd1 MemberCd2 MemberCdMG1 MemberCdMG2 MemberCa1 MemberCa2 MemberCaMG1 MemberCaMG2 MemberCp1 MemberCp2 MemberCpMG1 MemberCpMG2 MemberAxCa1 MemberAxCa2 MemberAxCaMG1 MemberAxCaMG2 MemberAxCp1 MemberAxCp2 MemberAxCpMG1 MemberAxCpMG2
(-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
-------------------- MEMBERS -------------------------------------------------
0 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)
---------------------- 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]
2 OutSwtch - Output requested channels to: [1=Hydrodyn.out, 2=GlueCode.out, 3=both files]
“ES11.4e2” 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)
END of output channels and end of file. (the word “END” must appear in the first 3 columns of this line)

------- HydroDyn v2.03.* Input File --------------------------------------------
NREL 5.0 MW offshore baseline floating platform HydroDyn input properties for the ITI Barge with 4m draft.
False Echo - Echo the input file data (flag)
---------------------- ENVIRONMENTAL CONDITIONS --------------------------------
1025 WtrDens - Water density (kg/m^3)
150 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 ---------------------------------------------------
1 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]
4000 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]
1.94 WaveHs - Significant wave height of incident waves (meters) [used only when WaveMod=1, 2, or 3]
5.01 WaveTp - Peak-spectral period of incident waves (sec) [used only when WaveMod=1 or 2]
“DEFAULT” WavePkShp - Peak-shape parameter of incident wave spectrum (-) or DEFAULT (string) [used only when WaveMod=2; use 1.0 for Pierson-Moskowitz]
0 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]
500 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]
1011121314 WaveSeed(2) - Second random seed of incident waves [-2147483648 to 2147483647] (-) [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)
“…/5MW_Baseline/HydroData/WAMITFILES” 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) [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) [only used when PotMod=1]
5500.5874 PtfmVol0 - Displaced volume of water when the platform is in its undisplaced position (m^3) [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!]
0 PtfmCOBxt - The xt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1]
0 PtfmCOByt - The yt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1]
0 ExctnMod - Wave Excitation model {0: None, 1: DFT, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ssexctn INPUT FILE]
0 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!]
“DEFAULT” RdtnDT - Time step for wave radiation kernel calculations (sec) [only used when PotMod=1 and RdtnMod=1; DT<=RdtnDT<=0.1 recommended; determines RdtnOmegaMax=Pi/RdtnDT in the cosine transform]
---------------------- 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]
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. Used only when WaveDirMod=0]
0 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}
---------------------- FLOATING PLATFORM FORCE FLAGS -------------------------- [unused with WaveMod=6]
True PtfmSgF - Platform horizontal surge translation force (flag) or DEFAULT
True PtfmSwF - Platform horizontal sway translation force (flag) or DEFAULT
True PtfmHvF - Platform vertical heave translation force (flag) or DEFAULT
True PtfmRF - Platform roll tilt rotation force (flag) or DEFAULT
True PtfmPF - Platform pitch tilt rotation force (flag) or DEFAULT
True PtfmYF - Platform yaw rotation force (flag) or DEFAULT
---------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING --------------
0 0 0 0 0 0 AddF0 - Additional preload (N, N-m)
0 0 0 0 0 0 AddCLin - Additional linear stiffness (N/m, N/rad, N-m/m, N-m/rad)
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))
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)
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 --------------------------------------
1 NAxCoef - Number of axial coefficients (-)
AxCoefID AxCd AxCa AxCp
(-) (-) (-) (-)
1 0.00 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 0.00000 0.00000 -4.00000 1 0
2 0.00000 0.00000 0.00000 1 0
---------------------- MEMBER CROSS-SECTION PROPERTIES -------------------------
1 NPropSets - Number of member property sets (-)
PropSetID PropD PropThck
(-) (m) (m)
1 45.13520 0.00010
---------------------- SIMPLE HYDRODYNAMIC COEFFICIENTS (model 1) --------------
SimplCd SimplCdMG SimplCa SimplCaMG SimplCp SimplCpMG SimplAxCa SimplAxCaMG SimplAxCp SimplAxCpMG
(-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
1.00 1.00 0.00 0.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 DpthAxCa DpthAxCaMG DpthAxCp DpthAxCpMG
(m) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
---------------------- MEMBER-BASED HYDRODYNAMIC COEFFICIENTS (model 3) --------
0 NCoefMembers - Number of member-based coefficients (-)
MemberID MemberCd1 MemberCd2 MemberCdMG1 MemberCdMG2 MemberCa1 MemberCa2 MemberCaMG1 MemberCaMG2 MemberCp1 MemberCp2 MemberCpMG1 MemberCpMG2 MemberAxCa1 MemberAxCa2 MemberAxCaMG1 MemberAxCaMG2 MemberAxCp1 MemberAxCp2 MemberAxCpMG1 MemberAxCpMG2
(-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
-------------------- 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 1 1 0.5000 1 TRUE
---------------------- 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]
2 OutSwtch - Output requested channels to: [1=Hydrodyn.out, 2=GlueCode.out, 3=both files]
“ES11.4e2” 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)
END of output channels and end of file. (the word “END” must appear in the first 3 columns of this line)

Dear Josh,

Well, the only real difference between these two models that I see from my quick skim is the inclusion of transverse viscous drag on the 4-m long, 45-m diameter strip-theory member in the second model. This will add some damping not included in your potential-flow-only solution in the first model. Perhaps this small amount of damping is eliminating the instability.

Please note that I see WaveMod=0 (still water) in the first model and =1 (regular waves) in the second model, but I assume that change is not related to the differences you say were causing the instability.

Best regards,

Dear Jason,

I have pinpointed the instability to the RdtnMod. You can see in the first Hydrodyn input file that both ExctnMod and RdtnMod = 1 where as in the second one they both = 0. I ran two more simulations the first with ExctMod =1 and RdntMod = 0 and ExctMod=RdntMod=1. Only the first simulation with ExctMod = 1 and RdntMod = 0 could finish. The second simulation observed the same instability.

Therefore, without the radiation memory-effect model the simulations can run. This is where my knowledge of hydrodynamics falls short. Do you know why this is?

Kind regards,

Josh

Dear Josh,

RdtnMod controls how the wave-radiation “memory effect” (damping) in the potential-flow solution of HydroDyn is accounted for. RdtnMod = 0 disables the memory effect altogether; RdtnMod = 1 makes use of numerical convolution.

Normally I would expect RdtnMod = 1 to add damping to the system, but if it is causing instability, this could be tied to the WAMIT data (through the damping matrix, B, stored in the *.1 file) you are using. Is the data in the B matrix smooth, does it start at zero at zero frequency, are you computing the data to high frequency (say 5 rad/s), and does the data converge to zero at infinite frequency?

The B matrix is converted to a wave-radiation kernel via a cosine transform that is used in the convolution within HydroDyn; I’m curious if this is smooth as well–it should oscillate but converge to zero as time increases. In our recent upgrades to the HydroDyn module from github.com/OpenFAST/openfast/pull/537 (now merged into the dev branch of OpenFAST, but not yet the main branch), the wave-radiation kernel is now written to the HydroDyn summary file; before this version, the kernel could be accessed from the source code, but is not written to a file.

Best regards,

Dear Jason,

It does indeed start at zero frequency, the maximum frequency due to limitations of AQWA mesh is 4rad/s and the data does converge to infinite frequency I believe. My only suspicion is that for a couple of high frequencies there is some negative damping terms, could this be the source of the instability even though they are very small in magnitude?

I have attached the radiation damping graphs for my model.

I will look into the kernel.

Kind regards,



Dear Jason,

Please see attached. For all rigid body modes they all converge to zero albeit it some take longer than others. I will increase RdtnTMax in Hydrodyn to see if this solves the problem.

Kind regards,

Josh


Dear Josh,

Regarding the damping plots, I see the damping converging to 0 at low frequency. Most curves also converge to zero at high frequency, but this is not the case for B(6,6) (yaw-yaw), at least by 4 rad/s. I’m also a bit surprised by the lack of smoothness in the data and very distinct peaks, but perhaps this is a result of the discretization you used or something you are expecting for your catamaran? It may help to manually smooth the data, e.g., to ensure it tapers to zero at high frequency.

Regarding the kernel plots, are these the values computed within HydroDyn or are these something you calculated yourself? I don’t see the results decaying to zero by 100 s, which looks a bit odd to me (we often set RdnTMax = 60 s, but that assumes the kernel has reached zero by then). Does the kernel change if the damping data is smoothed forced down to zero at high frequency?

Best regards,

Dear Jason,

By increasing the RdtnTMax the simulation can now complete and the instability has gone.

The catamaran shape is very basic to say the least and has not been hydrodynamically optimized. I will put your comments across to my supervisor. And thank you for suggesting manually smoothing, I did wonder this at one point but did not know if that was a “thing”.

Regarding the kernel plots, I actually extracted them from WEC-Sim . I used this a while back and it was a fast way for a rough representation. I increased the RdntTMax to 100s.

I will manually smooth the damping coefficients and see the effect. Will keep you posted.

Many thanks for your help.

Kind regards,

Josh