Hydrodynamic implementation
Moderator: Bonnie.Jonkman

 Posts: 34
 Joined: Mon May 04, 2020 3:31 am
 Organization: Politecnico di Torino
 Location: Italia
Hydrodynamic implementation
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 stillwater 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 userspecified phase, 2: JONSWAP/PiersonMoskowitz spectrum (irregular), 3: White noise spectrum (irregular), 4: userdefined spectrum from routine UserWaveSpctrm (irregular), 5: Externally generated waveelevation time series, 6: Externally generated full wavekinematics 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  Peakspectral period of incident waves (sec) [used only when WaveMod=1 or 2]
"DEFAULT" WavePkShp  Peakshape parameter of incident wave spectrum () or DEFAULT (string) [used only when WaveMod=2; use 1.0 for PiersonMoskowitz]
0 WvLowCOff  Low cutoff 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 cutoff 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 xicoordinates 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 yicoordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0]
 2NDORDER WAVES  [unused with WaveMod=0 or 6]
FALSE WvDiffQTF  Full differencefrequency 2ndorder wave kinematics (flag)
FALSE WvSumQTF  Full summationfrequency 2ndorder wave kinematics (flag)
0 WvLowCOffD  Low frequency cutoff used in the differencefrequencies (rad/s) [Only used with a differencefrequency method]
3.5 WvHiCOffD  High frequency cutoff used in the differencefrequencies (rad/s) [Only used with a differencefrequency method]
0.1 WvLowCOffS  Low frequency cutoff used in the summationfrequencies (rad/s) [Only used with a summationfrequency method]
3.5 WvHiCOffS  High frequency cutoff used in the summationfrequencies (rad/s) [Only used with a summationfrequency method]
 CURRENT  [unused with WaveMod=6]
0 CurrMod  Current profile model {0: none=no current, 1: standard, 2: userdefined from routine UserCurrent} (switch)
0 CurrSSV0  Subsurface current velocity at still water level (m/s) [used only when CurrMod=1]
"DEFAULT" CurrSSDir  Subsurface current heading direction (degrees) or DEFAULT (string) [used only when CurrMod=1]
20 CurrNSRef  Nearsurface current reference depth (meters) [used only when CurrMod=1]
0 CurrNSV0  Nearsurface current velocity at still water level (m/s) [used only when CurrMod=1]
0 CurrNSDir  Nearsurface current heading direction (degrees) [used only when CurrMod=1]
0 CurrDIV  Depthindependent current velocity (m/s) [used only when CurrMod=1]
0 CurrDIDir  Depthindependent current heading direction (degrees) [used only when CurrMod=1]
 FLOATING PLATFORM  [unused with WaveMod=6]
1 PotMod  Potentialflow model {0: none=no potential flow, 1: frequencytotimedomain transforms based on WAMIT output, 2: fluidimpulse theory (FIT)} (switch)
"HydroData/Spar" PotFile  Root name of potentialflow model data; WAMIT output files containing the linear, nondimensionalized, hydrostatic restoring matrix (.hst), frequencydependent hydrodynamic added mass matrix and damping matrix (.1), and frequency and directiondependent wave excitation force vector per unit wave amplitude (.3) (quoted string) [MAKE SURE THE FREQUENCIES INHERENT IN THESE WAMIT FILES SPAN THE PHYSICALLYSIGNIFICANT RANGE OF FREQUENCIES FOR THE GIVEN PLATFORM; THEY MUST CONTAIN THE ZERO AND INFINITEFREQUENCY 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 memoryeffect model {0: no memoryeffect calculation, 1: convolution, 2: statespace} (switch) [only used when PotMod=1; STATESPACE 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 NEARZERO 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]
 2NDORDER FLOATING PLATFORM FORCES  [unused with WaveMod=0 or 6, or PotMod=0 or 2]
0 MnDrift  Meandrift 2ndorder forces computed {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be nonzero]
0 NewmanApp  Mean and slowdrift 2ndorder 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 nonzero. Used only when WaveDirMod=0]
0 DiffQTF  Full differencefrequency 2ndorder forces computed with full QTF {0: None; [10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be nonzero]
0 SumQTF  Full summation frequency 2ndorder 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, Nm)
0 0 0 0 0 0 AddCLin  Additional linear stiffness (N/m, N/rad, Nm/m, Nm/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), Nm/(m/s), Nm/(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, Nm(m/s)^2, Nm/(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 CROSSSECTION 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
 DEPTHBASED HYDRODYNAMIC COEFFICIENTS (model 2) 
0 NCoefDpth  Number of depthdependent coefficients ()
Dpth DpthCd DpthCdMG DpthCa DpthCaMG DpthCp DpthCpMG DpthAxCa DpthAxCaMG DpthAxCp DpthAxCpMG
(m) () () () () () () () () () ()
 MEMBERBASED HYDRODYNAMIC COEFFICIENTS (model 3) 
0 NCoefMembers  Number of memberbased 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 depthbased coeff table, 3: use memberbased coeff table] [ PropPot/=0 if member is modeled with potentialflow 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 marinegrowth 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 userspecified 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!]
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 stillwater 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 userspecified phase, 2: JONSWAP/PiersonMoskowitz spectrum (irregular), 3: White noise spectrum (irregular), 4: userdefined spectrum from routine UserWaveSpctrm (irregular), 5: Externally generated waveelevation time series, 6: Externally generated full wavekinematics 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  Peakspectral period of incident waves (sec) [used only when WaveMod=1 or 2]
"DEFAULT" WavePkShp  Peakshape parameter of incident wave spectrum () or DEFAULT (string) [used only when WaveMod=2; use 1.0 for PiersonMoskowitz]
0 WvLowCOff  Low cutoff 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 cutoff 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 xicoordinates 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 yicoordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0]
 2NDORDER WAVES  [unused with WaveMod=0 or 6]
FALSE WvDiffQTF  Full differencefrequency 2ndorder wave kinematics (flag)
FALSE WvSumQTF  Full summationfrequency 2ndorder wave kinematics (flag)
0 WvLowCOffD  Low frequency cutoff used in the differencefrequencies (rad/s) [Only used with a differencefrequency method]
3.5 WvHiCOffD  High frequency cutoff used in the differencefrequencies (rad/s) [Only used with a differencefrequency method]
0.1 WvLowCOffS  Low frequency cutoff used in the summationfrequencies (rad/s) [Only used with a summationfrequency method]
3.5 WvHiCOffS  High frequency cutoff used in the summationfrequencies (rad/s) [Only used with a summationfrequency method]
 CURRENT  [unused with WaveMod=6]
0 CurrMod  Current profile model {0: none=no current, 1: standard, 2: userdefined from routine UserCurrent} (switch)
0 CurrSSV0  Subsurface current velocity at still water level (m/s) [used only when CurrMod=1]
"DEFAULT" CurrSSDir  Subsurface current heading direction (degrees) or DEFAULT (string) [used only when CurrMod=1]
20 CurrNSRef  Nearsurface current reference depth (meters) [used only when CurrMod=1]
0 CurrNSV0  Nearsurface current velocity at still water level (m/s) [used only when CurrMod=1]
0 CurrNSDir  Nearsurface current heading direction (degrees) [used only when CurrMod=1]
0 CurrDIV  Depthindependent current velocity (m/s) [used only when CurrMod=1]
0 CurrDIDir  Depthindependent current heading direction (degrees) [used only when CurrMod=1]
 FLOATING PLATFORM  [unused with WaveMod=6]
1 PotMod  Potentialflow model {0: none=no potential flow, 1: frequencytotimedomain transforms based on WAMIT output, 2: fluidimpulse theory (FIT)} (switch)
"HydroData/Spar" PotFile  Root name of potentialflow model data; WAMIT output files containing the linear, nondimensionalized, hydrostatic restoring matrix (.hst), frequencydependent hydrodynamic added mass matrix and damping matrix (.1), and frequency and directiondependent wave excitation force vector per unit wave amplitude (.3) (quoted string) [MAKE SURE THE FREQUENCIES INHERENT IN THESE WAMIT FILES SPAN THE PHYSICALLYSIGNIFICANT RANGE OF FREQUENCIES FOR THE GIVEN PLATFORM; THEY MUST CONTAIN THE ZERO AND INFINITEFREQUENCY 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 memoryeffect model {0: no memoryeffect calculation, 1: convolution, 2: statespace} (switch) [only used when PotMod=1; STATESPACE 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 NEARZERO 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]
 2NDORDER FLOATING PLATFORM FORCES  [unused with WaveMod=0 or 6, or PotMod=0 or 2]
0 MnDrift  Meandrift 2ndorder forces computed {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be nonzero]
0 NewmanApp  Mean and slowdrift 2ndorder 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 nonzero. Used only when WaveDirMod=0]
0 DiffQTF  Full differencefrequency 2ndorder forces computed with full QTF {0: None; [10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be nonzero]
0 SumQTF  Full summation frequency 2ndorder 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, Nm)
0 0 0 0 0 0 AddCLin  Additional linear stiffness (N/m, N/rad, Nm/m, Nm/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), Nm/(m/s), Nm/(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, Nm(m/s)^2, Nm/(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 CROSSSECTION 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
 DEPTHBASED HYDRODYNAMIC COEFFICIENTS (model 2) 
0 NCoefDpth  Number of depthdependent coefficients ()
Dpth DpthCd DpthCdMG DpthCa DpthCaMG DpthCp DpthCpMG DpthAxCa DpthAxCaMG DpthAxCp DpthAxCpMG
(m) () () () () () () () () () ()
 MEMBERBASED HYDRODYNAMIC COEFFICIENTS (model 3) 
0 NCoefMembers  Number of memberbased 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 depthbased coeff table, 3: use memberbased coeff table] [ PropPot/=0 if member is modeled with potentialflow 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 marinegrowth 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 userspecified 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!]
 Attachments

 fig3.jpeg (139.88 KiB) Viewed 2215 times

 fig2.jpeg (92.67 KiB) Viewed 2215 times

 fig1.jpeg (28.97 KiB) Viewed 2215 times

 Posts: 5771
 Joined: Thu Nov 03, 2005 4:38 pm
 Location: Boulder, CO
 Contact:
Re: Hydrodynamic implementation
Dear Riccardo,
I'm not sure I understand what you are plotting to really comment.
I would suggest simplifying the model to debug, e.g., do you get the results you expect for a stillwater simulation (WaveMod = 0)?
One thing I see missing in your block is the gravitational restoring from body weight, unless you've included that in your hydrostatic stiffness matrix (which is not where that term is accounted for in FAST). But this will effect the moments, not the forces.
Best regards,
I'm not sure I understand what you are plotting to really comment.
I would suggest simplifying the model to debug, e.g., do you get the results you expect for a stillwater simulation (WaveMod = 0)?
One thing I see missing in your block is the gravitational restoring from body weight, unless you've included that in your hydrostatic stiffness matrix (which is not where that term is accounted for in FAST). But this will effect the moments, not the forces.
Best regards,
Jason Jonkman, Ph.D.
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov

 Posts: 34
 Joined: Mon May 04, 2020 3:31 am
 Organization: Politecnico di Torino
 Location: Italia
Re: Hydrodynamic implementation
Dear Jason,
Thanks for your prompt reply. I will try to put wavemod = 0. My initial question can be summarized as follows: for hydrodynamics I use the following Cummins law, written using the FAST outputs with irregular waves and assuming no forces from the turbine:
M a = ((RdntFxi, RdntFyi, ... RdntMzi) + (HdrStcFxi, HdrStcFyi, ... HdrStcMzi) + (WavesFxi, WavesFyi, ... WavesMzi)) + Fmoor + Mg = (HydroFxi, HydroFyi, ... HydroMzi) + Fmoor + Mg
where a = acceleration in the 6 dof, M mass matrix.
I was also able to verify equality
(HydroFxi, HydroFyi, ... HydroMzi) = (RdntFxi, RdntFyi, ... RdntMzi) + (HdrStcFxi, HdrStcFyi, ... HdrStcMzi) + (WavesFxi, WavesFyi, ... WavesMzi)
What is missing besides the gravitational restoring from body weight (which as you said affects only the moments)?
Thank you for your help. Best regards,
Riccardo.
Thanks for your prompt reply. I will try to put wavemod = 0. My initial question can be summarized as follows: for hydrodynamics I use the following Cummins law, written using the FAST outputs with irregular waves and assuming no forces from the turbine:
M a = ((RdntFxi, RdntFyi, ... RdntMzi) + (HdrStcFxi, HdrStcFyi, ... HdrStcMzi) + (WavesFxi, WavesFyi, ... WavesMzi)) + Fmoor + Mg = (HydroFxi, HydroFyi, ... HydroMzi) + Fmoor + Mg
where a = acceleration in the 6 dof, M mass matrix.
I was also able to verify equality
(HydroFxi, HydroFyi, ... HydroMzi) = (RdntFxi, RdntFyi, ... RdntMzi) + (HdrStcFxi, HdrStcFyi, ... HdrStcMzi) + (WavesFxi, WavesFyi, ... WavesMzi)
What is missing besides the gravitational restoring from body weight (which as you said affects only the moments)?
Thank you for your help. Best regards,
Riccardo.

 Posts: 5771
 Joined: Thu Nov 03, 2005 4:38 pm
 Location: Boulder, CO
 Contact:
Re: Hydrodynamic implementation
Dear Riccardo,
I don't believe you are missing any terms. Are you using FAST to solve for the body acceleration? If so, then FAST intrinsically accounts for the body inertia forces and body gravitational forces, so, you shouldn't need to account for them in your Simulink model.
Best regards,
I don't believe you are missing any terms. Are you using FAST to solve for the body acceleration? If so, then FAST intrinsically accounts for the body inertia forces and body gravitational forces, so, you shouldn't need to account for them in your Simulink model.
Best regards,
Jason Jonkman, Ph.D.
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov

 Posts: 34
 Joined: Mon May 04, 2020 3:31 am
 Organization: Politecnico di Torino
 Location: Italia
Re: Hydrodynamic implementation
Dear Jason,
So, for example, you confirm that:
PtfmTAxi = (HydroFxi + Fmoorx) / m
where m = 8.0660481545E + 006 kg?
Because if so, my problem must be the transition from the tension T of the lines to the Fmoorx force.
Best regards,
Riccardo.
So, for example, you confirm that:
PtfmTAxi = (HydroFxi + Fmoorx) / m
where m = 8.0660481545E + 006 kg?
Because if so, my problem must be the transition from the tension T of the lines to the Fmoorx force.
Best regards,
Riccardo.

 Posts: 5771
 Joined: Thu Nov 03, 2005 4:38 pm
 Location: Boulder, CO
 Contact:
Re: Hydrodynamic implementation
Dear Riccardo,
Yes, I agree. That said, HydroFxi includes the addedmass effect, and so, its calculation assumes that you match the corresponding PtfmTAxi correctly.
Best regards,
Yes, I agree. That said, HydroFxi includes the addedmass effect, and so, its calculation assumes that you match the corresponding PtfmTAxi correctly.
Best regards,
Jason Jonkman, Ph.D.
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov

 Posts: 34
 Joined: Mon May 04, 2020 3:31 am
 Organization: Politecnico di Torino
 Location: Italia
Re: Hydrodynamic implementation
Dear Jason,
I tried to check the equality:
m * 'PtfmTAxi' = 'HydroFxi' + ('Fx [1]' + 'Fx [2]' + 'Fx [3]' + 'Fx [4]' + 'Fx [5]' + 'Fx [6 ] '), with m = 8066048.15450000 kg and the trends of' PtfmTAxi ',' HydroFxi 'and' Fx [..] 'taken from the FAST test reported previously.
Equality doesn't match (as you can see in figure 1), I can't understand why.
Best regards,
Riccardo
I tried to check the equality:
m * 'PtfmTAxi' = 'HydroFxi' + ('Fx [1]' + 'Fx [2]' + 'Fx [3]' + 'Fx [4]' + 'Fx [5]' + 'Fx [6 ] '), with m = 8066048.15450000 kg and the trends of' PtfmTAxi ',' HydroFxi 'and' Fx [..] 'taken from the FAST test reported previously.
Equality doesn't match (as you can see in figure 1), I can't understand why.
Best regards,
Riccardo
 Attachments

 figure 1.png (122.45 KiB) Viewed 2157 times

 Posts: 5771
 Joined: Thu Nov 03, 2005 4:38 pm
 Location: Boulder, CO
 Contact:
Re: Hydrodynamic implementation
Dear Riccardo,
What do you mean by Fx[i] in your equation? Which MAP++ output are you referring to?
Another, problem, which I missed yesterday, is that:
is not correct. The equation a = F/m only works if the force (F) is applied at the center of mass and the acceleration (a) is the translational acceleration of the center of mass. In this case, the platform reference point (0,0,0) is not the center of mass of the full system. As such, the applied moments will also impact the translational acceleration of the platform reference point.
Best regards,
What do you mean by Fx[i] in your equation? Which MAP++ output are you referring to?
Another, problem, which I missed yesterday, is that:
PtfmTAxi = (HydroFxi + Fmoorx) / m
is not correct. The equation a = F/m only works if the force (F) is applied at the center of mass and the acceleration (a) is the translational acceleration of the center of mass. In this case, the platform reference point (0,0,0) is not the center of mass of the full system. As such, the applied moments will also impact the translational acceleration of the platform reference point.
Best regards,
Jason Jonkman, Ph.D.
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov

 Posts: 34
 Joined: Mon May 04, 2020 3:31 am
 Organization: Politecnico di Torino
 Location: Italia
Re: Hydrodynamic implementation
Dear Jason,
I modified my simulink model as you suggested, checking the equation at still water level (SWL) (0,0,0):
M_swl * qdd_swl = 'HydroFxi' + Fmoor + Restmom & gravity
where is it:
 'HydroFxi' is the release of the FAST test in the 6 dof
 Fmoor is the contribution of the mooring in the 6 dof, where the forces are given by the sum of the 6 lines (example, 'Fx [1]' + 'Fx [2]' + 'Fx [3]' + 'Fx [4 ] '+' Fx [5] '+' Fx [6] '), the moments are obtained by multiplying force by arm.
 Restmom & gravity contains the contribution of gravity and restoring moment [0, 0, mg, mg * COG * rx, mg * COG * ry, 0]
 qdd_swl is acceleration
 M_swl is the mass matrix shown in the figure in my previous post.
My problem is that qdd_swl thus obtained does not correspond to the corresponding outputs of FAST, in particular:
 'PtfmRAxi' and 'PtfmRAyi' do not correspond to qdd_swl (rx) and qdd_swl (ry). This also causes problems with qdd_swl (x) and qdd_swl (y) reported at the CM (therefore 'PtfmTAxi' and 'PtfmTAyi'). The transport of the accelerations were made in this way: 'PtfmTAxi' = qdd_swl (x) + qdd_swl (ry) * 78 does not return, however I have verified that instead 'PtfmTAxi' = qdd_swl (x) + 'PtfmRAyi '* 78 matches.
 'PtfmTAzi' = qdd_swl (z) matches.
These observations show that the problem is not in translations but in rotations as rxdd and rydd are wrong and therefore make xdd and ydd wrong. My suspicion is that I use the M matrix incorrectly, or that I am wrong in the frame of reference.
What do you think about it? Are all the loads used by me in the (SWL)?
In the figure is represented what i have explained: ok means that fast and my model matches, no is where the problems appear. As you can see, the problems are relative to rotations, so there are two alternatives:
 Moments of inertia in the M mass matrix are not correct
 All loads are not in the reference frame I supposed (0,0,0).
Best regards,
Riccardo.
I modified my simulink model as you suggested, checking the equation at still water level (SWL) (0,0,0):
M_swl * qdd_swl = 'HydroFxi' + Fmoor + Restmom & gravity
where is it:
 'HydroFxi' is the release of the FAST test in the 6 dof
 Fmoor is the contribution of the mooring in the 6 dof, where the forces are given by the sum of the 6 lines (example, 'Fx [1]' + 'Fx [2]' + 'Fx [3]' + 'Fx [4 ] '+' Fx [5] '+' Fx [6] '), the moments are obtained by multiplying force by arm.
 Restmom & gravity contains the contribution of gravity and restoring moment [0, 0, mg, mg * COG * rx, mg * COG * ry, 0]
 qdd_swl is acceleration
 M_swl is the mass matrix shown in the figure in my previous post.
My problem is that qdd_swl thus obtained does not correspond to the corresponding outputs of FAST, in particular:
 'PtfmRAxi' and 'PtfmRAyi' do not correspond to qdd_swl (rx) and qdd_swl (ry). This also causes problems with qdd_swl (x) and qdd_swl (y) reported at the CM (therefore 'PtfmTAxi' and 'PtfmTAyi'). The transport of the accelerations were made in this way: 'PtfmTAxi' = qdd_swl (x) + qdd_swl (ry) * 78 does not return, however I have verified that instead 'PtfmTAxi' = qdd_swl (x) + 'PtfmRAyi '* 78 matches.
 'PtfmTAzi' = qdd_swl (z) matches.
These observations show that the problem is not in translations but in rotations as rxdd and rydd are wrong and therefore make xdd and ydd wrong. My suspicion is that I use the M matrix incorrectly, or that I am wrong in the frame of reference.
What do you think about it? Are all the loads used by me in the (SWL)?
In the figure is represented what i have explained: ok means that fast and my model matches, no is where the problems appear. As you can see, the problems are relative to rotations, so there are two alternatives:
 Moments of inertia in the M mass matrix are not correct
 All loads are not in the reference frame I supposed (0,0,0).
Best regards,
Riccardo.
 Attachments

 figure 1.jpg (72.03 KiB) Viewed 2126 times

 Posts: 5771
 Joined: Thu Nov 03, 2005 4:38 pm
 Location: Boulder, CO
 Contact:
Re: Hydrodynamic implementation
Dear Riccardo,
Sorry, but I'm not really following your nomenclature or logic. You seem to be writing an equation of motion about the SWL, but then you say
which looks like your are assuming qdd_swl is about the center of mass (at 78m below SWL for the OC3Hywind spar). I also don't see the center of mass offsets in the mass matrix in the post above.
I should note that your equations of motion also miss the nonlinear inertial terms, e.g. omega x I dot omega, where I is the inertial dyadic, omega is the angular velocity, x is a cross product, and dot is the dot product (this term is included in ElastoDyn).
In the end, I'm not really sure I understand what you want to do to offer a suggested path forward.
Best regards,
Sorry, but I'm not really following your nomenclature or logic. You seem to be writing an equation of motion about the SWL, but then you say
'PtfmTAxi' = qdd_swl (x) + qdd_swl (ry) * 78
which looks like your are assuming qdd_swl is about the center of mass (at 78m below SWL for the OC3Hywind spar). I also don't see the center of mass offsets in the mass matrix in the post above.
I should note that your equations of motion also miss the nonlinear inertial terms, e.g. omega x I dot omega, where I is the inertial dyadic, omega is the angular velocity, x is a cross product, and dot is the dot product (this term is included in ElastoDyn).
In the end, I'm not really sure I understand what you want to do to offer a suggested path forward.
Best regards,
Jason Jonkman, Ph.D.
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov

 Posts: 34
 Joined: Mon May 04, 2020 3:31 am
 Organization: Politecnico di Torino
 Location: Italia
Re: Hydrodynamic implementation
Dear Jason,
My problem is simply to know the exact equation from which the accelerations are obtained. Figure 1 shows the equation I am using, according to the reference system (0,0,0) (which is supposed inertial). I remember you that I set CompAero=0 and wind speed=0 to don't take into account any loads dued to tower and turbine.
The mass matrix is shown in figure 2.
Also keep in mind that the MAP outputs were added for the mooring:
Fxm = 'Fx [1]' + 'Fx [2]' + 'Fx [3]' + 'Fx [4]' + 'Fx [5]' + 'Fx [6]',
Fym = 'Fy [1]' + 'Fy [2]' + 'Fy [3]' + 'Fy [4]' + 'Fy [5]' + 'Fy [6]'
FZM = 'Fz [1]' + 'Fz [2]' + 'Fz [3]' + 'Fz [4]' + 'Fz [5]' + 'Fz [6]'
and Mxm, Mym, Mzm are obtained by making the forces of each line for the arms.
At the moment I'm not getting the accelerations rxdd, rzdd and then ydd, while rydd, xdd and zdd are right (as you can see in figure 3).
What loads did I forget?
I hope the nomenclature is clearer this time, best regards.
Riccardo.
My problem is simply to know the exact equation from which the accelerations are obtained. Figure 1 shows the equation I am using, according to the reference system (0,0,0) (which is supposed inertial). I remember you that I set CompAero=0 and wind speed=0 to don't take into account any loads dued to tower and turbine.
The mass matrix is shown in figure 2.
Also keep in mind that the MAP outputs were added for the mooring:
Fxm = 'Fx [1]' + 'Fx [2]' + 'Fx [3]' + 'Fx [4]' + 'Fx [5]' + 'Fx [6]',
Fym = 'Fy [1]' + 'Fy [2]' + 'Fy [3]' + 'Fy [4]' + 'Fy [5]' + 'Fy [6]'
FZM = 'Fz [1]' + 'Fz [2]' + 'Fz [3]' + 'Fz [4]' + 'Fz [5]' + 'Fz [6]'
and Mxm, Mym, Mzm are obtained by making the forces of each line for the arms.
At the moment I'm not getting the accelerations rxdd, rzdd and then ydd, while rydd, xdd and zdd are right (as you can see in figure 3).
What loads did I forget?
I hope the nomenclature is clearer this time, best regards.
Riccardo.
 Attachments

 figure3.jpeg (255.53 KiB) Viewed 2084 times

 Figure 2.jpeg (30.66 KiB) Viewed 2084 times

 Figure 1.jpg (75.13 KiB) Viewed 2084 times

 Posts: 5771
 Joined: Thu Nov 03, 2005 4:38 pm
 Location: Boulder, CO
 Contact:
Re: Hydrodynamic implementation
Dear Riccardo,
Your results appear to be much closer now. ydd, rxdd, and rzdd are very small in this basically 2D motion problem. xdd, zdd, and rydd are now quite close.
I still see a few terms missing from your equations of motion, but these may be small for this case:
I hope that helps.
Best regards,
Your results appear to be much closer now. ydd, rxdd, and rzdd are very small in this basically 2D motion problem. xdd, zdd, and rydd are now quite close.
I still see a few terms missing from your equations of motion, but these may be small for this case:
 There should be a small center of mass offset in the X direction due to the overhanging mass of the RNA.
 Your equations of motion are missing a couple of the nonlinear inertial terms, i.e., omega x ( omega x r_cm*mass ) and omega x I dot omega (most of which are described in my prior post).
 In general, the mass matrix in the ElastoDyn module depends on the displacement, e.g., the center of mass location and inertias will change in time as the system rotates.
I hope that helps.
Best regards,
Jason Jonkman, Ph.D.
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov

 Posts: 34
 Joined: Mon May 04, 2020 3:31 am
 Organization: Politecnico di Torino
 Location: Italia
Re: Hydrodynamic implementation
Dear Jason,
Thanks for the reply.
I tried to make the changes you suggested, however these have not yet solved the problem.
Nonlinear inertial terms (Figure 1), i.e., omega x (omega x r_cm * mass) and omega x I dot omega have little effect (around 5 N or 5Nm for each force / moment except Fz where there are peaks of 800N). Can you confirm that omega = [rxd, ryd, rzd]?
I tried to multiply the accelerations obtained by FAST by the mass matrix M, obtaining the resulting forces acting in the 6dof (Figure 2): as you can see it takes moments on Mx and Mz of order 10 ^ 4, I can't understand how they are caused since nonlinear terms have such a low incidence.
I modified the mass matrix, translating it for each timestep in relation to the movements of the platform:
I obtained the mass matrix relative to the center of mass through the following inverse transformation: Mcg = (TransMat^T)^1 * M_swl * TransMat^1 (where TransMat is the one indicated in this topic "https://wind.nrel.gov/forum/wind/viewtopic.php?f=4&t=1257&hilit=mass+matrix+spar" where the inputs of the rotation matrix are those in still water). Then the mass matrix (in 0 0 0) relative to the position of the system is obtained by applying the direct transformation M_swl = TransMat^T * Mcg * TransMat, using the current positions of Cg as the input of TransMat.
Even with this change there are no improvements, Mx and Mz of my model still remain too low.
Best regards,
Riccardo
Thanks for the reply.
I tried to make the changes you suggested, however these have not yet solved the problem.
Nonlinear inertial terms (Figure 1), i.e., omega x (omega x r_cm * mass) and omega x I dot omega have little effect (around 5 N or 5Nm for each force / moment except Fz where there are peaks of 800N). Can you confirm that omega = [rxd, ryd, rzd]?
I tried to multiply the accelerations obtained by FAST by the mass matrix M, obtaining the resulting forces acting in the 6dof (Figure 2): as you can see it takes moments on Mx and Mz of order 10 ^ 4, I can't understand how they are caused since nonlinear terms have such a low incidence.
I modified the mass matrix, translating it for each timestep in relation to the movements of the platform:
I obtained the mass matrix relative to the center of mass through the following inverse transformation: Mcg = (TransMat^T)^1 * M_swl * TransMat^1 (where TransMat is the one indicated in this topic "https://wind.nrel.gov/forum/wind/viewtopic.php?f=4&t=1257&hilit=mass+matrix+spar" where the inputs of the rotation matrix are those in still water). Then the mass matrix (in 0 0 0) relative to the position of the system is obtained by applying the direct transformation M_swl = TransMat^T * Mcg * TransMat, using the current positions of Cg as the input of TransMat.
Even with this change there are no improvements, Mx and Mz of my model still remain too low.
Best regards,
Riccardo
 Attachments

 Figure 1.jpg (63.22 KiB) Viewed 2066 times

 Figure 2.jpeg (254.45 KiB) Viewed 2066 times

 Posts: 5771
 Joined: Thu Nov 03, 2005 4:38 pm
 Location: Boulder, CO
 Contact:
Re: Hydrodynamic implementation
Dear Riccardo,
Yes, I meant that omega = [ rxd, ryd, rzd ]^T.
You haven't stated what values you are using for r_cmM or I, so, I can't confirm them; of course, these are timedependent in FAST, dependent on the rotation of the platform.
I'm not really sure I can comment more.
Best regards,
Yes, I meant that omega = [ rxd, ryd, rzd ]^T.
You haven't stated what values you are using for r_cmM or I, so, I can't confirm them; of course, these are timedependent in FAST, dependent on the rotation of the platform.
I'm not really sure I can comment more.
Best regards,
Jason Jonkman, Ph.D.
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov
Senior Engineer  National Wind Technology Center (NWTC)
National Renewable Energy Laboratory (NREL)
15013 Denver West Parkway  Golden, CO 80401
+1 (303) 384 – 7026  Fax: +1 (303) 384 – 6901
nwtc.nrel.gov

 Posts: 34
 Joined: Mon May 04, 2020 3:31 am
 Organization: Politecnico di Torino
 Location: Italia
Re: Hydrodynamic implementation
Dear Jason,
Thanks for your reply. The value of r_cmM is:
par.hull.FDA.hydrostatic.r_cmM=[0 0 par.hull.FDA.hydrostatic.M(1,5)]=[0,0,78*8.0660481545E+006];
While I is a matrix that contain only the values of inertia of the mass matrix (3X3 matrix from index (4,4) to (6,6)).
However I tried to implement a 'new' mass matrix similar to the previous one, but with only diagonal inertia values (figure 1). In this case my results are very similar to those FAST (figure 2). But as you can see from figure 2, there is an offset especially in xdd and rydd, which I think is due to an offset of 1.5e^6 N*m in the mean value of the moment along y axis "My(Total)" from zero (Figure3).
I chose to remove the offdiagonal terms in M, seeing that 'My' mainly influenced rx and rz, creating values with too large amplitudes. Is it a coincidence that by doing this you get forms very close to the results of FAST? Or is it connected to the fact that we have inexplicably a very large offset of My which therefore does not oscillate around 0 and affects more on rx and rz?
I continue to suspect that there is something wrong with my equations for moments, in particular the moment you turn around y for me is given by:
My (TOTAL) = HydroMyi + My_restoring + My_moor + My_nonlinear
where, looking at figure 3, it is evident that My_moor and My_nonlinear has little effect, while mean (HydroMyi) = 3.7 * 10 ^ 6 and mean (My_restoring) = 5.2 * 10 ^ 6.
The offset is therefore about the difference of the offsets between My_restoring and HydroMyi (1.5 * 10 ^ 6).
To have accelerations that oscillate around 0 I expect My (TOTAL) to oscillate around 0, or have a much smaller offset.
So I wonder if there is another contribution to My or if
My_restoring = mass * g * COG * ry is right (where mass = 8.066 * 10 ^ 6 kg, COG = 89.9155 m).
Thank you a lot for your help. best regards.
Riccardo.
Thanks for your reply. The value of r_cmM is:
par.hull.FDA.hydrostatic.r_cmM=[0 0 par.hull.FDA.hydrostatic.M(1,5)]=[0,0,78*8.0660481545E+006];
While I is a matrix that contain only the values of inertia of the mass matrix (3X3 matrix from index (4,4) to (6,6)).
However I tried to implement a 'new' mass matrix similar to the previous one, but with only diagonal inertia values (figure 1). In this case my results are very similar to those FAST (figure 2). But as you can see from figure 2, there is an offset especially in xdd and rydd, which I think is due to an offset of 1.5e^6 N*m in the mean value of the moment along y axis "My(Total)" from zero (Figure3).
I chose to remove the offdiagonal terms in M, seeing that 'My' mainly influenced rx and rz, creating values with too large amplitudes. Is it a coincidence that by doing this you get forms very close to the results of FAST? Or is it connected to the fact that we have inexplicably a very large offset of My which therefore does not oscillate around 0 and affects more on rx and rz?
I continue to suspect that there is something wrong with my equations for moments, in particular the moment you turn around y for me is given by:
My (TOTAL) = HydroMyi + My_restoring + My_moor + My_nonlinear
where, looking at figure 3, it is evident that My_moor and My_nonlinear has little effect, while mean (HydroMyi) = 3.7 * 10 ^ 6 and mean (My_restoring) = 5.2 * 10 ^ 6.
The offset is therefore about the difference of the offsets between My_restoring and HydroMyi (1.5 * 10 ^ 6).
To have accelerations that oscillate around 0 I expect My (TOTAL) to oscillate around 0, or have a much smaller offset.
So I wonder if there is another contribution to My or if
My_restoring = mass * g * COG * ry is right (where mass = 8.066 * 10 ^ 6 kg, COG = 89.9155 m).
Thank you a lot for your help. best regards.
Riccardo.
 Attachments

 figure3.jpeg (53.71 KiB) Viewed 2033 times

 Figure 2.jpeg (226.3 KiB) Viewed 2033 times

 figure1.jpeg (27.35 KiB) Viewed 2033 times
Who is online
Users browsing this forum: No registered users and 1 guest