Simulating the parked turbine

Dear Salem,

From your plots, the problem appears to originate from the platform-yaw DOF (or perhaps the platform-roll DOF) in the presence of a very large wave. The default OC3-Hywind spar model includes a yaw-spring (to mimic the delta connection of the mooring system), modeled as the (6,6) element of the additional platform stiffness matrix (AddCLin) in HydroDyn. Have you modified this spring in some way? Does disabling the platform-yaw DOF in ElastoDyn (PtfmYDOF=False) or increasing AddCLin(6,6) eliminate the problem?

Best regards,

Dear Jason
Yes the simulation runs smoothly when I set Yaw DOF=False. I have not modified the default OC3-Hywind spar model yaw stiffness which I take it is included in the accompanying WAMIT .hst files. See below the hydrodyn input file:

------- HydroDyn v2.03.* Input File --------------------------------------------
NREL 5.0 MW offshore baseline floating platform HydroDyn input properties for the OC3 Hywind.
False Echo - Echo the input file data (flag)
---------------------- ENVIRONMENTAL CONDITIONS --------------------------------
1025 WtrDens - Water density (kg/m^3)
320 WtrDpth - Water depth (meters)
0 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 ---------------------------------------------------
2 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]
3660 WaveTMax - Analysis time for incident wave calculations (sec) [unused when WaveMod=0; determines WaveDOmega=2Pi/WaveTMax in the IFFT]
0.25 WaveDT - Time step for incident wave calculations (sec) [unused when WaveMod=0; 0.1<=WaveDT<=1.0 recommended; determines WaveOmegaMax=Pi/WaveDT in the IFFT]
1.316000e+01 WaveHs - Significant wave height of incident waves (meters) [used only when WaveMod=1, 2, or 3]
1.422000e+01 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]
0 WaveDir - Incident wave propagation heading direction (degrees) [unused when WaveMod=0 or 6]
0 WaveDirMod - Directional spreading function {0: none, 1: COS2S} (-) [only used when WaveMod=2,3, or 4]
1 WaveDirSpread - Wave direction spreading coefficient ( > 0 ) (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1]
1 WaveNDir - Number of wave directions (-) [only used when WaveMod=2,3, or 4 and WaveDirMod=1; odd number only]
90 WaveDirRange - Range of wave directions (full range: WaveDir +/- 1/2*WaveDirRange) (degrees) [only used when WaveMod=2,3,or 4 and WaveDirMod=1]
123456823 WaveSeed(1) - First random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6]
1011121348 WaveSeed(2) - Second random seed of incident waves [-2147483648 to 2147483647] (-) [unused when WaveMod=0, 5, or 6]
TRUE WaveNDAmp - Flag for normally distributed amplitudes (flag) [only used when WaveMod=2, 3, or 4]
“” WvKinFile - Root name of externally generated wave data file(s) (quoted string) [used only when WaveMod=5 or 6]
1 NWaveElev - Number of points where the incident wave elevations can be computed (-) [maximum of 9 output locations]
0 WaveElevxi - List of 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]
1 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]
6.000000e-01 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]
1 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)
“…/Wave/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) [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) [only used when PotMod=1]
8029.21 PtfmVol0 - Displaced volume of water when the platform is in its undisplaced position (m^3) [only used when PotMod=1; USE THE SAME VALUE COMPUTED BY WAMIT AS OUTPUT IN THE .OUT FILE!]
0 PtfmCOBxt - The xt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1]
0 PtfmCOByt - The yt offset of the center of buoyancy (COB) from the platform reference point (meters) [only used when PotMod=1]
1 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; 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; DT<=RdtnDT<=0.1 recommended; determines RdtnOmegaMax=Pi/RdtnDT in the cosine transform]
---------------------- 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]
0 NewmanApp - Mean- and slow-drift 2nd-order forces computed with Newmans 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. 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}
---------------------- FLOATING PLATFORM FORCE FLAGS -------------------------- [unused with WaveMod=6]
True PtfmSgF - Platform horizontal surge translation force (flag) or DEFAULT
True PtfmSwF - Platform horizontal sway translation force (flag) or DEFAULT
True PtfmHvF - Platform vertical heave translation force (flag) or DEFAULT
True PtfmRF - Platform roll tilt rotation force (flag) or DEFAULT
True PtfmPF - Platform pitch tilt rotation force (flag) or DEFAULT
True PtfmYF - Platform yaw rotation force (flag) or DEFAULT
---------------------- PLATFORM ADDITIONAL STIFFNESS AND DAMPING --------------
0 0 0 0 0 0 AddF0 - Additional preload (N, N-m)
0 0 0 0 0 0 AddCLin - Additional linear stiffness (N/m, N/rad, N-m/m, N-m/rad)
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 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))
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 AddBQuad - Additional quadratic drag(N/(m/s)^2, N/(rad/s)^2, N-m(m/s)^2, N-m/(rad/s)^2)
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
0 0 0 0 0 0
---------------------- AXIAL COEFFICIENTS --------------------------------------
1 NAxCoef - Number of axial coefficients (-)
AxCoefID AxCd AxCa AxCp
(-) (-) (-) (-)
1 0.00 0.00 1.00
---------------------- MEMBER JOINTS -------------------------------------------
4 NJoints - Number of joints (-) [must be exactly 0 or at least 2]
JointID Jointxi Jointyi Jointzi JointAxID JointOvrlp [JointOvrlp= 0: do nothing at joint, 1: eliminate overlaps by calculating super member]
(-) (m) (m) (m) (-) (switch)
1 0.00000 0.00000 -120.00000 1 0
2 0.00000 0.00000 -12.00000 1 0
3 0.00000 0.00000 -4.00000 1 0
4 0.00000 0.00000 10.00000 1 0
---------------------- MEMBER 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 SimplAxCa SimplAxCaMG SimplAxCp SimplAxCpMG
(-) (-) (-) (-) (-) (-) (-) (-) (-) (-)
0.60 0.00 0.00 0.00 1.00 1.00 1.00 1.00 1.00 1.00
---------------------- DEPTH-BASED HYDRODYNAMIC COEFFICIENTS (model 2) ---------
0 NCoefDpth - Number of depth-dependent coefficients (-)
Dpth DpthCd DpthCdMG DpthCa DpthCaMG DpthCp DpthCpMG 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 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 TRUE
2 2 3 1 2 0.5000 1 TRUE
3 3 4 2 2 0.5000 1 TRUE
---------------------- FILLED MEMBERS ------------------------------------------
0 NFillGroups - Number of filled member groups (-) [If FillDens = DEFAULT, then FillDens = WtrDens; FillFSLoc is related to MSL2SWL]
FillNumM FillMList FillFSLoc FillDens
(-) (-) (m) (kg/m^3)
---------------------- MARINE GROWTH -------------------------------------------
0 NMGDepths - Number of 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 --------------------------------------------------
False 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]
“ES11.4e2” OutFmt - Output format for numerical results (quoted string) [not checked for validity!]
“A11” OutSFmt - Output format for header strings (quoted string) [not checked for validity!]
---------------------- OUTPUT CHANNELS -----------------------------------------
“Wave1Elev”
END of output channels and end of file. (the word “END” must appear in the first 3 columns of this line)

Dear Salem,

The (6,6) element of AddCLin is 98340000 Nm/rad in your HydroDyn input file, which is what I expect it should be; this is the yaw spring. Because disabling the PtfmYDOF eliminates the problem, I would recommend re-enabling PtfmYDOF and trying to increase AddCLin(6,6) to see if that also solves the problem.

Best regards,

Dear Jason
Pardon my trivial question, but do i increase it by any arbitrary magnitude?

Dear Salem,

I’m trying to understand if the problem is simply that the conditions are too extreme for the yaw spring to withstand. I can’t recommend a specific value, but you could examine the sensitivity (e.g., doubling the value, 10x the value) to see the effect.

Best regards,

Dear Jason
I increased the yaw stiffness by x10 and x100 but the same error occurs at the same time step.
Regards
Salem

Dear Salem,

It is a bit surprising to me that the problem seems associated with the platform-yaw DOF, but changing the yaw stiffness makes no difference how and when the simulation fails. When you increase the yaw stiffness, you are seeing a difference in the yaw response before the point of simulation failure, correct?

Best regards,

Dear Jason
I ran two simulations, with yaw stiffness of 98340000Nm/rad and 9834000000Nm/rad. I’ve attached the results. The platform appears to be stiff in the yaw DOF as expected, yet the simulation still aborts.


I have also attached simulation with PtfmYaw DOF= FALSE:

Looking forward to hearing from you.
Regards

Hi Salem,

I’m a bit puzzled by these results…disabling the platform-yaw DOF solves the problem, but increasing the platform-yaw stiffness so as to mitigate the yaw response does not seem to have any impact. The problem seems directly related to the large wave that hits at around 200 s. Does reducing the time step a bit (say, dropping from 0.0125 s to 0.01 s) solve the problem?

Best regards,

Dear Jason
Dropping the time step to 0.01 s didn’t resolve the problem. These huge waves physically makes sense, I’d appreciate any more suggestions s to how OpenFAST can run smoothly at these conditions.
Regards

Dear Salem,

Sorry, but I’m still not sure I know what the cause of this numerical instability is. I also see a spike in the rotor speed. What happens if you disable the controller (PCMode = 0) and fix the rotor speed at rated (GenDOF = False, RotSpeed = 12.1 rpm)?

Best regards,

Dear Dr. Jason
Thanks for you reading my message.
I’m using FAST V8 to simulate the parked condition of floating wind turbine in shallow water depth (50 m). And FAST stop running because of large platform motion. I have searched another people question here which is similar to my problem. In the load case defination, the extreme sea condition is Hs=9.5 m and Tp is 17.28 s. I think maybe the reason is that the natural frequency of the platform pitch motion (19 s) is close to the peak period. Therefore, I added additional damping in pitch motion, and used AeroDyn v14 to simulate the aerodynamic loads. It worked eventually.
1’. My frirst question is that why AeroDyn v15 can not work even if I set the wakemode=0 and AFAeroMod = 1. Note: both for the use of AeroDyn v14 and v 15, The RotSpeed, GenDOF, PCMod were all changed to 0, and BlPitch are changed to 90 degree.

  1. Even if AreoDyn v14 can worked, I find the simulation results is weird. As we can see in the following pictures. Is the thrust force normal in parked condition? Why the negative value appeared? And I think pitch motion is too large in parked condition.

I would be appericate if you can give me some advice!
Thank you very much!

Best regards
Lixian Zhang

Dear Lixian,

Regarding (1), I’m not sure what you mean when you say “why AeroDyn v15 can not work even if I set the wakemode=0 and AFAeroMod = 1”. I would expect that AeroDyn v15 would work without problem with these settings and give the same results as AeroDyn v14 under equivalent settings. What problem are you running into?

Regarding (2), you haven’t stated which FAST output you are plotting, but I would assume you are using ElastoDyn output RotThrust. This output is the reaction force transmitted from the rotor to the shaft, so, not only includes the applied aerodynamic forces, but also the forces resulting from rotor weight and inertia (see related forum posts on this topic), which is likely why the thrust swaps sign. You haven’t stated what floating system you are modeling, so, I can’t comment on if the platform-pitch motion is appropriate for the conditions simulated.

Best regards,

Dear Dr.Jason

Thanks very much for your quick response.
Regarding (1) : thank you, I have solved the problem, AeroDyn v15 can work now.
Regarding (2): Yes, I am using elastoDyn output Thrust force. After I checked the related forum post, I understood that the RotThrust is not only including the aerodynamic loads. I also found RtAeroFxh can output pure aerodynamic loads according to the forum post and the aerodynamic loads under extreme sea condition is small. The Floating system used in the simulation is V-shaped semisubemersible FOWT as shown below. The pitch natural frequency is around 19 s and peak frequency of the wave spectrum is 17.02 s. Will it be the similar period between pitch mode and wave frequency that causes the excessive structural response in pitch motion? And is the platform-pitch motion appropriate for the conditions simulated?
V-shapedsmei.png

Thanks again!

Best regards
Lixian Zhang

Dear Lixian,

Yes, I would guess the closeness between the wave-excitation frequencies and the platform-pitch natural frequency is the cause for the large pitch motion in your case. If you haven’t already, I would suggest calculating the Response Amplitude Operators (RAOs) of the system to better understand its behavior. You can calculate RAOs using FAST, as discussed in our ISOPE 2013 paper: nrel.gov/docs/fy13osti/58098.pdf.

Best regards,

Dear Dr.Jason

Thanks for you suggestions! Yes, maybe I should calculate the RAO first.

Best regards
Lixian Zhang

Dear Jason
I am still unable to simulate 50 years extreme conditions of Uref 51m/s, Hs=13m and Tp=14s for the OC3-Hywind. The simulation keeps getting numerically unstable with the Small angle assumption violated in SUBROUTINE SmllRotTrans() due to a large platform displacement. Setting PtfmPDOF= False makes the simulation run without errors. I have only changed the environmental conditions in the Test24 of FAST repository.
I look forward to getting your invaluable suggestions on how to address this issue.
Regards
Salem

Dear Salem,

Earlier in this forum topic you were asking questions about DLC 1.6a, where the turbine is operating under extreme waves. Did you finally get that simulation to work as expected?

Are you now asking about load case 6.X, where the turbine is parked/idling under extreme waves? Have you pitched the blades to feather, disabled the torque, and disabled the aerodynamic induction and unsteady airfoil aerodynamics?

Best regards.

Dear Jason
I am still unable to run simulations with extreme sea state either Dlc1. 6 or 6. x. For the latter the idling condition has been set up : blades feathered at 90deg, aerodyn setting set as you’ve indicated on several posts, pcmode disabled. The simulations go unstable with the sea state defined by the 50yr Hs and Tp. I have tried both FASTv8 and OpenFAST. When i reduce HS to around 10m the simulations run well or if i disable Platform pitch dof.
Regards

Dear Salem,

For DLC 1.6a, did you try disabling the controller (PCMode = 0) and fixing the rotor speed at rated (GenDOF = False, RotSpeed = 12.1 rpm) as I asked on Nov 26?

For DLC 6.X, what does the response look like when you say it is unstable? Does increasing the yaw spring stiffness have any effect on DLC 6.X?

Best regards,