Dear Jason,

I’m trying to implement the hydrodynamics of the OC3 spar buoy on simulink.

To verify that my model is correct, I verified it by doing a test with the same input with FAST, but finding differences.

I therefore created a simulink in which I insert positions, speeds and accelerations detected in the Fast test, checking the forces exiting each block (figure 2). In this way I observed the following things:

- The radiation forces coming out of my model correspond to the outputs of Fast (‘RdtnFxi’, ‘RdtnFyi’, ‘RdtnFzi’, .'RdtnMxi ‘,.’ RdtnMyi ‘,’ RdtnMzi ')
- The hydrostatic forces exiting my model correspond to the Fast outputs (‘HdrStcFxi’, ‘HdrStcFyi’, …, ‘HdrStcMzi’)
- I used the wave forces of the Fast test ‘WavesFxi’, ‘WavesFyi’ …, ‘WavesMzi’ as input to my model
- I checked the mooring forces, making sure that the tensions on the 6 lines of my model corresponded to those coming out of MAP (T [1], T [2], … T [6]). However, the 3 forces and the 3 moments resulting in the global reference system are exiting the MOORING block.
- I applied gravity along z, using the mass indicated in the topic viewtopic.php? F = 3 & t = 748 as the mass

-I used the same topic to build the mass matrix M (see figure 1) which, multiplied by the accelerations of the test, should give the inertial loads.

The problem is that the resultant of these forces does not result in 0 (figure 3 on the left). Figure 3 on the right, shows the trend of the forces without the contribution of inertia (i.e. the only contribution that I have not been able to compare with the FAST outputs).

For now I would like to focus on the forces, since there is likely to be some translation problems of the reference systems along z (between Fmoor and Fhydro)

My question is whether I have forgotten any contributions.

In the follow is also the input file of Hydrodyn used to carry out the simulation in FAST:

------- HydroDyn v2.03.* Input File --------------------------------------------

NREL 5.0 MW offshore baseline floating platform HydroDyn input properties for the OC3 Hywind.

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]

3630 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.25 WaveHs - Significant wave height of incident waves (meters) [used only when WaveMod=1, 2, or 3]

4.5 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)

“HydroData/Spar” 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]

8029.21 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]

2 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; 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.05 RdtnDT - Time step for wave radiation kernel calculations (sec) [only used when PotMod=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 -------------------------------------------

4 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 -120.00000 1 0

2 0.00000 0.00000 -12.00000 1 0

3 0.00000 0.00000 -4.00000 1 0

4 0.00000 0.00000 10.00000 1 0

---------------------- MEMBER CROSS-SECTION PROPERTIES -------------------------

2 NPropSets - Number of member property sets (-)

PropSetID PropD PropThck

(-) (m) (m)

1 9.40000 0.00010

2 6.50000 0.00010

---------------------- SIMPLE HYDRODYNAMIC COEFFICIENTS (model 1) --------------

SimplCd SimplCdMG SimplCa SimplCaMG SimplCp SimplCpMG SimplAxCa SimplAxCaMG SimplAxCp SimplAxCpMG

(-) (-) (-) (-) (-) (-) (-) (-) (-) (-)

0.0 0.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 -------------------------------------------------

3 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

2 2 3 1 2 0.5000 1 TRUE

3 3 4 2 2 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!]