Modeling multi-member floating wind turbine

Dear @Bart.Klootwijk,

I would expect that your rigid-body equivalent mass matrix from SubDyn would match the mass, center of mass, and mass moment of inertias specified in the original ElastoDyn model. Then with SubDyn enabled with all Craig-Bampton modes disabled (Nmodes = 0, representing a rigid floater in SubDyn), and the platform mass and inertias zeroed in ElastoDyn, the response with SubDyn enabled should match the original model.

When you enabled SubDyn, did you zero the platform mass and inertias in ElastoDyn?

Best regards,

Dear Jason Jonkman,

Thank you for your quick reply,
I did not zero the platform mass and inertias in ElastoDyn. So if I understand correctly, after enabling SubDyn, this should be done to prevent the platform mass and inertia to be counted twice in the simulation?

If I zero the platform mass AND the inertias, I am getting a fatal error from MoorDyn (as shown below):

If I leave the inertias untouched and just zero the platform mass, I observe the opposite behaviour as before, namely that there is a positive heave offset. This is suggesting that the platform modelled in SubDyn is modelled less heavy than it should be.

I suspect something is wrongly formulated in my SubDyn input file, however I can’t seem to find it. The visualisation of the platform from my previous post is directly plotted using the information about the Joints- Members and Member properties specification from the SubDyn file. For the member properties, I closely followed the properties specified in the OC4 semisub definition report. Furthermore, when I analytically calculate the metal mass of one of the members defined in my SubDyn file (e.g. the centre column, being 1.436E+05), the mass coïncides with the mass specified in the report.

I agree with you that one would expect that the rigid-body equivalent mass matrix from SubDyn would match the mass, center of mass, and mass moment of inertias specified in the original ElastoDyn model. I included the entries of my SubDyn inputu file below.

Please, could you indicate if you see anything going wrong here?
Your help is much appreciated!

.
.
.

----------- SubDyn MultiMember Support Structure Input File ------------
OC4 ‘Semisubmersible’ SubStructure Input File.
-------------------------- SIMULATION CONTROL ---------------------------------
False Echo - Echo input data to “.SD.ech” (flag)
“DEFAULT” SDdeltaT - Local Integration Step. If “default”, the glue-code integration step will be used.
3 IntMethod - Integration Method [1/2/3/4 = RK4/AB4/ABM4/AM2].
True SttcSolve - Solve dynamics about static equilibrium point
True GuyanLoadCorrection - Include extra moment from lever arm at interface and rotate FEM for floating.
-------------------- FEA and CRAIG-BAMPTON PARAMETERS---------------------------
3 FEMMod - FEM switch: element model in the FEM. [1= Euler-Bernoulli(E-B); 2=Tapered E-B (unavailable); 3= 2-node Timoshenko; 4= 2-node tapered Timoshenko (unavailable)]
1 NDiv - Number of sub-elements per member
True CBMod - [T/F] If True perform C-B reduction, else full FEM dofs will be retained. If True, select Nmodes to retain in C-B reduced system.
0 Nmodes - Number of internal modes to retain (ignored if CBMod=False). If Nmodes=0 → Guyan Reduction.
1 JDampings - Damping Ratios for each retained mode (% of critical) If Nmodes>0, list Nmodes structural damping ratios for each retained mode (% of critical), or a single damping ratio to be applied to all retained modes. (last entered value will be used for all remaining modes).
0 GuyanDampMod - Guyan damping {0=none, 1=Rayleigh Damping, 2=user specified 6x6 matrix}
0.000, 0.000 RayleighDamp - Mass and stiffness proportional damping coefficients (Rayleigh Damping) [only if GuyanDampMod=1]
6 GuyanDampSize - Guyan damping matrix (6x6) [only if GuyanDampMod=2]
0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00
0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00
0.0000e+00 0.0000e+00 1.066100e+06 0.0000e+00 0.0000e+00 0.0000e+00
0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00
0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00
0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00 0.0000e+00
---- STRUCTURE JOINTS: joints connect structure members (~Hydrodyn Input File)—
18 NJoints - Number of joints (-)
JointID JointXss JointYss JointZss JointType JointDirX JointDirY JointDirZ JointStiff
(-) (m) (m) (m) (-) (-) (-) (-) (Nm/rad)
1 0.00000 0.00000 -20.00000 1 0.0 0.0 0.0 0.0
2 0.00000 0.00000 -17.00000 1 0.0 0.0 0.0 0.0
3 0.00000 0.00000 10.00000 1 0.0 0.0 0.0 0.0
4 -28.87000 0.00000 -20.00000 1 0.0 0.0 0.0 0.0
5 -28.87000 0.00000 -17.00000 1 0.0 0.0 0.0 0.0
6 -28.87000 0.00000 -14.00000 1 0.0 0.0 0.0 0.0
7 -28.87000 0.00000 10.00000 1 0.0 0.0 0.0 0.0
8 -28.87000 0.00000 12.00000 1 0.0 0.0 0.0 0.0
9 14.43500 25.00000 -20.00000 1 0.0 0.0 0.0 0.0
10 14.43500 25.00000 -17.00000 1 0.0 0.0 0.0 0.0
11 14.43500 25.00000 -14.00000 1 0.0 0.0 0.0 0.0
12 14.43500 25.00000 10.00000 1 0.0 0.0 0.0 0.0
13 14.43500 25.00000 12.00000 1 0.0 0.0 0.0 0.0
14 14.43500 -25.00000 -20.00000 1 0.0 0.0 0.0 0.0
15 14.43500 -25.00000 -17.00000 1 0.0 0.0 0.0 0.0
16 14.43500 -25.00000 -14.00000 1 0.0 0.0 0.0 0.0
17 14.43500 -25.00000 10.00000 1 0.0 0.0 0.0 0.0
18 14.43500 -25.00000 12.00000 1 0.0 0.0 0.0 0.0
------------------- BASE REACTION JOINTS: 1/0 for Locked/Free DOF @ each Reaction Node ---------------------
0 NReact - Number of Joints with reaction forces; be sure to remove all rigid motion DOFs of the structure (else det([K])=[0])
RJointID RctTDXss RctTDYss RctTDZss RctRDXss RctRDYss RctRDZss SSIfile ![Global Coordinate System]
(-) (flag) (flag) (flag) (flag) (flag) (flag) (string)
------- INTERFACE JOINTS: 1/0 for Locked (to the TP)/Free DOF @each Interface Joint (only Locked-to-TP implemented thus far (=rigid TP)) ---------
1 NInterf - Number of interface joints locked to the Transition Piece (TP): be sure to remove all rigid motion dofs
IJointID ItfTDXss ItfTDYss ItfTDZss ItfRDXss ItfRDYss ItfRDZss
(-) (flag) (flag) (flag) (flag) (flag) (flag)
3 1 1 1 1 1 1
----------------------------------- MEMBERS --------------------------------------
29 NMembers - Number of frame members
MemberID MJointID1 MJointID2 MPropSetID1 MPropSetID2 MType COSMID
(-) (-) (-) (-) (-) (-) (-)
1 1 2 1 1 1
2 2 3 1 1 1
3 4 5 2 2 1
4 5 6 2 2 1
5 6 7 3 3 1
6 7 8 3 3 1
7 9 10 2 2 1
8 10 11 2 2 1
9 11 12 3 3 1
10 12 13 3 3 1
11 14 15 2 2 1
12 15 16 2 2 1
13 16 17 3 3 1
14 17 18 3 3 1
15 5 10 4 4 1
16 10 15 4 4 1
17 15 5 4 4 1
18 7 12 4 4 1
19 12 17 4 4 1
20 17 7 4 4 1
21 5 2 4 4 1
22 10 2 4 4 1
23 15 2 4 4 1
24 7 3 4 4 1
25 12 3 4 4 1
26 17 3 4 4 1
27 7 2 4 4 1
28 12 2 4 4 1
29 17 2 4 4 1
------------------ MEMBER X-SECTION PROPERTY data 1/2 [isotropic material for now: use this table for circular-tubular elements] ------------------------
4 NPropSets - Number of structurally unique x-sections (i.e. how many groups of X-sectional properties are utilized throughout all of the members)
PropSetID YoungE ShearG MatDens XsecD XsecT
(-) (N/m2) (N/m2) (kg/m3) (m) (m)
1 2.10000e+11 8.07690e+10 7850.00 6.500000 0.030000
2 2.10000e+11 8.07690e+10 7850.00 24.000000 0.060000
3 2.10000e+11 8.07690e+10 7850.00 12.000000 0.060000
4 2.10000e+11 8.07690e+10 7850.00 1.600000 0.017500
------------------ MEMBER X-SECTION PROPERTY data 2/2 [isotropic material for now: use this table if any section other than circular, however provide COSM(i,j) below] ------------------------
0 NXPropSets - Number of structurally unique non-circular x-sections (if 0 the following table is ignored)
PropSetID YoungE ShearG MatDens XsecA XsecAsx XsecAsy XsecJxx XsecJyy XsecJ0
(-) (N/m2) (N/m2) (kg/m3) (m2) (m2) (m2) (m4) (m4) (m4)
-------------------------- CABLE PROPERTIES -------------------------------------
0 NCablePropSets - Number of cable cable properties
PropSetID EA MatDens T0 CtrlChannel
(-) (N) (kg/m) (N) (-)
----------------------- RIGID LINK PROPERTIES ------------------------------------
0 NRigidPropSets - Number of rigid link properties
PropSetID MatDens
(-) (kg/m)
---------------------- MEMBER COSINE MATRICES COSM(i,j) ------------------------
0 NCOSMs - Number of unique cosine matrices (i.e., of unique member alignments including principal axis rotations); ignored if NXPropSets=0 or 9999 in any element below
COSMID COSM11 COSM12 COSM13 COSM21 COSM22 COSM23 COSM31 COSM32 COSM33
(-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
------------------------ JOINT ADDITIONAL CONCENTRATED MASSES--------------------------
0 NCmass - Number of joints with concentrated masses; Global Coordinate System
CMJointID JMass JMXX JMYY JMZZ JMXY JMXZ JMYZ MCGX MCGY MCGZ
(-) (kg) (kgm^2) (kgm^2) (kgm^2) (kgm^2) (kgm^2) (kgm^2) (m) (m) (m)
---------------------------- OUTPUT: SUMMARY & OUTFILE ------------------------------
True SumPrint - Output a Summary File (flag).It contains: matrices K,M and C-B reduced M_BB, M-BM, K_BB, K_MM(OMG^2), PHI_R, PHI_L. It can also contain COSMs if requested.
0 OutCBModes - Output Guyan and Craig-Bampton modes {0: No output, 1: JSON output}, (flag)
0 OutFEMModes - Output first 30 FEM modes {0: No output, 1: JSON output} (flag)
False OutCOSM - Output cosine matrices with the selected output member forces (flag)
False OutAll - [T/F] Output all members’ end forces
2 OutSwtch - [1/2/3] Output requested channels to: 1=.SD.out; 2=.out (generated by FAST); 3=both files.
True TabDelim - Generate a tab-delimited output in the .SD.out file
1 OutDec - Decimation of output in the .SD.out file
“ES11.4e2” OutFmt - Output format for numerical results in the .SD.out file
“A11” OutSFmt - Output format for header strings in the .SD.out file
------------------------- MEMBER OUTPUT LIST ------------------------------------------
6 NMOutputs - Number of members whose forces/displacements/velocities/accelerations will be output (-) [Must be <= 9].
MemberID NOutCnt NodeCnt ![NOutCnt=how many nodes to get output for [< 10]; NodeCnt are local ordinal numbers from the start of the member, and must be >=1 and <= NDiv+1] If NMOutputs=0 leave blank as well.
(-) (-) (-)
1 1 1 ! M1
15 1 1 ! M2
10 1 1 ! M3
15 1 1 ! M4
20 1 1 ! M5
25 1 1 ! M6
------------------------- SDOutList: The next line(s) contains a list of output parameters that will be output in .SD.out or .out. ------
“M1N1FKZe, M2N1FKZe” - Axial force in leg 2 at K1L2 and in leg 4 at K1L4
“M5N1FKXe,M5N1FKYe,M5N1FKZe,M6N1FKXe,M6N1FKYe,M6N1FKZe” - Forces OOP and Axial at mid brace points x,y, z >> *we will need to do some post-processing using the direction cosine matrices to get OOP forces
END of output channels and end of file. (the word “END” must appear in the first 3 columns of this line)

Dear @Bart.Klootwijk,

I can’t review your SubDyn input file now, but when you enable both PtfmYDOF and YawDOF in ElastoDyn, it is necessary to set PtfrmYIner nonzero as discussed in the following forum topic: Wind Veer Parameter - #55 by Jason.Jonkman. A model would likely go unstable without that.

Best regards,

Dear Jason,

Thanks for the suggestion; I was unaware of this criterion.
I am not sure I fully understand how I should set the Platform Inertias in ElastoDyn if this is already accounted for by SubDyn. I will investigate this further.

Regarding the SubDyn file, I had not taken into account the top and bottom caps of the columns. After adding them to the SubDyn Joint Additional Masses section, I get much better results.

Best reagrds,

1 Like

Dear @Bart.Klootwijk,

The forum post I linked to recommends that you set PtfmYIner for this case equal to the rotational inertial of the tower about its centerline, which you can estimate by the tower mass, diameter, and thickness.

Best regards,

Recently, when I used the OLAF to process the IEA 15MW model, I also reported an “access violation” when I used the incoming wind file of NTM type generated with wind speed of 17m/s with turbsim. I would like to ask if there is any other way to solve this situation besides changing the computer with larger memory to run it.
Best regards,
He.Li

Dear @He.Li,

Can you clarify what error you are running into. It sounds like you had OpenFAST running with OLAF well, but then switched to a turbulent inflow from TurbSim; is that correct? What input file settings did you change between the simulation that runs well and the simulation that results in an error? What exactly is the error message that you receive? Which version of OpenFAST are you running?

Best regards,

Dear @Jason.Jonkman
I used OpenFAST-v3.5.0. ROSCO v2.8.0
Yes,I had OpenFAST running with OLAF well. When I set windtype =1(steady wind), I set a wind speed of 17m/s and it worked successfully. After that, I set the windtype =3,switched to a turbulent inflow from TurbSim (NTM model, wind speed 17m/s ,IEC turbulence characteristic 17.27%) . I did not modify any other input file settings, an error occurs when running.The following is my error message.

Best regards,

Dear @He.Li,

The issue you are running into sounds similar to what was reported and solved in the following issue on the OpenFAST GitHub repository: Bug report--Error when conduct simulation using OLAF & turbulent wind (TurbSim) · Issue #1746 · OpenFAST/openfast · GitHub. Upgrading to OpenFAST v3.5.1 should solve the issue.

Best regards,

Dear @Jason.Jonkman ,
I download the OpenFAST v3.5.1 from Releases · OpenFAST/openfast · GitHub, and change the discon.dll, but here is still an error which is same as the question posed by user ZL6462 on Sep 13 . Bug report–Error when conduct simulation using OLAF & turbulent wind (TurbSim) · Issue #1746 · OpenFAST/openfast (github.com)

Best regards,

Dear @He.Li,

According to issue #1746, the secondary issue you are referring to was supposed to be fixed within the release of OpenFAST v3.5.1. If the issue persists after upgrading, I would suggest reopening issue #1746 and following up there.

Best regards