Questions about 5MW_OC3Mnpl_DLL_WTurb_WavesIrr

Dear All,
My OpenFAST version is v3.2.1.
When I study input files of 5MW_OC3Mnpl_DLL_WTurb_WavesIrr, I am encountered with some confusions:

  1. In NRELOffshrBsline5MW_OC3Monopile_ElastoDyn.dat, platform DOFs is actived:
True          PtfmSgDOF   - Platform horizontal surge translation DOF (flag)
True          PtfmSwDOF   - Platform horizontal sway translation DOF (flag)
True          PtfmHvDOF   - Platform vertical heave translation DOF (flag)
True          PtfmRDOF    - Platform roll tilt rotation DOF (flag)
True          PtfmPDOF    - Platform pitch tilt rotation DOF (flag)
True          PtfmYDOF    - Platform yaw rotation DOF (flag)

As there is no floating platform here, does the platform regard monopile? That means we active the DOF of monopile?

  1. In NRELOffshrBsline5MW_OC3Monopile_ElastoDyn.dat, platform has no mass, but it has yaw inertia.
          0   PtfmMass    - Platform mass (kg)
          0   PtfmRIner   - Platform inertia for roll tilt rotation about the platform CM (kg m^2)
          0   PtfmPIner   - Platform inertia for pitch tilt rotation about the platform CM (kg m^2)
  1.534E+06   PtfmYIner   - Platform inertia for yaw rotation about the platform CM (kg m^2)

So I am confused that what PtfmYIner refers to? Why platform has yaw inertia without mass?

Regards,
Ran Tu

Dear @Ran.Tu,

Regarding (1), a similar question was asked and answered in the following forum topic: The question of 6 DOFs of Platform.

Regarding (2), PtfmYIner is set in this model equal to the rotational inertia of the undeflected tower about its centerline because that inertia is not accounted for otherwise.

Best regards,

Hey @Jason.Jonkman

Thanks for your reply. Could you please correct me if my understanding is wrong after reading your quoted forum topic.
About the coupling between Elastodyn and subdyn. If I active all 6 DOFs of platform in Elastodyn:

  1. All 6 DOF motion/velocity/acceleration at the reference point of platform defined in Elastodyn will be transferred to Subdyn. However, I am not comfirmed which point in Elastodyn is used to transfer the information. Refenrence point of platform, center point of platform or tower base point?

  2. All 6 DOF force/Moment at the interface point defined in Subdyn will be transferred to Elastodyn.

  3. As Elastodyn only adopts 1st and 2nd flap-wise and edge-wise bending mode shape of tower and no torsional mode shape is considered. These adopted mode shapes have taken into account all the inertia of tower except the yaw inertial of tower. Thus, we have to define yaw inertial of tower in Elastodyn file. And for any models (i.e. OC3, OC4 or any other model), PtfmYIner = yaw inertial of platform+ yaw inertia of tower.

  4. There is no need to keep interface point in Subdyn and reference point of platform in Elastodyn at the same x,y,z coordinates. OpenFAST can consider the position offset and transform the information between Subdyn and Elastodyn.

  5. For PtfmCMzt and PtfmRefzt in Elastodyn, are these two values positive when center point and reference point are below ground (onshore) and MSL (offshore)?

  6. Elastodyn adopts bending mode shapes to simulate blade and tower. Thus, I have noticed that some papers say OpenFAST can not consider the torsion of tower. If we model blade and tower as beam elements. By this way, can tower torsion be considered?

  7. we can also model the tower as beam elements using subdyn. To realize this aim, we need to deacitve all the DOFs of tower in Elastodyn, and set TowerHt = TowerBsHt (the tower geometry is zeroed). And set PtfmRefzt = - TowerHt (locate the platform in ElastoDyn at the top of the tower). Model the tower and other supporting structure or floating platform in Subdyn, and set the top node point of tower as the interface point.

  8. If the tower geometry is zeroed in Elastodyn, will it affect aerodynamic load of tower in Aerodyn15? If my understanding is correct, Aerodyn15 is able to calculate the wind load on tower based on tower nodes defined in Aerodyn15. And the instantaneous positions of tower nodes in Aerodyn15 will be updated based on Elastodyn results through node mapping method. So I am confused when we move tower from Elastodyn to Subdyn, can the wind load on tower be calculated correctly?

Regards,
Ran Tu

Dear @Ran.Tu,

Here are my responses:

  1. All 6 DOF motion/velocity/acceleration at the reference point of platform defined in Elastodyn will be transferred to Subdyn. However, I am not comfirmed which point in Elastodyn is used to transfer the information. Refenrence point of platform, center point of platform or tower base point?

The motions from the ElastoDyn reference point are passed to SubDyn. These motions are passed to the interface joint(s) of SubDyn.

  1. All 6 DOF force/Moment at the interface point defined in Subdyn will be transferred to Elastodyn.

Correct. The loads at the interface joint(s) of SubDyn are summed and transferred to the ElastoDyn reference point.

  1. As Elastodyn only adopts 1st and 2nd flap-wise and edge-wise bending mode shape of tower and no torsional mode shape is considered. These adopted mode shapes have taken into account all the inertia of tower except the yaw inertial of tower. Thus, we have to define yaw inertial of tower in Elastodyn file. And for any models (i.e. OC3, OC4 or any other model), PtfmYIner = yaw inertial of platform+ yaw inertia of tower.

Yes, except that the tower model in ElastoDyn includes the 1st and 2nd bending modes in both the fore-aft and side-side directions.

  1. There is no need to keep interface point in Subdyn and reference point of platform in Elastodyn at the same x,y,z coordinates. OpenFAST can consider the position offset and transform the information between Subdyn and Elastodyn.

Correct. A rigid connection is assumed between the platform reference point in ElastoDyn and the interface joint(s) in SubDyn; any offsets between the nodes act as moment arms in the motion and load transfer.

  1. For PtfmCMzt and PtfmRefzt in Elastodyn, are these two values positive when center point and reference point are below ground (onshore) and MSL (offshore)?

These values should be entered as positive values if the points are above the ground/MSL and negative values if the points are below the ground/MSL.

  1. Elastodyn adopts bending mode shapes to simulate blade and tower. Thus, I have noticed that some papers say OpenFAST can not consider the torsion of tower. If we model blade and tower as beam elements. By this way, can tower torsion be considered?

The blade and tower DOFs in ElastoDyn consider bending only, without torsion. Torsion can be modeled in the blades in OpenFAST if you switch from representing the blade structural dynamics from ElastoDyn to BeamDyn. Torsion can be modeled in the tower in OpenFAST either through the nacelle-yaw DOF (through the setting of an appropriate spring stiffness) or if you switch from representing the tower structural dynamics from ElastoDyn to SubDyn.

  1. we can also model the tower as beam elements using subdyn. To realize this aim, we need to deacitve all the DOFs of tower in Elastodyn, and set TowerHt = TowerBsHt (the tower geometry is zeroed). And set PtfmRefzt = - TowerHt (locate the platform in ElastoDyn at the top of the tower). Model the tower and other supporting structure or floating platform in Subdyn, and set the top node point of tower as the interface point.

Yes, except that PtfmRefzt = TowerBsHt = TowerHt. That said, ElastoDyn will require a finite length tower, so you should set TowerBsHt epsilon smaller than TowerHt to get around this error check.

  1. If the tower geometry is zeroed in Elastodyn, will it affect aerodynamic load of tower in Aerodyn15? If my understanding is correct, Aerodyn15 is able to calculate the wind load on tower based on tower nodes defined in Aerodyn15. And the instantaneous positions of tower nodes in Aerodyn15 will be updated based on Elastodyn results through node mapping method. So I am confused when we move tower from Elastodyn to Subdyn, can the wind load on tower be calculated correctly?

This is one limitation OpenFAST has for now: the tower motion/load transfer is only mapped currently between ElastoDyn and AeroDyn. This is a limitation we are planning to address in an upcoming release (to support the mapping between SubDyn and AeroDyn).

Best regards,

Thank you Jason. I feel to get a better understanding of OpenFAST from your reply.

And I want to double check, for all models:
PtfmYIner = yaw inertial of platform (if platform exits)+ yaw inertia of tower

Regards,
Ran

Dear @Ran.Tu,

Yes, I generally agree. Sometimes the effect of the rotational inertia of the tower is small if the platform yaw inertia is large. Adding the rotational inertia of the tower into PtfmYIner is most important when the platform yaw inertia is small.

Best regards,

Dear @Jason.Jonkman ,

I am simulating the free decay of an onshore wind turbine. And I model the tower in Subdyn. Only Elastodyn and Subdyn is enabled in .fst file. In Elasotdyn file, I turned off all tower DOF, and turned on all platform DOF:

True          FlapDOF1    - First flapwise blade mode DOF (flag)
True          FlapDOF2    - Second flapwise blade mode DOF (flag)
True          EdgeDOF     - First edgewise blade mode DOF (flag)
False         TeetDOF     - Rotor-teeter DOF (flag) [unused for 3 blades]
True          DrTrDOF     - Drivetrain rotational-flexibility DOF (flag)
True          GenDOF      - Generator DOF (flag)
False          YawDOF      - Yaw DOF (flag)
False          TwFADOF1    - First fore-aft tower bending-mode DOF (flag)
False          TwFADOF2    - Second fore-aft tower bending-mode DOF (flag)
False          TwSSDOF1    - First side-to-side tower bending-mode DOF (flag)
False          TwSSDOF2    - Second side-to-side tower bending-mode DOF (flag)
True          PtfmSgDOF   - Platform horizontal surge translation DOF (flag)
True          PtfmSwDOF   - Platform horizontal sway translation DOF (flag)
True          PtfmHvDOF   - Platform vertical heave translation DOF (flag)
True          PtfmRDOF    - Platform roll tilt rotation DOF (flag)
True          PtfmPDOF    - Platform pitch tilt rotation DOF (flag)
True          PtfmYDOF    - Platform yaw rotation DOF (flag)

To simulate the free decay, I want to apply intial displacement at tower top in x axis. So I applied an initial platform displacement of 1 meter in x axis with all other intial condition keeping 0:

          0   OoPDefl     - Initial out-of-plane blade-tip displacement (meters)
          0   IPDefl      - Initial in-plane blade-tip deflection (meters)
          0   BlPitch(1)  - Blade 1 initial pitch (degrees)
          0   BlPitch(2)  - Blade 2 initial pitch (degrees)
          0   BlPitch(3)  - Blade 3 initial pitch (degrees) [unused for 2 blades]
          0   TeetDefl    - Initial or fixed teeter angle (degrees) [unused for 3 blades]
          0   Azimuth     - Initial azimuth angle for blade 1 (degrees)
          0   RotSpeed    - Initial or fixed rotor speed (rpm)
          0   NacYaw      - Initial or fixed nacelle-yaw angle (degrees)
          0   TTDspFA     - Initial fore-aft tower-top displacement (meters)
          0   TTDspSS     - Initial side-to-side tower-top displacement (meters)
          1   PtfmSurge   - Initial or fixed horizontal surge translational displacement of platform (meters)
          0   PtfmSway    - Initial or fixed horizontal sway translational displacement of platform (meters)
          0   PtfmHeave   - Initial or fixed vertical heave translational displacement of platform (meters)
          0   PtfmRoll    - Initial or fixed roll tilt rotational displacement of platform (degrees)
          0   PtfmPitch   - Initial or fixed pitch tilt rotational displacement of platform (degrees)
          0   PtfmYaw     - Initial or fixed yaw rotational displacement of platform (degrees)

As the tower height is 87.6, and I need to keep tower zeroed in Elastodyn. So I only assigin 0.001 meter to tower height, by changing TowerBsHt and PtfmRefzt to 87.599:

        87.6   TowerHt     - Height of tower above ground level [onshore] or MSL [offshore] (meters)
       87.599   TowerBsHt   - Height of tower base above ground level [onshore] or MSL [offshore] (meters)
          0   PtfmCMxt    - Downwind distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters)
          0   PtfmCMyt    - Lateral distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters)
          0   PtfmCMzt    - Vertical distance from the ground level [onshore] or MSL [offshore] to the platform CM (meters)
       87.599   PtfmRefzt   - Vertical distance from the ground level [onshore] or MSL [offshore] to the platform reference point (meters)

And platform has no mass and inertia:

          0   PtfmMass    - Platform mass (kg)
          0   PtfmRIner   - Platform inertia for roll tilt rotation about the platform CM (kg m^2)
          0   PtfmPIner   - Platform inertia for pitch tilt rotation about the platform CM (kg m^2)
          0   PtfmYIner   - Platform inertia for yaw rotation about the platform CM (kg m^2)

In Subdyn file, I have located the interface point at (0, 0, 87.599).
But when I start simulation, it aborted with following warning:

Running ElastoDyn.
Nodal outputs section of ElastoDyn input file not found or improperly formatted.
Running SubDyn.
   Fixed bottom case detected
   Performing Craig-Bampton reduction 66 DOFs -> 0 modes + 6 DOFs
   Using static improvement method for gravity and ext. loads
   Calculating Full System Modes for output files
   Exporting Summary file
 Time: 0 of 120 seconds.

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:SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.
SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.


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:SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.
SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.


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:SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.
SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.


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:SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.
SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.


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:SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.
SD_CalcOutput: Angles in GetSmllRotAngs() are larger than 0.4 radians.


FAST_Solution:CalcOutputs_And_SolveForInputs:SolveOption1:FullOpt1_InputOutputSolve:SD_CalcOutput:
Denominator is zero in GetSmllRotAngs().

 OpenFAST encountered an error at simulation time 0.49375 of 120 seconds.
 Simulation error level: FATAL ERROR

 Aborting OpenFAST.

My OpenFAST version is v3.2.1.

  1. Could you please give me some suggestion on this error?

  2. For the damping in Subdyn, I am also confused. It has Damping Ratios for each retained mode and GuyanDampMod. Are there any posts explaining this point? As in my previous model, Elastodyn adopted 1% of critical damping for tower. I don’t know the equivalent configuration in Subdyn.
    How about:

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.
             4   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}
  1. Can Subdyn model tapered beam now? Actually I used different cross-section property at two joints connecting one element. But the Subdyn file said Tapered E-B (unavailable) and 2-node tapered Timoshenko (unavailable):
             1   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)]

Regards,
Ran Tu

Dear @Ran.Tu,

Here are my answers to your questions.

  1. It sounds like you have set up your OpenFAST model correctly to model the entire tower (up to the yaw bearing) within SubDyn rather than ElastoDyn. From the warnings and error, it sounds like your model is going numerically unstable, which I would guess is do to the use of a larger time step than necessary for stability. I would suggest making the time step consistent between ElastoDyn, SubDyn, and the OpenFAST glue code (if they are not already), and dropping this time step (DT in the OpenFAST primary input file). You could also try adding a correction step (NumCrctn = 1 in the OpenFAST primary input file) to see if that helps.

  2. The SubDyn model uses a combination of Guyan and Craig-Bampton modes to represent the structural flexibility of the structure and the damping is specified separately for each of these modes (via GuyanDampMod for the Guyan modes and via JDampings for the Craig-Bampton modes). This is different from the shape function approach used in ElastoDyn, where the shape functions are typically set equal to the mode shapes of the structure. So, the damping specification will not be the same between equivalent SubDyn and ElastoDyn models. To figure out what damping to specify for the Guyan and Craig-Bampton modes to match specific modal damping would likely require you to figure out how the Guyan and Craig-Bampton modes contribute to each mode shape, e.g., through a linearization and subsequent eigenanalysis.

  3. Tapered beam elements are not yet implemented in SubDyn. If you have NDiv > 1 and different beam properties at the two joints of a member, SubDyn will subdivide the member into multiple elements and use interpolated values of mass and stiffness for each element to try to capture some aspect of the tapered element (i.e., representing the tapered beam as a series of uniform beam elements with stepwise changes in beam properties between elements).

Best regards,

Dear @Jason.Jonkman ,

Thanks for your valuable comments.

  1. After I decrease the time step from 0.00625 to 0.000625, it can run smoothly.

  2. I will study the theory. Sorry for my limited knowledge about damping. If I set the damping as below, does it mean the model only have 0.01 for both mass and stiffness proportional damping coefficient? There would be no CB model influence?

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).
             1   GuyanDampMod - Guyan damping {0=none, 1=Rayleigh Damping, 2=user specified 6x6 matrix}
  0.010, 0.010   RayleighDamp - Mass and stiffness proportional damping  coefficients (Rayleigh Damping) [only if GuyanDampMod=1]
  1. Now I see how “equivalent” tapered beam realized in Subdyn if I set NDiv >1. One more question. If NDiv =1 and two joints connecting one member adopt different cross-section. Which one will be used to determine the cross-section of this member? Local joint 1 or local joint 2?

  2. I simulated linear foundation stiffness for onshore wind turbine by 3 Methods (tower is still modelled in Elastodyn):
    #4.1: Extptfm, #4.2 Subdyn (reaction point with SSI stiffness matrix), # 4.3 Hydrodyn with added linear stiffness ( still wave, zeroed PtfmVol0)
    And when I use previous time step 0.00625, they all warn me that Angles in GetSmllRotAngs() are larger than 0.4 radians. After decreasing 0.00625 to 0.000625, Extptfm and Subdyn now can run smoothly. But I have not try #4.3 while I am inclined that #4.3 can also work now.
    One more question about #4.3. It seems that I need to disable potential theory by using zeroed .1, .3, hst file. Do you have these zeroed files?

  3. Actually, it is unclear for me how load and displacement are transferred between Elastodyn, Hydrodyn and Subdyn if I turn on them all.
    It seems that hydrodyn can map hydrodynamic loads to mesh defined in Subdyn. I guess only loads based on strip theory can be distributed on Subdyn mesh. But I don’t know whether potential theory can be used in Hydrodyn if I use subdyn to simulated flexible platform.

Dear @Ran.Tu,

Here are my responses:

  1. When Nmodes = 0, your model has no Craig-Bampton modes at all. The Rayleigh damping method is described in the SubDyn documentation: 4.2.5.6. SubDyn Theory — OpenFAST v3.3.0 documentation.

  2. SubDyn will interpolate the diameter and thickness between the joints, but will not allow material properties to change between the two joints. The unique diameter and thickness at each joint are specified directly.

  3. I provided zero-valued WAMIT data files in my post dated Oct 30, 2012 in the following forum topic: Questions about the HydroDyn Module. You can now also specify AddCLin without specifying WAMIT data by setting PotMod = 1 with ExctnMod = RdtnMod = 0.

  4. When ElastoDyn, SubDyn, and HydroDyn are all enabled, (1) motions of the platform reference point are sent from ElastoDyn to SubDyn and the associated reaction loads are sent from SubDyn to ElastoDyn and (2) motions of the substructure are sent from SubDyn to HydroDyn and the associated hydrodynamic applied loads are sent from HydroDyn to SubDyn. Both the distributed hydrodynamic loads from strip theory and lumped loads from potential flow theory are sent from HydroDyn to SubDyn. To get the correct reaction loads from SubDyn, it would make the most sense to align the strip theory members in HydroDyn with flexible beam elements in SubDyn and to align the potential flow bodies in HydroDyn to joints connected by rigid links in SubDyn.

Best regards,

Dear @Jason.Jonkman ,

Thanks for your reply.

  1. I use the same material property for all joints in Subdyn. But I use different diameter and thickness. If a member is connecting two joints and these two joints are assigned different diameters. In addition, NDiv=1. Now the diameter of this member is equal to the diameter of one in above two nodes? Which one in these two joints is used to decide the diameter of this member?

  2. Could you please correct me if my understanding is wrong?
    In Hydrodyn, potential theory can be enhanced by drag force calculated by strip theory. When modelling large floating platform, I always use potential theory in hydrodyn and set PropPot = 1 to consider drag force (viscous effect) on members. Thus , I will explicitly model the joints and members in Hydrodyn.
    In this situation, I guess I should also model these joints in Subdyn and keep the same position between joints in Subdyn and joints in Hydrodyn. In addition, joints in Subdyn should be connected by rigid links.
    Now I guess the displacement of joints in Subdyn will be mapped to joints in Hydrodyn.
    And I guess drag forces will be distributed from Hydrodyn joints to Subdyn joints. But force based on potential theory seems to be concentrated on reference point of Hydrodyn. How can this force be transferred to Subdyn? Do I need to model an addition joint in Subdyn to represent reference point of Hydrodyn?

Regards,
Ran Tu

Dear @Ran.Tu,

Here are my responses:

  1. My understanding is that in this case SubDyn would only use the diameter and thickness at the first joint (you could review the source code to confirm). But to avoid ambiguity, I would recommend using the same diameter and thickness at both joints of a member if you have NDiv = 1.

  2. If the entire substructure is large volume such that you model it with a single potential flow body, then I would recommend modeling the substructure rigidly. This would be easiest to do by using ElastoDyn to model the substructure instead of SubDyn. Regardless, if the substructure is rigidly modeled in SubDyn, presumably you will not be examining internal member-level loads, so, it really doesn’t matter where you place the joints and rigid links in SubDyn. Internally with OpenFAST, the SubDyn and HydroDyn meshes use point elements, in which case the mesh mapping functionality of OpenFAST will consider nearest neighbor interconnections with offsets in position treated as rigid body moment arms. See the documentation on the mesh-mapping functionality of OpenFAST for more information:
    https://www.nrel.gov/docs/fy14osti/60742.pdf
    AIAA Aerospace Research Central

Best regards,

Thanks for your explanation. :grinning:

Dear @Jason.Jonkman,

  1. I am reading the file of SoilDyn.f90, and what does the ‘linear portion of the stiffness reaction’ mean? And why subtract out the linear piece for reaction force?
  2. How to know the distribution of the tower mesh points?
    Thanks a lot!

Best regards,

case (Calc_REDWIN)
            ! call the dll
         do i=1,size(m%dll_data)
  
            ! copy the state info over to miscvar for passing to dll (we are separating states out to better match the framework)
            m%dll_data(i)%Props        = xd%dll_states(i)%Props
            m%dll_data(i)%StVar        = xd%dll_states(i)%StVar

            ! Copy displacement from point mesh (angles in radians -- REDWIN dll also uses rad)
            Displacement(1:3) = u%SoilMesh%TranslationDisp(1:3,i)                 ! Translations -- This is R8Ki in the mesh
            Displacement(4:6) = GetSmllRotAngs(u%SoilMesh%Orientation(1:3,1:3,i), ErrStat2, ErrMsg2); if (Failed()) return;   ! Small angle assumption should be valid here -- Note we are assuming reforientation is identity

            ! Linear portion of the stiffness reaction (NOTE: the DLL stiffness info is stored in parameters
            if (p%SlDNonLinearForcePortionOnly) then
               ForceLinear = matmul(p%Stiffness(1:6,1:6,i), Displacement)
            endif

            call    REDWINinterface_CalcOutput( p%DLL_Trgt, p%DLL_Model, Displacement, m%ForceTotal(1:6,i), m%dll_data(i), ErrStat2, ErrMsg2 ); if (Failed()) return;

            ! Return reaction force onto the resulting point mesh
            y%SoilMesh%Force (1:3,i)  =  -real(m%ForceTotal(1:3,i),ReKi)
            y%SoilMesh%Moment(1:3,i)  =  -real(m%ForceTotal(4:6,i),ReKi)

            ! Subrtract out the linear piece here
            if (p%SlDNonLinearForcePortionOnly) then
               y%SoilMesh%Force (1:3,i)  =  y%SoilMesh%Force (1:3,i) + real(ForceLinear(1:3),ReKi)
               y%SoilMesh%Moment(1:3,i)  =  y%SoilMesh%Moment(1:3,i) + real(ForceLinear(4:6),ReKi)
            endif
         enddo

Dear @Kevin.Chang,

When SoilDyn is enabled, the linear contribution of the soil stiffness from SoilDyn is transferred directly to SubDyn at initialization, so that the linear contribution of the soil stiffness is solved within SubDyn throughout the OpenFAST simulation and SoilDyn only tracks nonlinear contributions of the soil stiffness. We made this change because the SoilDyn-SubDyn coupling was much more stable with this change.

Best regards,

Dear @Jason.Jonkman,

Really appreciate!
How to define the soil stiffness that you mentioned above? Is it the secant stiffness or tangent stiffness of the given node?
Thanks again!

Best regards,
Kevin

Dear @Kevin.Chang,

I’m not sure I really understand your question, but for a linear stiffness, I would expect both the secant and tangent stiffness to be the same.

Best regards,

Dear @Jason.Jonkman,

I am sorry for not stating it clearly. The secant stiffness is defined as Ksecant=p/y (the slope of the red line), and tangent stiffness is defined as Ktangent=dp/dy (where y->0, the slope of the green line). So, which should be defined as the linear stiffness? Thanks a lot.

Best regards,
Kevin

Stiffness

Dear @Kevin.Chang,

How you are setting up your SoilDyn input file? Currently, SoilDyn only supports a linear stiffness matrix or an interface to the REDWIN DLL. For the former, the curve cannot be nonlinear. For the latter, the linear portion is calculated by the REDWIN DLL (and I’m not sure how it calculates the linear stiffness).

Best regards,

Dear @Jason.Jonkman ,

I am preparing to use the distributed springs model for simulation of pile-soil interaction (change the source code), and model the pile in SubDyn as a structural member to its free end below the seabed.

Best regards,
Kevin