Yaw rotating platform

Greetings,

I am trying to simulate an offshore platform in OpenFAST with a bearing in the structure, that allows the whole platform to rotate about the Yaw angle. I was wondering if I could get some help regarding the setup of my SubDyn input file.
To begin with, I’ve noticed that even if my floating platform only reaches 15 meters deep and the water depth is set to 200m, if I don’t include a Mooring system file, OpenFAST treats the system as a bottom fixed platform, right?

Secondly, I would like to know how I can include a pin joint in my structure that allows the whole platform to rotate. I tried creating a Joint in the Structure Joints SubDyn table with the JointType set to 3 and the JointDir vector set to (0, 0, 1) so that the Z rotation is enabled. Then I added a member to join this Joint with the rest of the structure (with MType set to 1), but I don’t know if I am missing something else.

Thanks a lot!

Dear @Pere.Palacin,

As of OpenFAST v2.6 and newer, SubDyn can now support the modeling of substructure flexibility for both fixed and floating substructures, as well as substructures with pin joints. That said, for floating systems, SubDyn inherently assumes small deflections relative to the six degree of freedom (DOF) rigid-body motion of the floater, so, if a pin joint is introduced, it must either have stiffness or closed loops that eliminate any rigid-body modes internal within SubDyn. So, I would not expect that you could use a pin joint in SubDyn to mimic a yaw DOF within the floater.

Can you use the nacelle-yaw degree of freedom of ElastoDyn to mimic the effect you want to capture?

Best regards,

Dear @Jason.Jonkman,

Thanks a lot for your reply.

Sadly I can not use the Yaw Nacelle DOF to simulate the rotation of the platform as the floater is not symmetrical and the rotation point is not under the tower modelled in the ElastoDyn file.

I have read some other posts by different users where you recommended to instead, rotate the wind, current and wind directions. The thing is that I’m trying to find the equilibrium point of the structure when wind and currents are offset by a certain angle.

How could I manage to do so? Maybe the MoorDyn file could help?

Thanks!

Dear @Pere.Palacin,

Well, the only rigid-body yaw DOFs available currently in OpenFAST are the rigid-body yaw rotation of the floating platform and the nacelle-yaw DOF, both of which are available in ElastoDyn. Moreover (as you likely read in other forum topics), the floating platform yaw DOF is limited to moderate rotation, with the accuracy diminishing for yaw motions beyond about 15 degrees. Is that sufficient for your needs?

Best regards,

Dear @Jason.Jonkman,

Thanks a lot for your reply. 15 degrees should be enough for what I am trying to study currently. The problem is that I assume that the elastodyn enables the rotation of the Tower but not the semisubmersible, right? I am looking to analyse the whole structure rotating (semisub + tower included) (except for the mooring system).

Thanks!

Dear @Pere.Palacin,

Actually, ElastoDyn provides the 6-DOF rigid-body motion of the floater, as well as the tower bending and rotor/nacelle dynamics. SubDyn provides the substructure elasticity relative to the rigid-body motion from ElastoDyn. So, the actual floater motion = rigid body in ElastoDyn + elasticity in SubDyn.

Best regards,

1 Like

Greetings @Jason.Jonkman,

Thanks a lot for your reply! After setting the PtfmYDOF variable to True in the ElastoDyn file, I can see that the platform drifts away if I enable CurrentMod in the HydroDyn file. Now my question is how can I set the Pivot Point? Since I can’t visualize the semisub and the turbine at the same time, I can’t tell where is the rotating point.

Is it controlled through the Base Reaction Joints of the SubDyn file? Currently my Reaction and Interface joints tables look like this:

------------------- BASE REACTION JOINTS: 1/0 for Locked/Free DOF @ each Reaction Node ---------------------
             1   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)  
     1           1           1           1           1           1           0                 
------- 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     [Global Coordinate System]
  (-)       (flag)      (flag)      (flag)      (flag)      (flag)      (flag)
  27           1           1           1           1           1           1

Where Joint 1 is the intended pivot point and 27 is the joint that meets with the tower modelled by the ElastoDyn file (set at 0, 0 , TwrHt). By the way, I deleted all pin joints of the SubDyn file.

Is this approach right?

Thanks!

Actually I increased the current speed from 1m/s to 2m/s and I get this message all the time when I run the simulation. It stills runs the simulation just fine however.

FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption1:FullOpt1_InputOutputSolve:SD_CalcOutput:
Angles in GetSmllRotAngs() are larger than 0.4 radians.
SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.
FullOpt1_InputOutputSolve:HydroDyn_CalcOutput:HDOut_MapOutputs: Angles in GetSmllRotAngs() are
larger than 0.4 radians.
FullOpt1_InputOutputSolve:SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.
SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.
FullOpt1_InputOutputSolve:HydroDyn_CalcOutput:HDOut_MapOutputs: Angles in GetSmllRotAngs() are
larger than 0.4 radians.

Dear @Pere.Palacin,

If you are considering a floating platform, I would think your SubDyn model would not have a reaction joint because the rigid-body motion is defined by ElastoDyn. So, I would expect NReact = 0.

OpenFAST cannot currently visualize the substructure with surface geometry, but you can still visualize the floater as a “point cloud” in terms of the analysis nodes in HydroDyn, SubDyn, and the fairleads in MoorDyn.

Best regards,

1 Like

Thanks a lot for your reply @Jason.Jonkman,

I have now disabled the NReact nodes on my SubDyn input file.

How can I visualize the floater as a point cloud like you mentioned in your previous post? I can only currently view the RNA in paraview and the semisub with (Mode shape visualization).

But not together, thanks!

Dear @Pere.Palacin,

By selecting VTK_type = 3, information about all of the meshes used by the inputs and outputs of all OpenFAST modules are written to the VTK files. These include, the mesh associated with the structural nodes in SubDyn, the mesh associated with the hydrodynamic nodes in HydroDyn, and the mesh associated with the fairleads in MoorDyn. You should be able to visualize these mesh nodes as points or other graphics in ParaView.

Best regards,

1 Like

Thanks @Jason.Jonkman,

Now I am able to visualize both the structure and the blade nodes.

However, after removing the NReact joints and increasing the Water depth I am getting this error upon running my simulation. FAST_InitializeAll:SD_Init:Craig_Bampton:CraigBamptonReduction:CraigBamptonReduction_FromPartition :EigenSolveWrap:EigenSolve:Zero eigenvalue found, system may contain rigid body mode

The only way to fix it is to include at least a joint on the NReact file. (I am using a MoorDyn file atm). So I don’t understand what might be failing at the moment.

Thanks!

Dear @Pere.Palacin,

When NReact = 0, the Guyan modes of the SubDyn are rigid-body modes, which shouldn’t cause a problem.

This error appears to indicate that your SubDyn model has other rigid-body modes. Do you have joints that are not cantilevered, members that are not beams, or beam members that have unphysical mass or stiffness that may lead to this error?

Best regards,

Dear @Jason.Jonkman,

I don’t think so. Please find attached my SubDyn file (some elements have been censored.)

----------- SubDyn v1.01.x MultiMember Support Structure Input File ------------
IEA 15 MW offshore reference model monopile configuration
-------------------------- SIMULATION CONTROL  ---------------------------------
True             Echo        - Echo input data to "<rootname>.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
False            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.0       , 0.0        RayleighDamp - Mass and stiffness proportional damping  coefficients (Rayleigh Damping) [only if GuyanDampMod=1].
6                      GuyanDampSize - Guyan damping matrix (6x6) [only if GuyanDampMod=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            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            0.0            0.0            0.0
---- STRUCTURE JOINTS: joints connect structure members (~Hydrodyn Input File)---
             27   NJoints     - Number of joints (-)
  JointID    JointXss    JointYss    JointZss    JointType   JointDirX   JointDirY   JointDirZ  JointStiff 
    (-)         (m)         (m)         (m)         (-)         (-)         (-)         (-)      (Nm/rad)  
1   	 XYZ    1   0.0 0.0 0.0 0.0
2    	 XYZ    1   0.0 0   0   0
3 	 XYZ	1	0	0	0	0
4	 XYZ	1	0	0	0	0
5	 XYZ	1	0	0	0	0
6	 XYZ	1	0	0	0	0
7	 XYZ	1	0	0	0	0
8	 XYZ	1	0	0	0	0
9	 XYZ	1	0	0	0	0
10	 XYZ	1	0	0	0	0
11	 XYZ	1	0	0	0	0
12	 XYZ	1	0	0	0	0
13	 XYZ	1	0	0	0	0
14	 XYZ	1	0	0	0	0
15	 XYZ	1	0	0	0	0
16	 XYZ	1	0	0	0	0
17	 XYZ	1	0	0	0	0
18	 XYZ	1	0	0	0	0
19	 XYZ	1	0	0	0	0
20	 XYZ	1	0	0	0	0
21	 XYZ	1	0	0	0	0
22	 XYZ	1	0	0	0	0
23	 XYZ	1	0	0	0	0
24	 XYZ	1	0	0	0	0
25	 XYZ	1	0	0	0	0
26       XYZ	1	0	0	0	0
27	 XYZ 	1	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)) ---------
             0  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     [Global Coordinate System]
  (-)       (flag)      (flag)      (flag)      (flag)      (flag)      (flag)
----------------------------------- MEMBERS --------------------------------------
             44   NMembers    - Number of frame members
 MemberID    MJointID1   MJointID2  MPropSetID1 MPropSetID2    MType      COSMID   
    (-)         (-)         (-)         (-)         (-)         (-)         (-)    
1   	AB	1	1	1
2	AB	1	1	1
3	AB	1	1	1
4	AB	1	1	1
5	AB	2	2	1
6	AB	2	3	1   
7	AB	3	3	1
8	AB	3	3	1
9	AB	3	3	1
10	AB	2	2	1
11	AB	2	3	1   
12	AB	3	3	1
13	AB	3	3	1
14	AB	3	3	1
15	AB	4	4	1
16	AB	4	4	1
17	AB	4	4	1
18	AB	4	4	1
19	AB	4	4	1
20	AB	5	5	1
21	AB	5	5	1
22	AB	5	5	1
23	AB	5	5   	1
24	AB	4	4	1
25	AB	4	4	1
26	AB	4	4	1
27	AB	4	4	1
28	AB	4	4	1
29	AB	5	5	1
30	AB	5	5	1
31	AB	5	5	1
32	AB	5	5	1
33	AB	4	4	1
34	AB	4	4	1
35	AB	4	4	1
36	AB	4	4	1
37	AB	4	4	1
38	AB	5	5	1
39	AB	5	5	1
40	AB	5	5	1
41	AB	5	5   	1
42	AB	6	6   	1
43	AB	6	6   	1
44	AB	7	7   	1
------------------ MEMBER X-SECTION PROPERTY data 1/2 [isotropic material for now: use this table for circular-tubular elements] ------------------------
             7   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          D1	            0.30
   2	    2.10000e+11     8.07690e+10       7850.00	       D2	            0.20
   3	    2.10000e+11     8.07690e+10       7850.00	       D3	            0.20
   4	    2.10000e+11     8.07690e+10       7850.00	       D4	            0.05
   5	    2.10000e+11     8.07690e+10       7850.00	       D5	            0.05
   6	    2.10000e+11     8.07690e+10       7850.00	       D6             	    0.20
   7	    2.10000e+11     8.07690e+10       7850.00	       D7             	    0.20
------------------ 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      ShearG2     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     
    (-)         (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)      (kg*m^2)    (kg*m^2)    (kg*m^2)    (kg*m^2)    (kg*m^2)    (kg*m^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.
1                OutCBModes  - Output Guyan and Craig-Bampton modes {0: No output, 1: JSON output}, (flag)
1                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=<rootname>.SD.out;  2=<rootname>.out (generated by FAST);  3=both files.
True             TabDelim    - Generate a tab-delimited output in the <rootname>.SD.out file
             1   OutDec      - Decimation of output in the <rootname>.SD.out file
"ES11.4e2"       OutFmt      - Output format for numerical results in the <rootname>.SD.out file
"A11"            OutSFmt     - Output format for header strings in the <rootname>.SD.out file
------------------------- MEMBER OUTPUT LIST ------------------------------------------
             0   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.
  (-)        (-)        (-)
------------------------- SSOutList: The next line(s) contains a list of output parameters that will be output in <rootname>.SD.out or <rootname>.out. ------
"M2N1MKxe, M2N1MKye"                 - The local side-to-side and fore-aft bending moments at node 1 of member 3 (located at 0 m, i.e. MSL).
"M1N1MKxe, M1N1MKye"                 - The local side-to-side and fore-aft bending moments at node 1 of member 2 (located at -10 m, i.e. half way between MSL and mudline).
"-ReactFXss, -ReactFYss, -ReactFZss" - Base reactions: fore-aft shear, side-to-side shear and vertical forces at the mudline.
"-ReactMXss, -ReactMYss, -ReactMZss" - Base reactions: side-to-side, fore-aft and yaw moments at the mudline.
END of output channels and end of file. (the word "END" must appear in the first 3 columns of this line)


Dear @Pere.Palacin,

I see the problem. You should set NInterf = 1 to ensure one joint in SubDyn is fully connected to the platform (tower base) in ElastoDyn (with ItfTDXss = ItfTDYss = ItfTDZss = ItfRDXss = ItfRDYss = ItfRDZss = 1 for that joint).

Best regards,

1 Like

Thanks a lot for your reply @Jason.Jonkman ,

This has solved the issued. However, now I can see that the platform is rotating around a point that is not the pivot point of my platform.

I have only included the pivot point joint in the NInterf table, however the platform is rotating from the tower axis (note that in my structure, the tower is “almost” eliminated as all the geometry is defined by the SubDyn file, since there is no conventional tower.) At the same time, the pivot point of my structure is not coincident with the tower axis.

Does this mean that the platform rotation is only possible around the tower axis in OpenFAST? Or is it possible to rotate it about another point defined by the SubDyn file?

Thanks

Dear @Pere.Palacin,

I’m not really understanding (perhaps a picture would help).

Again, SubDyn cannot support rigid-body modes other than the Guyan modes, which are actually solved within ElastoDyn.

The center of rotation of the floating system (in roll, pitch, and yaw) will be determined by the system mass/inertia and stiffness (mooring, hydrostatic) properties.

Best regards,

1 Like

Dear @Jason.Jonkman,

Please find attached the image that explains what I am trying to simulate. For instance, the semisub features a downwind turbine on the column indicated with the number 2. The yaw rotation of the nacelle has been disabled on the ServoDyn and ElastoDyn (YawDOF and PltfmYDOF) file. Since the platform rotates around the pivot point indicated with number 1 (which is also the point where the structure meets with the mooring system).

The tower geometry has been almost eliminated by setting the ElastoDyn parameters TowerBsHt, PtfmCMzt and PtfmRefzt as close to TowerHT as possible. Because the turbine is suported on top of a “pyramid-like” shape.

Unfortunately, the platform is now currently rotating around point 2 instead of 1. (Point 2 is the TP since it is the point where the “fictional tower” would meet the MSL; X = 0, Y = 0, Z = 0 in the SubDyn and HydroDyn files), which is what i refered previously as the Turbine Axis.

Now my question is: How can I set my ElastoDyn file to allow the rotation of the platform around the Point 1 to allow the platform to weather vane.

Thanks

Dear @Pere.Palacin,

OK, thanks for clarifying. To model this system, you should enable the platform-yaw DOF in ElastoDyn (as well as the other rigid-body platform DOFs) and ensure that the SubDyn interface joint is fully constrained to ElastoDyn at point 2 (including ItfRDZss = 1).

The actual center of rotation of the floater will be determined by the system properties as I mentioned before. With the fairleads of the mooring system at point 1, I would expect point 1 to be the center of rotation in yaw.

Best regards,

1 Like

Dear @Jason.Jonkman ,

Thanks a lot for your help. Now I understood what you meant with the rigid-body modes being solved by the ElastoDyn.

For the structure that I showed you, would OpenFAST have problems computing cases where the Yaw Angle around the point 1 is greater than 15º, as you mentioned previously?

Thanks