# Frequencies of Full system and moor stiffness matrix

Dear All，

I searched on the Forum about frequencies of floated wind turbine but sitll have some confusions. I construct a spar type floated offshore wind turbine(FOWT) model with Euler-Lagrange Equation. 14 degree of freedoms(DOFs) were selected to describe the motion of FOWT which are flap-wise and edge-wise motions of 3 blades, fore-aft and side to side motions of tower top and 6 motions of floated platform. All motions are defined based on the reference point at the still water lever(SWL). Finally, I linearize the Euler-Lagrange Equation by introducing assumption of small deformation and neglecting high order terms and get M_sym, C_sym, K_sym matrix.

1 Here come the question, I conduct a modal analysis about the system and find the frequencies couldn’t match natural frequencies of OpenFAST with same DOFs enabled. Could you give me some advices? It should be noted that the frequencies of OpenFAST are obtained from the linearization. More details are shown below:
K = K_sym + K_moor + abs(K_Hydrostatic)

Platform : 0.00806 0.00806 0.0330 0.0381 0.0381 0.0395
Tower: 0.399 0.404
Blade: 0.697 0.720 0.725 1.210 1.210 1.168

OpenFAST with Morison formula (Potmod=0 in HydroDyn.dat and without any wave and wind)
Platform: 0.00807 0.00807 0.0312 0.0312 0.03294 0.0394
Tower: 0.467 0.470
Blade: 0.677 0.703 0.706 1.0878 1.089 1.145

K_moor
41180 0 0 0 -2821000 0
0 41180 0 2821000 0 0
0 0 11940 0 0 0
0 2821000 0 311100000 0 0
-2821000 0 0 0 311100000 0
0 0 0 0 0 11560000

K_Hydrostatic
0 0 0 0 0 0
0 0 0 0 0 0
0 0 333550.146410852 0 0 0
0 0 0 -5008322528.86244 0 0
0 0 0 0 -5008322528.86244 0
0 0 0 0 0 0

2 Could I get the stiffness matrix of the mooring system with different reference point? There reason for the wrong frequencies might be the coupling of DOFs when the reference point is at still water level. Howerer, I searched on the forum and tried many times to get the stiffness matrix by pymap++, but I failed in Anaconda Environment Configuration. Is there another way to obtain the stiffness matrix?

Dear @Xing.Tan,

Regarding (1), it is difficult to know why your model is not matching OpenFAST, given that I don’t know anything about your model. Regardless, your results are not that different, which is good. It may help to compare core elements of the mass and stiffness matrices directly rather than just the natural frequencies to better isolate the differences.

Regarding (2), the OpenFAST linearization process is also generating the mooring stiffness matrix and you could extract the matrix from that.

Best regards,

Dear Dr. Jonkman

I search on the forum and find that matlabtoolbox (GitHub - OpenFAST/matlab-toolbox: Collection of Matlab tools developed for use with OpenFAST)can extract the system matrix. However the toolbox requires OpenFAST 2.3. I couldn’t find r-test (Releases · OpenFAST/r-test · GitHub) which could match the OpenFAST 2.3 code. Could you tell me where can I download the corresponding r-test?

Best regards,

Dear @Xing.Tan,

Why do you say that the MATLAB toolbox requires OpenFAST v2.3? You should be able to use this toolbox with other versions of OpenFAST and generally recommend using the most up-to-date version of OpenFAST unless you have a strong reason to use an older version.

The “Releases” page does not point to all of the old releases, but all of the releases have been tagged; e.g., you can find the r-test release of OpenFAST v2.3 here: GitHub - OpenFAST/r-test at v2.3.0.

Best regards,

Dear Dr. Jonkman

1 I’m not familiar with matlabtoolbox, I search the readme.md from(GitHub - OpenFAST/matlab-toolbox: Collection of Matlab tools developed for use with OpenFAST). The three command require OpenFAST 2.3. Maybe only these commands shown requires OpenFAST 2.3?
Campbell/examples/runCampbell.m
Campbell/examples/runCampbell_Trim.m
Campbell/examples/runCampbell_Trim.m
This script requires OpenFAST 2.3 dev (August 2020).

2 Another question is that the formats of linearization file generated from OpenFAST 3.5.1 is different to that of Test01.lin file provided by CertTest as shown below. And also the GetMats command from MBC fails to read both linearization file. (I’m not familiar with matlabtoolbox, did I use the wrong command to extract mooring stiffness matrix?)

Part from Test01.lin ( Line 8 ~ Line 15)
Some Useful Information:

Type of steady state solution found Trimmed collective blade pitch (TrimCase = 3)
Azimuth-average rotor speed, RotSpeed (rad/s) 4.36681E+00
Period of steady state solution (sec) 1.43885E+00
Iterations needed to find steady state solution 34
Part form .lin file from OpenFAST 3.5.1 (Line 7~Line 17)
Simulation information:
Simulation time: 0.0000 s
Wind Speed: 0.0000 m/s
Number of continuous states: 28
Number of discrete states: 0
Number of constraint states: 0
Number of inputs: 7
Number of outputs: 154
Jacobians included in this file? No

3 Now I obtain the map.lin file from OpenFAST. Must I install welib to extract mooring stiffness matrix from map.lin file with reference to this article?( How to output ptfmFx/Fy/Fz/Mx/My/Mz - Wind & Water / Structural Analysis - NREL Forum)
Or is there a command provided in matlabtoolbox to achieve the matrix extraction purpose?

4 The last question is that should I reset the coordinates of fix point and vessel point (in MAP.dat) when I change the reference point (PtfmRefzt) of ElastoDyn.dat? For example, PtfmRefzt = -70 means depth of fix point and vessel point need to be -250 and -70 if the water depth is 320m since doc from (Input File — MAP++ 1.15 documentation (map-plus-plus.readthedocs.io))
Global z coordinate if node is FIX or CONNECT [m].
Local z cooridinate relative to vessel if node is VESSEL [m].

1 fix 400 0 depth 0 0 # # #
2 connect #90 #0 #-80 0 0 0 0 0
3 vessel 20 20 -10 0 0 # # #

Best regards and thank you in advance,
Xing Tan

Dear @Xing.Tan,

Here are my responses:

1. I think the documentation that refers to OpenFAST v2.3 is a bit outdated. The code should generally work with newer versions of OpenFAST (maybe small changes need to be made for different versions).
2. The old GetMats.m script applies to FAST v7 and earlier; the new fx_getMats.m script applies to OpenFAST.
3. You can use pyMAP to derive the linearized mooring stiffness matrix from standalone MAP++. If you are linearizing an OpenFAST model with MAP++ enabled, the linearized output from OpenFAST will include the stiffness of the mooring system.
4. The MAP++ inputs are defined relative to the location (0,0,0) where the undisplaced tower centerline intersects the still water level. These inputs should be independent of `PtfmRefzt` in ElastoDyn.

Best regards,

Dear Dr. Jonkman,

I’m sorry for my late response. I spent time to extract mooring stiffness matrix from pymap and I can extract the mooring stiffness matrix now. the difference of the mooring stiffness matrix as shown below is within the margin of error when I set the reference point at (0,0,0).

Mooring stiffness matrix from pymap
41181 0 0 0 -2815428 0
0 41181 0 2815430 0 0
0 0 11941 0 0 0
0 2815431 0 310785098 0 -49
-2815429 0 0 0 310784963 0
0 0 0 -81 0 11566656

Mooring stiffness matrix from OpenFAST
41180 0 0 0 -2821000 0
0 41180 0 2821000 0 0
0 0 11940 0 0 0
0 2821000 0 311100000 0 0
-2821000 0 0 0 311100000 0
0 0 0 0 0 11560000

1 Then I obtain the natural frequencies in my linearization model. Here comes the question. The frequency of roll DOF will vary when I change the origin of global coordinate such as a point at still water level (SWL) or a point below SWL as well as pitch DOF. I list the frequencies of floated foundation . What has to be noted is that the frequencies masked as Morison is extracted from OpenFAST linearization module, and I recalculate mass matrix and stiffness matrix when the origin coordinate changes in both models. Morison formula is used to calculate the hydrodynamic loads with PotMod=0 and PropPot = false in Hydro.dat file. Little differences can be found only when the origin of coordinate is at SWL which confuses me. Does the coupling of surge and pitch modes cause this difference(OC3 Spar natural frequency - #6 by Jason.Jonkman)?However there are differences of frequencies when the origin of coordinates is attached at the farilead. It’s hard but could you give me some suggestions?

Origin of global coordinate: at SWL:
Morison 0.008076962 0.008076965 0.031520257 0.031536235 0.032642968 0.039389928
My model 0.00806388 0.00806388 0.067199128 0.067214905 0.03295249 0.039381796

Origin of global coordinate: 70m below SWL:
Morison 0.008076128 0.008076131 0.031553544 0.031569608 0.032642928 0.039389973
My model 0.008063163 0.008063164 0.023876158 0.023882588 0.032952562 0.039394495

Origin of global coordinate: 78.01m below SWL:
Morsion 0.008076128 0.008076131 0.031553544 0.031569608 0.032642928 0.039389973
My model 0.008063644 0.008063646 0.033586929 0.033597137 0.032952548 0.039395842

2 Extra damping and stiffness are provided when potential-flow solution is applied to calculate hydrodynamic loads with ExctnMod=1 and RdtnMod =1. And there aren’t any extra stiffness and damping when Morison formula is used in OpenFAST. Is it necessary to add extra stiffness and damping in my own model in the late simulation when I use Morison formula since it seems that it’s difficult to take extra damping and stiffness into consideration in OpenFAST when Morison formual is used?

Best regards and thank you in advance,

Xing Tan

Dear @Xing.Tan,

I’m not really sure I understand your first question. My understanding is that your “Morison” result is from OpenFAST with different locations of the platform reference point in ElastoDyn and the results show that natural frequencies are not sensitive to platform reference point. Whereas in your own “my model” results, the natural frequencies are sensitive to platform reference point. Is that correct? If so, I’m not sure I can comment why your model is not behaving as expected. I would suggest comparing the models matrix by matrix between the two models (mass and stiffness matrices).

I’m not really sure I understand your second question either; please clarify.

Best regards,

Dear Dr. Jonkman,

Your description about the first question is correct. And I extracted the mass matrix and stiffness matrix and compared the elements of system matrix of two model (OpenFAST and dof6). Only DOFs of floated platform was enabled in OpenFAST. The dof6 model only contain 6 DOFs of platform.

When the origin of coordinate was set at the still water level (SWL), the biggest difference was from the stiffness matrix. So the stiffness matrix K_OpenFAST (from OpenFAST) and M_dof6 (mass matrix from dof6 model) were used to get the eigenfrequency. As a result, the eigenfrequency could match the results from OpenFAST. So I could make a conclusion that the stiffness matrix cause the problem. I’m sorry for that I can’t give a detailed description since it seems that I’m not authorized to upload a Spreadsheet.

K_OpenFAST from OpenFAST
4.12E+04 1.24E-12 9.45E+01 3.67E-02 -4.83E+06 -9.62E-05
5.67E-07 4.12E+04 1.43E-05 4.83E+06 9.32E-02 3.05E+03
-2.07E+00 3.28E-14 3.45E+05 8.34E-03 -8.76E+03 -1.36E-06
6.50E-05 2.82E+06 -6.59E-03 1.47E+09 2.20E+02 -1.96E+06
-2.81E+06 -1.69E-06 2.17E+03 -7.16E+00 1.47E+09 -9.77E-02
-5.93E-05 1.86E+03 -4.95E-06 4.62E+04 1.67E-01 1.16E+07
K_dof6 from dof6 (a model only contain 6 DOFs of platform)
4.12E+04 0.00E+00 0.00E+00 0.00E+00 -2.82E+06 0.00E+00
0.00E+00 4.12E+04 0.00E+00 2.82E+06 0.00E+00 0.00E+00
0.00E+00 0.00E+00 3.45E+05 0.00E+00 0.00E+00 0.00E+00
0.00E+00 2.82E+06 0.00E+00 5.32E+09 0.00E+00 0.00E+00
-2.82E+06 0.00E+00 0.00E+00 0.00E+00 5.32E+09 0.00E+00
0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 1.16E+07

Frequencies ---- eig(K_OpenFAST,M_dof6)
8.09E-03 8.09E-03 3.19E-02 3.19E-02 3.29E-02 3.94E-02
Frequencies — from linearization module of OpenFAST
8.08E-03 8.08E-03 3.15E-02 3.15E-02 3.29E-02 3.94E-02

However when I look into the report ( Definition of the report Floating System for Phase IV of OC3), the stiffness from the report is different from results extracted from OpenFAST, and I don’t know what mistake I have made?

K_moor- Stiffness from mooring provided by the report
41180 0 0 0 -2821000 0
0 41180 0 2821000 0 0
0 0 11940 0 0 0
0 2821000 0 311100000 0 0
-2821000 0 0 0 311100000 0
0 0 0 0 0 11560000
K_hs-Stiffness from hydrostatic provided by the report
0 0 0 0 0 0
0 0 0 0 0 0
0 0 332941 0 0 0
0 0 0 -4999180000.00000 0 0
0 0 0 0 -4999180000.00000 0
0 0 0 0 0 0

Summation of stiffness from mooring and hydrostatic

K = K_moor + absolute(K_hs)
41180 0 0 0 -2821000 0
0 41180 0 2821000 0 0
0 0 344881 0 0 0
0 2821000 0 5310280000.00000 0 0
-2821000 0 0 0 5310280000.00000 0
0 0 0 0 0 11560000

We can see differences between the K and K_OpenFAST.

And in my understanding, the mass matrix of the whole Floated wind turbine system contains the structural mass matrix and added mass matrix from hydrodynamic load (Morison in the dof6 model). The stiffness matrix contains the mooring stiffness, restoring stiffness from hydrostatic and structural stiffness, and the structural stiffness of the floated platform should be zero, is it correct?

The second question is that extra stiffness and damping is applied to the FOWT when the potential-flow theory was used. Is there any way that these stiffness and damping could be applied in the simulation with using Morison formula in OpenFAST?

Thank you and have a nice day.

Xing Tan

Dear @Xing.Tan,

Taking the absolute value of the hydrostatic stiffness does not make sense to me. Moreover, you are missing the contribution of full-system weight to the restoring (stiffness) in the pitch and roll directions (that is, mass * Gravity * CoG). I would assume that if you add this gravitational stiffness to K_moor + K_hs, you’ll get K_OpenFAST.

Regarding your second question, what extra stiffness and damping are you referring? Regardless, if you have an external stiffness and damping that you want to apply to a HydroDyn module that only has a the strip-theory solution enabled (without potential flow enabled), you could add a “dummy” potential flow solution with `PotMod` = `RdtnMod` = 0, which would then allow you to set nonzero values for the platform additional stiffness (`AddCLin`) and damping (`AddBLin`).

Best regards,

Dear Dr. Jonkman,

I’m very appreciated that your suggestion solves the problem. The reason of taking the absolute value of the hydrostatic stiffness is that I missed the stiffness from contribution of full-system weight, thus there are negative values in stiffness matrix, and there would be complex values in eigenfrequency. Now the eigenfrequency will not change with different coordinates as shown below. Through there are still error between dof6 and OpenFAST, I think it may come from the differences of two different hydrostatic model,

Frequencies from OpenFAST
8.08E-03 8.08E-03 3.15E-02 3.15E-02 3.29E-02 3.94E-02
Origin of coordinate at 78.01m below SWL
8.06E-03 8.06E-03 3.37E-02 3.37E-02 3.30E-02 3.94E-02
Origin of coordinate at SWL
8.06E-03 8.06E-03 3.36E-02 3.37E-02 3.30E-02 3.94E-02
relative Error
-1.52E-03 -1.70E-03 6.76E-02 6.78E-02 2.69E-04 -1.82E-04

I’m sorry for I didn’t make myself clear. Extra stiffness and damping I want to applied is PLATFORM ADDITIONAL STIFFNESS (AddCLin - 98340000) AND DAMPING (AddBLin) provided by HydroDyn.dat. Because in my understanding, OpenFAST will not add extra stiffness and damping when Morison formula is used to calculate hydrodynamic load, the reason is shown below:
The codes from Morison.f90 show that Morison formula (inertia loads and add-mass loads) will be used only when PropPot is false. The Potmod must be 0 in this case otherwise OpenFAST will abort the simulation. Then extra stiffness (AddCLin) and damping (AddBLin) will not be used with PotMod=0.
To sum up, is there a way to use the extra stiffness and damping provided by HydroDyn.dat when inertia loads and add-mass loads are calculated in OpenFAST?

Part from HydroDyn.dat
---------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING -------------- [unused with PotMod=0 or 2]

Morison.f90
if ( .not. mem%PropPot ) then
Am = mem%Ca(i)p%WtrDenspi*mem%RMG(i)mem%RMG(i)mem%Ak + 2.0mem%AxCa(i)p%WtrDenspimem%RMG(i)*mem%RMG(i)dRdl_pmem%kkt
f_hydro = -matmul( Am, u%Mesh%TranslationAcc(:,mem%NodeIndx(i)) )
!call LumpDistrHydroLoads( f_hydro, mem%k, deltal, h_c, m%F_A(:, mem%NodeIndx(i)) )
y%Mesh%Force (:,mem%NodeIndx(i)) = y%Mesh%Force (:,mem%NodeIndx(i)) + m%memberLoads(im)%F_A(1:3, i)
y%Mesh%Moment(:,mem%NodeIndx(i)) = y%Mesh%Moment(:,mem%NodeIndx(i)) + m%memberLoads(im)%F_A(4:6, i)

There is another question, I noticed that the moment of force of Yaw DOF caused by hydrodynamic loads is zero with reference to the article (Equation 2-30b about Morison’s Equation in Dynamics Modeling and Loads Analysis of an Offshore Floating Wind Turbine). The moment force dFi(t,z) of an element of platform can also be the cross product of position vector and force vector. The results from the two methods match only when the position vector is [0,0,z]. That is the moment of Yad DOF will not be zero if there is any rotation of the platform. So is there any assumption I missed? And what if I calculate the moment of mooring force?

Best regards,

Xing Tan

Hi,

I think I didn’t make the third question clear. It is that where is the point which the moment of force is relative to? In my understanding it should be the origin of global coordinate. Then the moment of force would be calculated as shown below:

R = [q_sg, q_sw, q_hv] + TF*[0,0,z]

R is position vector of a point in global coordinate system

However, Equation 2-30b about Morison’s Equation in Dynamics Modeling and Loads Analysis of an Offshore Floating Wind Turbine shows different result. Is there any assumption I missed?

Best regards,

Xing Tan

Dear @Xing.Tan,

Regarding your second question, I had a typo in my previous response. I meant to say:

If you have an external stiffness and damping that you want to apply to a HydroDyn module that only has a the strip-theory solution enabled (without potential flow enabled), you could add a “dummy” potential flow solution with `PotMod` = 1 and `ExctnMod` = `RdtnMod` = 0, which would then allow you to set nonzero values for the platform additional stiffness (`AddCLin`) and damping (`AddBLin`).

Best regards,

Dear @Xing.Tan,

Regarding your third question, classical hydrodynamic theory solves distinct problems for hydrostatics (dependent on displacement), radiation (dependent of velocity, acceleration), and diffraction (dependent on incident waves). Equation (2-30) in my PhD Thesis-turned NREL report that you reference keeps this distinction for Morison’s equation, i.e., that the hydrodynamic-excitation loads do not depend on displacement. Equation (2-30) also assumes a vertical cylinder. Since that document was published, HydroDyn has been extended to array of arbitrarily oriented strip-theory members. And in OpenFAST v4.0, HydroDyn has further been extended to update the wave-excitation dependent on the displacement of the floater.

That said, I would not expect you’d consider moments about the undisplaced position of the body; rather, I would expect that you’d consider moments about the displaced position of the body.

Best regards,

Dear Dr. Jonkman,

Thank you for your rapid reply very much, and it has given me a clear understanding about the HydroDyn.

I’m trying to calculate the moment about the displaced position of the body. Now I have a question about response of the blade. I built a model about the spar-type floated wind turbine (Offshore Model) and obtained the aerodynamic load with BEM method (with reference to: Development and validation of a new blade element momentum skewed-wake model within AeroDyn ). I have fixed the platform of the Offshore Model to make it a model which could simulate the wind turbine onshore (Onshore Model). Also I chose the tower properties of the land wind turbine in the Onshore Model.

Here comes the question. The Offshore Model has larger blade displacement than that simulated by OpenFAST as shown below which confused me. In my understanding, there shouldn’t be large difference since I use the same BEM method and the same blade properties in the two models. Could you give me some suggestions about the mistake?
What has to be noted is that the relative velocity used in BEM method is calculated as: V = V_wind – V_blade. I obtain the V_wind by Turbsim, and V_blade is the velocity of blade in global coordinate system. All structural properties about the blade are same in the two model.

Best regards,

Xing Tan

Dear @Xing.Tan,

I’m not sure why your model is showing more effect of floater motions on blade deflection than OpenFAST, when the agreement is good for a land-based wind turbine. From my experience, most floating wind substructures don’t have a large effect on blade deflections or blade loads (the impact can be much more important in the drivetrain and tower).

Best regards,

Dear Dr. Jonkman,

I used the half of hydrodynamic load to make the simulation, and response of blade seems to be normal as shown below. The reason for half hydrodynamic load is that the response of surge of Offshore Model is about two times as large as response of OpenFAST. I extract the hydrodynamic load -HydroFxi from OpenFAST and compare it with hydrodynamic load from Offshore Model. The results show that the hydrodynamic load of Offshore Model is two times as large as the hydrodynamic load obtained by OpenFAST.

I get the generalized hydrodynamic load by the principle of virtual work:

DOFs: q_k

Virtual displacement of jth element: deltaR_j_i(q_k,t), i=1~3 means 3 displacements along x, y, z

Morison force of jth element: dF_j_i

Virtual work of jth element: delta_dW_j = sum(deltaR_j_i*dF_j_i), I = 1, 2, 3

Total virtual work of platform: delta_W = sum(delta_dW_j), j = 1~n_element

The displacement and Morison force are described in global coordinate system. Then I can get the generalized force by deriving virtual work (delta_W) with respect to DOFs (q_k).

And I have check that Offshore Model and OpenFAST have same wave field, i.e. for a sine wave, the wave height is twice the amplitude.

Is there any mistake I made? Could you give me some suggestions?

Best regards,

Xing Tan

Dear @Xing.Tan,

It sounds like the issue is that your hydrodynamic loads are twice as large as calculated by OpenFAST. What equations are you using for the calculation of hydrodynamic loads and which hydrodynamic model are you comparing against in OpenFAST (potential flow, strip theory, or hybrid)?

Best regards,

Dear Dr. Jonkman,

I use the Morison formula to calculate the hydrodynamic load with reference to Eq. 2-30a from Dynamics Modeling and Loads Analysis of an Offshore Floating Wind Turbine. When it comes to OpenFAST, I use strip theory and I attached the HydroDyn.dat used below:

``````------- 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 --------------------------------
"default"   WtrDens        - Water density (kg/m^3)
"default"   WtrDpth        - Water depth (meters)
"default"   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 ---------------------------------------------------
1P270   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]
8   WaveHs         - Significant wave height of incident waves (meters) [used only when WaveMod=1, 2, or 3]
9.6   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]
45   WaveDir        - Incident wave propagation heading direction                         (degrees) [unused when WaveMod=0 or 6]
0   WaveDirMod     - Directional spreading function {0: none, 1: COS2S}                  (-)       [only used when WaveMod=2,3, or 4]
1   WaveDirSpread  - Wave direction spreading coefficient ( > 0 )                        (-)       [only used when WaveMod=2,3, or 4 and WaveDirMod=1]
1   WaveNDir       - Number of wave directions                                           (-)       [only used when WaveMod=2,3, or 4 and WaveDirMod=1; odd number only]
90   WaveDirRange   - Range of wave directions (full range: WaveDir +/- 1/2*WaveDirRange) (degrees) [only used when WaveMod=2,3,or 4 and WaveDirMod=1]
123456789   WaveSeed(1)    - First  random seed of incident waves [-2147483648 to 2147483647]    (-)       [unused when WaveMod=0, 5, or 6]
RANLUX   WaveSeed(2)    - Second random seed of incident waves [-2147483648 to 2147483647] for intrinsic pRNG, or an alternative pRNG: "RanLux"    (-)       [unused when WaveMod=0, 5, or 6]
TRUE             WaveNDAmp      - Flag for normally distributed amplitudes                            (flag)    [only used when WaveMod=2, 3, or 4]
""               WvKinFile      - Root name of externally generated wave data file(s)        (quoted string)    [used only when WaveMod=5 or 6]
1   NWaveElev      - Number of points where the incident wave elevations can be computed (-)       [maximum of 9 output locations]
0   WaveElevxi     - List of xi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0]
0   WaveElevyi     - List of yi-coordinates for points where the incident wave elevations can be output (meters) [NWaveElev points, separated by commas or white space; usused if NWaveElev = 0]
---------------------- 2ND-ORDER WAVES ----------------------------------------- [unused with WaveMod=0 or 6]
FALSE            WvDiffQTF      - Full difference-frequency 2nd-order wave kinematics (flag)
FALSE            WvSumQTF       - Full summation-frequency  2nd-order wave kinematics (flag)
0   WvLowCOffD     - Low  frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method]
3.5   WvHiCOffD      - High frequency cutoff used in the difference-frequencies (rad/s) [Only used with a difference-frequency method]
0.1   WvLowCOffS     - Low  frequency cutoff used in the summation-frequencies  (rad/s) [Only used with a summation-frequency  method]
3.5   WvHiCOffS      - High frequency cutoff used in the summation-frequencies  (rad/s) [Only used with a summation-frequency  method]
---------------------- CURRENT ------------------------------------------------- [unused with WaveMod=6]
0   CurrMod        - Current profile model {0: none=no current, 1: standard, 2: user-defined from routine UserCurrent} (switch)
0   CurrSSV0       - Sub-surface current velocity at still water level  (m/s) [used only when CurrMod=1]
"DEFAULT"        CurrSSDir      - Sub-surface current heading direction (degrees) or DEFAULT (string) [used only when CurrMod=1]
20   CurrNSRef      - Near-surface current reference depth            (meters) [used only when CurrMod=1]
0   CurrNSV0       - Near-surface current velocity at still water level (m/s) [used only when CurrMod=1]
0   CurrNSDir      - Near-surface current heading direction         (degrees) [used only when CurrMod=1]
0   CurrDIV        - Depth-independent current velocity                 (m/s) [used only when CurrMod=1]
0   CurrDIDir      - Depth-independent current heading direction    (degrees) [used only when CurrMod=1]
---------------------- FLOATING PLATFORM --------------------------------------- [unused with WaveMod=6]
0   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)
0   ExctnMod       - Wave-excitation model {0: no wave-excitation calculation, 1: DFT, 2: state-space} (switch) [only used when PotMod=1; STATE-SPACE REQUIRES *.ssexctn INPUT FILE]
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!]
0.0125   RdtnDT         - Time step for wave radiation kernel calculations (sec) [only used when PotMod=1 and ExctnMod>0 or RdtnMod>0; DT<=RdtnDT<=0.1 recommended; determines RdtnOmegaMax=Pi/RdtnDT in the cosine transform]
1   NBody          - Number of WAMIT bodies to be used (-) [>=1; only used when PotMod=1. If NBodyMod=1, the WAMIT data contains a vector of size 6*NBody x 1 and matrices of size 6*NBody x 6*NBody; if NBodyMod>1, there are NBody sets of WAMIT data each with a vector of size 6 x 1 and matrices of size 6 x 6]
1   NBodyMod       - Body coupling model {1: include coupling terms between each body and NBody in HydroDyn equals NBODY in WAMIT, 2: neglect coupling terms between each body and NBODY=1 with XBODY=0 in WAMIT, 3: Neglect coupling terms between each body and NBODY=1 with XBODY=/0 in WAMIT} (switch) [only used when PotMod=1]
"../5MW_Baseline/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) [1 to NBody if NBodyMod>1] [MAKE SURE THE FREQUENCIES INHERENT IN THESE WAMIT FILES SPAN THE PHYSICALLY-SIGNIFICANT RANGE OF FREQUENCIES FOR THE GIVEN PLATFORM; THEY MUST CONTAIN THE ZERO- AND INFINITE-FREQUENCY LIMITS!]
1   WAMITULEN      - Characteristic body length scale used to redimensionalize WAMIT output (meters) [1 to NBody if NBodyMod>1] [only used when PotMod=1]
0.0   PtfmRefxt      - The xt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1]
0.0   PtfmRefyt      - The yt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1]
0.0   PtfmRefzt      - The zt offset of the body reference point(s) from (0,0,0) (meters) [1 to NBody] [only used when PotMod=1. If NBodyMod=2,PtfmRefzt=0.0]
0.0   PtfmRefztRot   - The rotation about zt of the body reference frame(s) from xt/yt (degrees) [1 to NBody] [only used when PotMod=1]
8029.21   PtfmVol0       - Displaced volume of water when the body is in its undisplaced position (m^3) [1 to NBody] [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!]
0.0   PtfmCOBxt      - The xt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1]
0.0   PtfmCOByt      - The yt offset of the center of buoyancy (COB) from (0,0) (meters) [1 to NBody] [only used when PotMod=1]
---------------------- 2ND-ORDER FLOATING PLATFORM FORCES ---------------------- [unused with WaveMod=0 or 6, or PotMod=0 or 2]
0   MnDrift        - Mean-drift 2nd-order forces computed                                       {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, MnDrift  /=8]
0   NewmanApp      - Mean- and slow-drift 2nd-order forces computed with Newman's approximation {0: None; [7, 8, 9, 10, 11, or 12]: WAMIT file to use} [Only one of MnDrift, NewmanApp, or DiffQTF can be non-zero. If NBody>1, NewmanApp/=8. Used only when WaveDirMod=0]
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}
---------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING  -------------- [unused with PotMod=0 or 2]
0   AddF0    - Additional preload (N, N-m) [If NBodyMod=1, one size 6*NBody x 1 vector; if NBodyMod>1, NBody size 6 x 1 vectors]
0
0
0
0
0
0             0             0             0             0             0
0             0             0             0             0             0
0             0             0             0             0             0
0             0             0             0             0             0
0             0             0             0             0      98340000
100000             0             0             0             0             0   AddBLin  - Additional linear damping(N/(m/s), N/(rad/s), N-m/(m/s), N-m/(rad/s))        [If NBodyMod=1, one size 6*NBody x 6*NBody matrix; if NBodyMod>1, NBody size 6 x 6 matrices]
0        100000             0             0             0             0
0             0        130000             0             0             0
0             0             0             0             0             0
0             0             0             0             0             0
0             0             0             0             0      13000000
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   SimplAxCd  SimplAxCdMG  SimplAxCa  SimplAxCaMG  SimplAxCp   SimplAxCpMG
(-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)         (-)
0.60        0.00        0.969954        0.00        0.00        0.00        0.00        0.00        0.00        0.00        0.00        0.00
---------------------- DEPTH-BASED HYDRODYNAMIC COEFFICIENTS (model 2) ---------
0   NCoefDpth       - Number of depth-dependent coefficients (-)
Dpth      DpthCd   DpthCdMG   DpthCa   DpthCaMG       DpthCp   DpthCpMG   DpthAxCd   DpthAxCdMG   DpthAxCa   DpthAxCaMG   DpthAxCp   DpthAxCpMG
(m)       (-)      (-)        (-)      (-)            (-)      (-)        (-)        (-)          (-)        (-)          (-)        (-)
---------------------- MEMBER-BASED HYDRODYNAMIC COEFFICIENTS (model 3) --------
0   NCoefMembers       - Number of member-based coefficients (-)
MemberID    MemberCd1     MemberCd2    MemberCdMG1   MemberCdMG2    MemberCa1     MemberCa2    MemberCaMG1   MemberCaMG2    MemberCp1     MemberCp2    MemberCpMG1   MemberCpMG2   MemberAxCd1   MemberAxCd2  MemberAxCdMG1 MemberAxCdMG2  MemberAxCa1   MemberAxCa2  MemberAxCaMG1 MemberAxCaMG2  MemberAxCp1  MemberAxCp2   MemberAxCpMG1   MemberAxCpMG2
(-)         (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)           (-)
-------------------- 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        False
2         2          3           1            2         0.5000      1        False
3         3          4           2            2         0.5000      1        False
---------------------- 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]
"E15.7e2"       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 -----------------------------------------

END of output channels and end of file. (the word "END" must appear in the first 3 columns of this line)

``````