DTU 10-MW Reference Wind Turbine

Dear Dr. Roger

Thank you very much!

best regards
Lixian Zhang

Hi Lixian,

Glad to see that you got the ROSCO controller working. A few quick questions: Is the x-axis here time-steps? Or time?

Also, I am not sure I see what you mean when you say that there are “some numerical instabilities in the generator power”. Are you referring to the drops in generator power (e.g. around 1600 time-steps)? If so, these are likely attributed to the turbine dipping into region two - perhaps tuning the controller or the set-point smoother could improve this behavior a bit, but it does not look abnormal.

As far as the 18m/s simulation (Figure 2), this is certainly strange and something that I have not seen before. I just ran a 10 minute simulation at 18 m/s and am not seeing similar results (shown below). I also just pulled the most recent IEA 10MW model before running. Have you changed anything in the model, other than file paths and wind speeds?


Thanks,
Nikhar

Dear Dr. Nikhar

Thanks for your reply!
Sorry about the vague, the X-axis is referred to the simulation time, not time step. The simulation time is 5000s.

  1. Yes, "some numerical instabilities in the generator power’’ means the drops in the generator power(1600 s) ,in the turbulent wind simulation.
  2. For 18 m/s simulation, the simulation results seems quite good in the first 1800s. However, the results are quite strange after 1800s. I didn’t change anything for IEA 10 MW wind turbines. I’m not familiar with the controller before. Maybe not the controller issues? I will download the recent model of IEA wind 10MW in GitHub and to see if the same problems happened.

I would be appreciate it if I can receive you reply.
Thanks again!

Best regards
Lixian Zhang

Dear Jason and Matt,

For the regular wave simulation on OO-star semi floater there is a strange behavior. A sudden jump in the mooring line tensions (after 512secs) but no effect on platform displacements. LIFES50+ project also mentioned such behavior in their report. Could you explain the cause for such instability?

Thank and regards
Abhinay Goga

Hi Lixian,
I am not currently able to re-construct your results. I am running OpenFAST in single precision with a 64 bit architecture and the most recent version of ROSCO. My results are below. Let me know if if your problems persist after updating your IEA 10MW model.

Also, just to note, the power is slightly offset from 10MW in these results - this is due to a bug in how the rated torque was calculated for the DISCON.IN file in this model. I’ve talked to the person managing this and it will be remedied soon.

Nikhar

Dear Abhinay,

I appreciate you bringing this up and sharing the illustrative plots. This has come up before, and it’s tricky because I can’t think of anything in MoorDyn that would cause a change in behavior partway through a simulation. Other instances of this are documented in these threads:

When the change occurs seems to depend on the time step size, and it only seems to be a problem in some versions of FAST/OpenFAST.

Could you let us know what version of FAST/OpenFAST you’re using, and what MoorDyn time step size (dtM) you’ve set?

If this is occurring with the current version, we will try to replicate the problem and investigate further.

Best,
Matt

Dear Matt,

The previous simulations were performed with FAST v8.16 and dtM 0.001. Following your comments in attached thread, I ran a new simulation with OpenFAST v2.3.0 and increased MoorDyn time step (dtM) to 0.0001. Yet the behavior remains same after 512secs and surprisingly the rise in magnitude seems a bit higher compared to the one with FAST v8.16.

Kind regards
Abhinay Goga

Dear Abhinay,

We traced this problem with the tensions back to how the time variable is stored in MoorDyn. It seems that the existing single-precision float causes problems with the interpolation/extrapolation of fairlead kinematics when the simulation time reaches a certain point (in this case 512 s). I was able to solve the problem by changing the variable to double precision. (I wish I had fixed this years ago, but unfortunately I did very little maintenance of the Fortran version of MoorDyn prior to joining NREL.)

If I remember right, you have been compiling OpenFAST yourself. In that case, you can access the updated code here: github.com/mattEhall/openfast/tree/MDmods

We will get this fix included in the next release of OpenFAST.

Thanks again for bringing this issue to our attention.
Matt

Dear all,

I am using the ROSCO controller to simulate a floating wind turbine. According to the above discussions, I downloaded the controller files DISCON_IEA_offshore, IEA-10.0-198-RWT_DISCON.IN and IEA-10.0-198-RWT_Cp_Ct_Cq.txt, applied them in the ServoDyn file and ran the simulation.

The question is that no matter I enable or disable the pitch control, the blade pitch angle came to be 90 after several seconds, and the power coefficient cp droped to about -1. Also, the power exceeds the rated power (10 MW), reaches to about 350MW, which is quite strange. I guess the power issue is related to the blade pitch error, but I cannot figure out what’s wrong with my input files. I also tried to change the wind speed or disable the inflow wind, but the problem was not solved.

The related results and the ServoDyn file is shown below. I would be appreciate if anyone could help to check and give any suggestions on this problem.

------- SERVODYN v1.05.* INPUT FILE --------------------------------------------
Generated with AeroElasticSE FAST driver
---------------------- SIMULATION CONTROL --------------------------------------
False Echo - Echo input data to .ech (flag)
“default” DT - Communication interval for controllers (s) (or “default”)
---------------------- PITCH CONTROL -------------------------------------------
5 PCMode - Pitch control mode {0: none, 3: user-defined from routine PitchCntrl, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
0.0 TPCOn - Time to enable active pitch control (s) [unused when PCMode=0]
9999.9 TPitManS(1) - Time to start override pitch maneuver for blade 1 and end standard pitch control (s)
9999.9 TPitManS(2) - Time to start override pitch maneuver for blade 2 and end standard pitch control (s)
9999.9 TPitManS(3) - Time to start override pitch maneuver for blade 3 and end standard pitch control (s) [unused for 2 blades]
10.0 PitManRat(1) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 1 (deg/s)
10.0 PitManRat(2) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 2 (deg/s)
10.0 PitManRat(3) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 3 (deg/s) [unused for 2 blades]
0.0 BlPitchF(1) - Blade 1 final pitch for pitch maneuvers (degrees)
0.0 BlPitchF(2) - Blade 2 final pitch for pitch maneuvers (degrees)
0.0 BlPitchF(3) - Blade 3 final pitch for pitch maneuvers (degrees) [unused for 2 blades]
---------------------- GENERATOR AND TORQUE CONTROL ----------------------------
5 VSContrl - Variable-speed control mode {0: none, 1: simple VS, 3: user-defined from routine UserVSCont, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
1 GenModel - Generator model {1: simple, 2: Thevenin, 3: user-defined from routine UserGen} (switch) [used only when VSContrl=0]
94.0 GenEff - Generator efficiency [ignored by the Thevenin and user-defined generator models] (%)
True GenTiStr - Method to start the generator {T: timed using TimGenOn, F: generator speed using SpdGenOn} (flag)
True GenTiStp - Method to stop the generator {T: timed using TimGenOf, F: when generator power = 0} (flag)
9999.9 SpdGenOn - Generator speed to turn on the generator for a startup (HSS speed) (rpm) [used only when GenTiStr=False]
0.0 TimGenOn - Time to turn on the generator for a startup (s) [used only when GenTiStr=True]
9999.9 TimGenOf - Time to turn off the generator (s) [used only when GenTiStp=True]
---------------------- SIMPLE VARIABLE-SPEED TORQUE CONTROL --------------------
49.76235 VS_RtGnSp - Rated generator speed for simple variable-speed generator control (HSS side) (rpm) [used only when VSContrl=1]
200955.1398 VS_RtTq - Rated generator torque/constant generator torque in Region 3 for simple variable-speed generator control (HSS side) (N-m) [used only when VSContrl=1]
81.1516502 VS_Rgn2K - Generator torque constant in Region 2 for simple variable-speed generator control (HSS side) (N-m/rpm^2) [used only when VSContrl=1]
9.9999e-06 VS_SlPc - Rated generator slip percentage in Region 2 1/2 for simple variable-speed generator control (%) [used only when VSContrl=1]
---------------------- SIMPLE INDUCTION GENERATOR ------------------------------
9999.9 SIG_SlPc - Rated generator slip percentage (%) [used only when VSContrl=0 and GenModel=1]
9999.9 SIG_SySp - Synchronous (zero-torque) generator speed (rpm) [used only when VSContrl=0 and GenModel=1]
9999.9 SIG_RtTq - Rated torque (N-m) [used only when VSContrl=0 and GenModel=1]
9999.9 SIG_PORt - Pull-out ratio (Tpullout/Trated) (-) [used only when VSContrl=0 and GenModel=1]
---------------------- THEVENIN-EQUIVALENT INDUCTION GENERATOR -----------------
9999.9 TEC_Freq - Line frequency [50 or 60] (Hz) [used only when VSContrl=0 and GenModel=2]
9998 TEC_NPol - Number of poles [even integer > 0] (-) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_SRes - Stator resistance (ohms) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_RRes - Rotor resistance (ohms) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_VLL - Line-to-line RMS voltage (volts) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_SLR - Stator leakage reactance (ohms) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_RLR - Rotor leakage reactance (ohms) [used only when VSContrl=0 and GenModel=2]
9999.9 TEC_MR - Magnetizing reactance (ohms) [used only when VSContrl=0 and GenModel=2]
---------------------- HIGH-SPEED SHAFT BRAKE ----------------------------------
0 HSSBrMode - HSS brake model {0: none, 1: simple, 3: user-defined from routine UserHSSBr, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
9999.9 THSSBrDp - Time to initiate deployment of the HSS brake (s)
0.6 HSSBrDT - Time for HSS-brake to reach full deployment once initiated (sec) [used only when HSSBrMode=1]
28116.2 HSSBrTqF - Fully deployed HSS-brake torque (N-m)
---------------------- NACELLE-YAW CONTROL -------------------------------------
0 YCMode - Yaw control mode {0: none, 3: user-defined from routine UserYawCont, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch)
9999.9 TYCOn - Time to enable active yaw control (s) [unused when YCMode=0]
0.0 YawNeut - Neutral yaw position–yaw spring force is zero at this yaw (degrees)
9028320000.0 YawSpr - Nacelle-yaw spring constant (N-m/rad)
19160000.0 YawDamp - Nacelle-yaw damping constant (N-m/(rad/s))
9999.9 TYawManS - Time to start override yaw maneuver and end standard yaw control (s)
0.25 YawManRat - Yaw maneuver rate (in absolute value) (deg/s)
0.0 NacYawF - Final yaw angle for override yaw maneuvers (degrees)
---------------------- TUNED MASS DAMPER ---------------------------------------
False CompNTMD - Compute nacelle tuned mass damper {true/false} (flag)
“” NTMDfile - Name of the file for nacelle tuned mass damper (quoted string) [unused when CompNTMD is false]
False CompTTMD - Compute tower tuned mass damper {true/false} (flag)
“” TTMDfile - Name of the file for tower tuned mass damper (quoted string) [unused when CompTTMD is false]
---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface]
“D:\OpenFAST\DTU_10MW\DISCON_IEA_offshore.dll” DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface]
“D:\OpenFAST\DTU_10MW\IEA-10.0-198-RWT_DISCON.IN” DLL_InFile - Name of input file sent to the DLL (-) [used only with Bladed Interface]
“DISCON” DLL_ProcName - Name of procedure in DLL to be called (-) [case sensitive; used only with DLL Interface]
“default” DLL_DT - Communication interval for dynamic library (s) (or “default”) [used only with Bladed Interface]
False DLL_Ramp - Whether a linear ramp should be used between DLL_DT time steps [introduces time shift when true] (flag) [used only with Bladed Interface]
9999.9 BPCutoff - Cuttoff frequency for low-pass filter on blade pitch from DLL (Hz) [used only with Bladed Interface]
0.0 NacYaw_North - Reference yaw angle of the nacelle when the upwind end points due North (deg) [used only with Bladed Interface]
0 Ptch_Cntrl - Record 28: Use individual pitch control {0: collective pitch; 1: individual pitch control} (switch) [used only with Bladed Interface]
0.0 Ptch_SetPnt - Record 5: Below-rated pitch angle set-point (deg) [used only with Bladed Interface]
0.0 Ptch_Min - Record 6: Minimum pitch angle (deg) [used only with Bladed Interface]
0.0 Ptch_Max - Record 7: Maximum pitch angle (deg) [used only with Bladed Interface]
0.0 PtchRate_Min - Record 8: Minimum pitch rate (most negative value allowed) (deg/s) [used only with Bladed Interface]
0.0 PtchRate_Max - Record 9: Maximum pitch rate (deg/s) [used only with Bladed Interface]
0.0 Gain_OM - Record 16: Optimal mode gain (Nm/(rad/s)^2) [used only with Bladed Interface]
0.0 GenSpd_MinOM - Record 17: Minimum generator speed (rpm) [used only with Bladed Interface]
0.0 GenSpd_MaxOM - Record 18: Optimal mode maximum speed (rpm) [used only with Bladed Interface]
0.0 GenSpd_Dem - Record 19: Demanded generator speed above rated (rpm) [used only with Bladed Interface]
0.0 GenTrq_Dem - Record 22: Demanded generator torque above rated (Nm) [used only with Bladed Interface]
0.0 GenPwr_Dem - Record 13: Demanded power (W) [used only with Bladed Interface]
---------------------- BLADED INTERFACE TORQUE-SPEED LOOK-UP TABLE -------------
0 DLL_NumTrq - Record 26: No. of points in torque-speed look-up table {0 = none and use the optimal mode parameters; nonzero = ignore the optimal mode PARAMETERs by setting Record 16 to 0.0} (-) [used only with Bladed Interface]
GenSpd_TLU GenTrq_TLU
(rpm) (Nm)
---------------------- OUTPUT --------------------------------------------------
True SumPrint - Print summary data to .sum (flag) (currently unused)
1 OutFile - Switch to determine where output will be placed: {1: in module output file only; 2: in glue code output file only; 3: both} (currently unused)
True TabDelim - Use tab delimiters in text tabular output file? (flag) (currently unused)
“ES10.3E2” OutFmt - Format used for text tabular output (except time). Resulting field should be 10 characters. (quoted string) (currently unused)
0.0 TStart - Time to begin tabular output (s) (currently unused)
OutList - The next line(s) contains a list of output parameters. See OutListParameters.xlsx for a listing of available output channels, (-)
“GenPwr”
“GenTq”
END of input file (the word “END” must appear in the first 3 columns of this last OutList line)

Regards,
Yajun
Blade pitch.JPG
GenPwr.JPG
RatAeroCp.JPG

Dear Matt,

Thanks for the source code and suggestion to recompile with double precision. As expected it took tremendous amount of simulation time with double precision. Though its worth it. As you can observe there isn’t any strange behavior on the fairlead tensions.

Kind regards
Abhinay Goga

Dear Abhinay,

Matt wasn’t suggesting that you recompile in double precision, but to use his branch where the time variable is stored in double, even when compiling in single precision. This should solve the MoorDyn problem and still run fast.

Best regards,

Dear Jason,

Thanks for correcting me. The code that Mr.Matt provided with single precision also provided a stable numerical output.

Kind regards
Abhinay Goga

Great!

Dear Dr. Nikhar

I’m sorry for the late response. The simulation problem has been solved after I used the latest version of 10MW WT downloaded in GitHub.
Thank you very much.
Also, many thanks to Dr. Roger and Jason!

Best regards
Lixian Zhang

Hi,

I am simulating DTU 10MW as offshore wind turbine. So, could I know where can I find the Hydrodyn and subdyn input files for DTU 10MW? If I use NREL5MW input files by changing inputs (attached), I am not getting the desired mudline loads (resulting zero shear force and bending in two directions and lower values in one direction).

Thanks,
Satish J
DTU_10MW.zip (9.88 KB)

Hi Satish,

The repository for the OpenFAST model of the IEA Wind Task 37 version of the DTU 10-MW reference turbine is available here: github.com/IEAWindTask37/IEA-10.0-198-RWT. I don’t see an offshore configuration defined here. I know there was an OpenFAST model shared of this turbine atop a monopile within IEA Wind Task 30 OC6 Phase II, but this was only shared with participants of that task.

Did you create the SubDyn and HydroDyn inputs you attached?

Can you clarify what problems you are seeing? I don’t see that you attached the corresponding ElastoDyn input file. Did you set the tower base in ElastoDyn to be at 10-m above MSL and enable the platform DOFs to properly couple ElastoDyn with SubDyn?

Best regards,

Dear Jason,

Thanks for your reply.

I have edited only the diameter of monopile in NREL5MW hydrodyn and subdyn files.

I did change the input values in Elastodyn now, but getting NaN in the output. I have attached all related input files.

Thanks,
Satish J
DTU_10MW_RWT_out.zip (680 KB)
DTU_10MW_RWT.zip (29.3 KB)

Dear Satish,

From my quick review of your files, I’m not seeing any obvious problems, but the NaNs in the output suggest that the model is going numerically unstable. Your time step is already quite small, so, while the use of too large a time step is often the cause of the problem, I’m not sure that is the case in your model. Regardless, I would suggest simplifying the model to debug. Are there specific DOFs, when enabled, that cause the model to go unstable?

Best regards,

Dear Jason,

Thanks for your response.

As you suggested, I did check with DOFs. When I disable Platform yaw rotation DOF (PtfmYDOF), it runs smoothly without any NaN. Could I please what would be the reason, how would I resolve this. Is there anything I need to change in input files?

Thanks,
Satish J

Dear Satish,

Ah, now I know what the problem is. I see that you have PtfmYDOF = YawDOF = TRUE, with PtfmYIner = 0. ElastoDyn does not consider the inertia of the tower about its centerline. So, if both PtfmYDOF and YawDOF = TRUE, you must have some nonzero PtfmYIner set (e.g., to represent the tower inertia about its centerline), otherwise the yaw inertia about the platform will be zero and ill conditioned, resulting in NaNs. This is discussed more in Section 5.4 of the draft SubDyn User’s Guide and Theory Manual (drive.google.com/file/d/1mX-_qI … sp=sharing)

Best regards,