Running OpenFAST with Bladed-style DLL but without .in input file
Hi,
Is it possible to run the OpenFAST simulation with controller set to Bladed style DLL and connected to a ROSCO controller DLL but without using a .in file at all? If yes, how can that be done?
Thanks
Dear @GBA217,
Not all Bladed-style DISCON controller DLLs need a DISCON.IN file (such as the baseline controllers provided in this OpenFAST repository for the NREL 5-MW baseline wind turbine). but the ROSCO controller DLL does require a DISCON.IN file.
Best regards,
Dear Dr. Jonkman,
I'm experiencing an issue similar to the one discussed in GBA217. My goal is to generate a Campbell diagram for the 5MW_Land_BD_Linear_Aero example using the latest OpenFAST version (2025.9.3).
My process involves running linear steady-state simulations from 3 m/s to 11 m/s, which works fine using the simple control settings (PCMode = 0). However, when I try to run a simulation at 13 m/s (above rated wind speed), the simple control model is insufficient, as it doesn't limit the generator power and rotor speed.
To address this, I want to use PCMode = 5 to call a DLL for active pitch control. I plan to first perform a nonlinear steady-state simulation to obtain the correct steady-state pitch angle, which I will then use for the linearization simulation.
I've updated the ServoDyn file to use PCMode = 5 and point to DISCON.DLL. However, the simulation fails to run.
Interestingly, another example, 5MW_OC4Semi_WSt_WavesWN, also uses PCMode = 5 and runs successfully with a different DLL (DISCON_OC3Hywind.dll). Similar to what you mentioned, the DISCON.IN file may not be required for the DISCON_OC3Hywind.dll, which makes me suspect the issue lies elsewhere.
Below are my ServoDyn settings for the 5MW_Land_BD_Linear_Aero example and the error log from the command prompt.
ServoDyn Input File ------- SERVODYN INPUT FILE -------------------------------------------- NREL 5.0 MW Baseline Wind Turbine for Use in Offshore Analysis. Properties from Dutch Offshore Wind Energy Converter (DOWEC) 6MW Pre-Design (10046_009.pdf) and REpower 5M 5MW (5m_uk.pdf) ---------------------- SIMULATION CONTROL -------------------------------------- False Echo - Echo input data to <RootName>.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 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] 8 PitManRat(1) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 1 (deg/s) 8 PitManRat(2) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 2 (deg/s) 8 PitManRat(3) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 3 (deg/s) [unused for 2 blades] 90 BlPitchF(1) - Blade 1 final pitch for pitch maneuvers (degrees) 90 BlPitchF(2) - Blade 2 final pitch for pitch maneuvers (degrees) 90 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) 2 GenModel - Generator model {1: simple, 2: Thevenin, 3: user-defined from routine UserGen} (switch) [used only when VSContrl=0] 94.4 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.1 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 -------------------- 1173.7 VS_RtGnSp - Rated generator speed for simple variable-speed generator control (HSS side) (rpm) [used only when VSContrl=1] 43093.55 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] 1e-2 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] 10 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 YawNeut - Neutral yaw position--yaw spring force is zero at this yaw (degrees) 9.02832E+09 YawSpr - Nacelle-yaw spring constant (N-m/rad) 19160000 YawDamp - Nacelle-yaw damping constant (N-m/(rad/s)) 9999.9 TYawManS - Time to start override yaw maneuver and end standard yaw control (s) 2 YawManRat - Yaw maneuver rate (in absolute value) (deg/s) 0 NacYawF - Final yaw angle for override yaw maneuvers (degrees) ---------------------- AERODYNAMIC FLOW CONTROL -------------------------------- 0 AfCmode - Airfoil control mode {0: none, 1: cosine wave cycle, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch) 0 AfC_Mean - Mean level for cosine cycling or steady value (-) [used only with AfCmode==1] 0 AfC_Amp - Amplitude for for cosine cycling of flap signal (-) [used only with AfCmode==1] 0 AfC_Phase - Phase relative to the blade azimuth (0 is vertical) for for cosine cycling of flap signal (deg) [used only with AfCmode==1] ---------------------- STRUCTURAL CONTROL -------------------------------------- 0 NumBStC - Number of blade structural controllers (integer) "unused" BStCfiles - Name of the files for blade structural controllers (quoted strings) [unused when NumBStC==0] 0 NumNStC - Number of nacelle structural controllers (integer) "unused" NStCfiles - Name of the files for nacelle structural controllers (quoted strings) [unused when NumNStC==0] 0 NumTStC - Number of tower structural controllers (integer) "unused" TStCfiles - Name of the files for tower structural controllers (quoted strings) [unused when NumTStC==0] 0 NumSStC - Number of substructure structural controllers (integer) "unused" SStCfiles - Name of the files for substructure structural controllers (quoted strings) [unused when NumSStC==0] ---------------------- CABLE CONTROL ------------------------------------------- 0 CCmode - Cable control mode {0: none, 4: user-defined from Simulink/Labview, 5: user-defined from Bladed-style DLL} (switch) ---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface] "../5MW_Baseline/ServoData/Discon.dll" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface] "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 - Cutoff frequency for low-pass filter on blade pitch from DLL (Hz) [used only with Bladed Interface] 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 Ptch_SetPnt - Record 5: Below-rated pitch angle set-point (deg) [used only with Bladed Interface] 0 Ptch_Min - Record 6: Minimum pitch angle (deg) [used only with Bladed Interface] 0 Ptch_Max - Record 7: Maximum pitch angle (deg) [used only with Bladed Interface] 0 PtchRate_Min - Record 8: Minimum pitch rate (most negative value allowed) (deg/s) [used only with Bladed Interface] 0 PtchRate_Max - Record 9: Maximum pitch rate (deg/s) [used only with Bladed Interface] 0 Gain_OM - Record 16: Optimal mode gain (Nm/(rad/s)^2) [used only with Bladed Interface] 0 GenSpd_MinOM - Record 17: Minimum generator speed (rpm) [used only with Bladed Interface] 0 GenSpd_MaxOM - Record 18: Optimal mode maximum speed (rpm) [used only with Bladed Interface] 0 GenSpd_Dem - Record 19: Demanded generator speed above rated (rpm) [used only with Bladed Interface] 0 GenTrq_Dem - Record 22: Demanded generator torque above rated (Nm) [used only with Bladed Interface] 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 <RootName>.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 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" - Electrical generator power and torque "GenTq" - Electrical generator power and torque END of ServoDyn input file (the word "END" must appear in the first 3 columns of this last line). CMD Output
OpenFAST
Copyright (C) 2025 National Renewable Energy Laboratory Copyright (C) 2025 Envision Energy USA LTD
This program is licensed under Apache License Version 2.0 and comes with ABSOLUTELY NO WARRANTY. See the "LICENSE" file distributed with this software for details.
OpenFAST-v4.1.2 Compile Info:
- Compiler: Intel(R) Fortran Compiler 2021
- Architecture: 64 bit
- Precision: single
- OpenMP: No
- Date: Aug 06 2025
- Time: 19:22:48 Execution Info:
- Date: 09/10/2025
- Time: 16:52:36+0800
OpenFAST input file heading: NREL 5.0 MW Baseline Wind Turbine (Onshore), Linearization with AeroDyn + BD
Running ElastoDyn. Nodal outputs section of ElastoDyn input file not found or improperly formatted. Running BeamDyn. Running BeamDyn. Running BeamDyn. Running InflowWind. Running AeroDyn. AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted. Skipping nodal outputs. AeroDyn: projMod: 1 Projection: legacy (NoSweepPitchTwist), BEM: legacy (2D) Running ServoDyn. Running ServoDyn Interface for Bladed Controllers (using Intel Visual Fortran for Windows). Using legacy Bladed DLL interface. Time: 0 of 5 seconds.
FAST_Solution:FAST_UpdateStates:FAST_AdvanceStates:SrvD_UpdateStates:DLL_controller_call:BladedInterface option was designed for an explicit-loose coupling scheme. Using last calculated values from DLL on all subsequent calls until time is advanced. Warning will not be displayed again.
FAST_Solution:FAST_UpdateStates:FAST_AdvanceStates:B1::BD_GA2:BD_DynamicSolutionGA2:Solution does not converge after the maximum number of iterations FAST_AdvanceStates:B2::BD_GA2:BD_DynamicSolutionGA2:Solution does not converge after the maximum number of iterations FAST_AdvanceStates:B3::BD_GA2:BD_DynamicSolutionGA2:Solution does not converge after the maximum number of iterations
OpenFAST encountered an error at simulation time 6.62500E-02 of 5 seconds. Simulation error level: FATAL ERROR
Aborting OpenFAST.
Dear @marisa16-daze,
If your goal is to linearize an OpenFAST model in order to generate a Campbell diagram, OpenFAST will not allow you to enable active pitch or torque control through a DISCON controller; you must set PC_Mode = 0 (and typically we recommend using VSContrl = 1). If you are linearizing above rated, you should set CalcSteady = TRUE with TrimCase = 3 (and use TrimCase = 2 for below rated).
Best regards,
Dear Dr. Jonkman,
First of all, thank you for your quick reply.
I think I have currently resolved some of the issues. For wind speeds above the rated value, my current approach is to first use the DLL controller, namely DISCON.DLL, for pitch control in a nonlinear simulation, and then find the steady-state pitch angle from the results. I have now successfully run a controller with DISCON.DLL in another example.
Subsequently, for the linearization process, I would use PCMode = 0 and set this steady-state pitch angle in the structural module to achieve the speed reduction goal. I'm not sure if this approach is correct, but I seem to be able to extract the modal data with my script now.
As you can see, I am not very familiar with the control module and dynamic link libraries. I will study them more in the future. I will also try the TrimCase method and the Calcsteady=True method for automatically finding the steady-state point that you mentioned.
Thank you again for your assistance.
Sincerely,
Dear @marisa16-daze,
My concern with the approach you describe is that you are not guaranteeing that your OpenFAST model is in steady-state before linearization (it could be close if you set proper initial conditions for each degree of freedom, but not exact, and for some modules like BeamDyn, there is no convenient way to set initial conditions), which could effect the accuracy of the linearized system matrices (specifically the stiffness), which may result in incorrect natural frequencies. I would generally recommend using CalcSteady = TRUE with an appropriate TrimCase (depending on the situation) when linearizing with an operational wind turbine.
Best regards,
Dear Dr. Jonkman, Thank you for your valuable suggestions. I have already started trying to enable CalcSteady for linearization simulations. I have an additional question. I am now planning to use OpenFAST for flutter studies because the existing BeamDyn structural module in OpenFAST, which is based on the geometrically exact beam theory, can well account for geometric nonlinearities. However, unsteady aerodynamics cannot be considered during linearization. After the linearization simulation, a series of nonlinear time-domain simulations may be needed to find the critical flutter speed. I would appreciate it if you could provide any workflow or other advice on this matter. Thank you again for your valuable insights. Best regards
Dear @marisa16-daze,
Actually, unsteady airfoil aerodynamics can be enabled through OpenFAST linearization if you are using UA_Mod = 4, 5, or 6.
Calculation of the critical flutter speed would likely require simulations/linearizations at different rotor speeds.
Best regards,
Dear Dr. Jonkman, I am planning to research blade flutter in floating offshore wind turbines. I have already managed to complete the general procedure for flutter analysis of an onshore turbine example. My current concern is whether conducting blade flutter calculations using OpenFAST will become highly prone to non-convergence due to the multi-coupled conditions involving wind, waves, wind-wave angle, and even current. While I have searched for and read papers on aeroelastic response analysis under coupled wind and wave conditions, there appears to be little research specifically on flutter in this context. Therefore, I would be grateful if you could analyze the feasibility of this research and offer any suggestions you might have. Sincerely,
Dear @marisa16-daze,
I'm not sure what you mean by "non-convergence".
Regardless, I would not expect the floating substructure or wave/current excitation to have much impact on the flutter speed of an FOWT relative to the same turbine installed on land, but I suppose it could have some small effect, depending the specific FOWT configuration, and you could always use OpenFAST to analyze that.
Best regards,
好的,遵照您的要求,我将把邮件全文按照您提供的文本顺序展示,不使用 Markdown 表格,但会使用粗体强调关键数据和结论,以保持清晰度。
Dear Dr. Jonkman,
I am writing to you regarding a significant discrepancy I have observed while debugging the IEA 15MW reference turbine model, which I downloaded from the official GitHub repository, using the ROSCO controller (with minimal settings modifications). I have encountered a confusing issue specifically related to the choice of the structural dynamics module and the activation of the dynamic wake model. When running the model with the ElastoDyn module enabled, the power consistently reaches approximately 14.7 MW at rated wind speed, regardless of whether the dynamic wake switch in AeroDyn is set to ON or OFF. However, when I switch to the BeamDyn module, the results become highly sensitive to the dynamic wake setting:
BeamDyn with Dynamic Wake ON: The power is reduced to nearly half of the rated power (around 7.4 MW). BeamDyn with Dynamic Wake OFF: The power is close to the expected rated power (around 14.1 MW).
To better understand this mechanism, I conducted a comparison test and observed several key parameters under these two conflicting BeamDyn scenarios, along with the ElastoDyn results for reference: Comparison of Key Parameters
Scenario: BeamDyn, No Dynamic Wake Cd: min0.00678, max0.0097 Cl: min0.828, max0.925 Alpha: min3.72°, max4.63° B1TipRDxr: min**-0.0016°, max0.033°** B1TipTDxr: min13.32 m, max15.1 m RotThrust: 2418 MN GenTq: 19132 kNM GenSpeed: 7.37 RPM RotTorq: 19122 kNM
Scenario: BeamDyn, Dynamic Wake ON Cd: min0.0063, max0.0081 Cl: min0.71, max0.80 Alpha: min2.80°, max3.5° B1TipRDxr: min**-0.007°, max0.0026°** B1TipTDxr: min8.4 m, max9.7 m RotThrust: 1738 MN GenTq: 12451 kNM GenSpeed: 5.96 RPM RotTorq: 12470 kNM
Scenario: ElastoDyn, No Dynamic Wake Cd: min0.0076, max0.0118 Cl: min1.11, max1.17 Alpha: min6.19°, max6.78° TipRDxb: min**-1.025°, max1.40°** OoPDedl1: min14.81 m, max16.56 m RotThrust: 2746.9 MN GenTq: 19667 kNM GenSpeed: 7.466 RPM RotTorq: 19631 kNM
Scenario: ElastoDyn, Dynamic Wake ON Cd: min0.0077, max0.0116 Cl: min1.12, max1.177 Alpha: min6.27°, max6.75° TipRDxb: min**-1.025°, max1.40°** OoPDedl1: min14.95 m, max16.70 m RotThrust: 2742.4 MN GenTq: 19667 kNM GenSpeed: 7.466 RPM RotTorq: 19697 kNM
Given that my subsequent work relies heavily on the BeamDyn structural model, I would greatly appreciate it if you could provide some insight into the potential underlying mechanisms causing this significant power drop when dynamic wake is enabled in BeamDyn, and offer any recommended corrections or adjustments.
Thank you for your time and guidance.
Sincerely,
Dear @marisa16-daze,
Can you clarify more about your simulation set-up? Presumably you are starting with the OpenFAST model of the IEA Wind 15-MW RWT atop the UMaine semi from here: https://github.com/IEAWindSystems/IEA-15-240-RWT/tree/master/OpenFAST/IEA-15-240-RWT-UMaineSemi. Can you clarify what you changed in this model? Presumably you are changing CompElast from 1 to 2 to toggle between ElastoDyn and BeamDyn. In AeroDyn, are you toggling DBEMT_Mod from 0 and 2? Did you change anything else?
Best regards,
Dear Dr. Jonkman,
Thank you for your initial guidance.
To clarify the simulation setup, the example I am currently using, as demonstrated in the attached zip file, is not one of the typical UMaine examples. It is a modified version of the IEA-15-240-RWT-Monopile reference case.
As you correctly inferred, my primary modifications involve:
1.Switching CompElast between 1 (ElastoDyn) and 2 (BeamDyn).
2.Toggling the Dynamic Wake / Dynamic Inflow switch in AeroDyn.
The wind speed used for these comparisons is a steady, uniform wind of 10.59 m/s (rated wind speed). The ROSCO controller was compiled by me, and the DISCON.IN file is the provided default, with all other settings remaining largely unchanged.
In an effort to understand the issue before contacting you, I consulted an AI assistant. One explanation offered was that the blade bending-torsion coupling modes activated by BeamDyn might be interacting and coupling unfavorably with the DBEMT (Dynamic BEM Theory) dynamic wake model. This prompted the parameter comparison tests I included in my previous email, but I was unable to derive an actionable correction from those results.
Therefore, the immediate and most critical issue remains: Enabling both BeamDyn and the Dynamic Wake/Inflow model causes a drastic reduction in rated power (from 14.7 MW down to 7.4 MW).
Due to text length limitations here, I have only included the contents of my ServoDyn input file below. All other relevant input files are available within the compressed archive that I have uploaded [or will send to you separately].I would be grateful if you could provide your expert advice and suggest potential corrections for this issue.
------- SERVODYN v1.05.* INPUT FILE --------------------------------------------
IEA 15 MW offshore reference model monopile configuration
---------------------- SIMULATION CONTROL --------------------------------------
False Echo - Echo input data to <RootName>.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]
2.0 PitManRat(1) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 1 (deg/s)
2.0 PitManRat(2) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 2 (deg/s)
2.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]
95.756 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 --------------------
7.559987120819503 VS_RtGnSp - Rated generator speed for simple variable-speed generator control (HSS side) (rpm) [used only when VSContrl=1]
19624046.66639 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]
343357.4355671095 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]
2. 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]
100 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)
9999.9 HSSBrDT - Time for HSS-brake to reach full deployment once initiated (sec) [used only when HSSBrMode=1]
9999.9 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)
6009291301.0 YawSpr - Nacelle-yaw spring constant (N-m/rad)
4811254.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)
---------------------- Aerodynamic Flow Control -------------------------------------
0 AfCmode - Airfoil control mode {0- none, 1- cosine wave cycle, 4- user-defined from Simulink/Labview, 5- user-defined from Bladed-style DLL}
0.0 AfC_Mean - Mean level for sinusoidal cycling or steady value (-) [used only with AfCmode==1]
0.0 AfC_Amp - Amplitude for for cosine cycling of flap signal (AfC = AfC_Amp*cos(Azimuth+phase)+AfC_mean) (-) [used only with AfCmode==1]
0.0 AfC_phase - Phase relative to the blade azimuth (0 is vertical) for for cosine cycling of flap signal (deg) [used only with AfCmode==1]
---------------------- STRUCTURAL CONTROL ---------------------------------------
0 NumBStC - Number of blade structural controllers (integer)
"unused" BStCfiles - Name of the file for blade tuned mass damper (quoted string) [unused when CompNTMD is false]
0 NumNStC - Number of nacelle structural controllers (integer)
"unused" NStCfiles - Name of the file for nacelle tuned mass damper (quoted string) [unused when CompNTMD is false]
0 NumTStC - Number of tower structural controllers (integer)
"unused" TStCfiles - Name of the file for tower tuned mass damper (quoted string) [unused when CompNTMD is false]
0 NumSStC - Number of sbustructure structural controllers (integer)
"unused" SStCfiles - Name of the file for sbustructure tuned mass damper (quoted string) [unused when CompNTMD is false]
---------------------- CABLE CONTROL ----------------------------------------
0 CCmode - Cable control mode {0- none, 4- user-defined from Simulink/Labview, 5- user-defineAfC_phased from Bladed-style DLL}
---------------------- BLADED INTERFACE ---------------------------------------- [used only with Bladed Interface]
"libdiscon.dll" DLL_FileName - Name/location of the dynamic library {.dll [Windows] or .so [Linux]} in the Bladed-DLL format (-) [used only with Bladed Interface]
"IEA-15-240-RWT-Monopile_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 <RootName>.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)
Thank you for your time and guidance. Sincerely,
Dear Dr. Jonkman,
I am writing to provide a crucial update regarding the power reduction issue: It appears this problem is unrelated to the ROSCO controller dynamics. I created a duplicate of the problematic simulation setup, but this time I configured the model to use simple control(PCMode=0,VSContrl=1) modes instead of the external DLL controller (libdiscon.). The settings were otherwise kept the same (i.e., BeamDyn enabled and Dynamic Wake/Inflow enabled). The final simulation results—specifically the massive drop in rated power—were nearly identical to the case where the external DLL was used. The relevant control file modifications made for this simple control test are attached/shown below: ------- SERVODYN v1.05. INPUT FILE -------------------------------------------- IEA 15 MW offshore reference model monopile configuration ---------------------- SIMULATION CONTROL -------------------------------------- False Echo - Echo input data to <RootName>.ech (flag) "default" DT - Communication interval for controllers (s) (or "default") ---------------------- PITCH CONTROL ------------------------------------------- 0 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] 2.0 PitManRat(1) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 1 (deg/s) 2.0 PitManRat(2) - Pitch rate at which override pitch maneuver heads toward final pitch angle for blade 2 (deg/s) 2.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 ---------------------------- 1 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] 95.756 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 -------------------- 7.559987120819503 VS_RtGnSp - Rated generator speed for simple variable-speed generator control (HSS side) (rpm) [used only when VSContrl=1] 19624046.66639 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] 343357.4355671095 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] 2. 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] 100 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]
This appears to suggest that the discrepancy lies in the inherent coupling between the BeamDyn structural model and the AeroDyn Dynamic Wake model, rather than in the tuning or logic of the ROSCO controller.
Thank you for your time and guidance in diagnosing this core modeling issue. Sincerely,
Dear @marisa16-daze,
I would suggest trying a few things to isolate the issue:
- Ensure the solution is converged by changing the solver settings, e.g., reducing
DTand/or adding a correction step (NumCrctn> 0) - Check
DBEMT_Modsettings other than 2, such asDBEMT_Mod= 1 or 3 with an appropriatetau1_constfor your case. - Use newer BEM options that are now recommended over older options, such as
BEM_Mod= 2 andSkewMomCorr= TRUE. - Simplify other parts of your model such as disabling ElastoDyn DOFs in the drivetrain and support structure and turning off unsteady airfoil aerodynamics (
UA_Mod= 0)
Do any of these changes resolve the issue when BeamDyn and DBEMT are both enabled? Can you isolate it to a particular one?
Best regards,
Dear Dr. Jonkman,
Thank you for your prompt and invaluable guidance. I am pleased to report that by setting DBEMT_Mod to 3, I have successfully resolved the previous issue of excessive wind turbine power reduction. However, a new issue has emerged: When running the IEA 15MW Monopile model with BeamDyn enabled and DBEMT_Mod = 3 under ROSCO control, the blade pitch exhibits non-convergence (sustained oscillation), with pitch, power, and other parameters fluctuating wildly in the steady wind speed range of 11 m/s to 13 m/s. This instability does not occur at wind speeds above 13.5 m/s. Furthermore, the issue is absent when the structural model is set only to ElastoDyn (even with DBEMT_Mod = 3). My immediate next step is to use the ROSCO-Toolbox to perform a formal controller tuning for this modified model configuration. Currently, I am still using the default DISCON.IN file, which was clearly tuned for the original IEA-15-240-RWT-Monopile baseline (ElastoDyn & DBEMT_Mod = 2). Given the changes to the structural module and the aerodynamic settings, it is expected that the default tuning is now inadequate, and I am hopeful that proper tuning will resolve the instability. Based on my strong desire to understand the underlying physical mechanism (in addition to my own self-directed study of advanced aerodynamics theory and methods), I would highly appreciate any advice Dr. Jonkman might have regarding the cause of these stability issues and potential permanent solutions. Below are the warnings displayed during the CMD simulation execution: 1.ROSCO Warning: The wind speed estimator is used, but an input (pitch, rotor speed, or torque) has left the bounds of normal operation. The filtered hub-height wind speed will be used instead. This warning will not persist even though the condition may. Check WE_Op in the ROSCO .dbg file to see if the WSE is enabled (1) or disabled (0). 2.ROSCO Warning: Did not find correct size F_NotchFreqs in input file. Using default value of [ 0.0000000000000000 ] ROSCO Warning: Did not find correct size F_NotchBetaNum in input file. Using default value of [ 0.0000000000000000 ] ROSCO Warning: Did not find correct size F_NotchBetaDen in input file. Using default value of [ 0.0000000000000000 ] Generator speed: 7.6 RPM, Pitch angle: 0.0 deg, Power: 0.0 kW, Est. wind Speed: 12.0 m/s Below is a comparison of output snippets for two different wind speeds under the problematic settings (BeamDyn, DBEMT_Mod=3): WindSpeed=15m/s: Generator speed: 7.6 RPM, Pitch angle: 9.1 deg, Power: 14987.4 kW, Est. wind Speed: 13.4 m/s Generator speed: 7.6 RPM, Pitch angle: 9.2 deg, Power: 14977.6 kW, Est. wind Speed: 13.5 m/s Generator speed: 7.6 RPM, Pitch angle: 9.3 deg, Power: 15008.4 kW, Est. wind Speed: 13.6 m/s Generator speed: 7.6 RPM, Pitch angle: 9.2 deg, Power: 15086.1 kW, Est. wind Speed: 13.5 m/s Generator speed: 7.5 RPM, Pitch angle: 9.1 deg, Power: 15001.2 kW, Est. wind Speed: 13.4 m/s Generator speed: 7.6 RPM, Pitch angle: 9.2 deg, Power: 14956.0 kW, Est. wind Speed: 13.5 m/s Generator speed: 7.6 RPM, Pitch angle: 9.3 deg, Power: 14983.9 kW, Est. wind Speed: 13.6 m/s Generator speed: 7.6 RPM, Pitch angle: 9.3 deg, Power: 15050.2 kW, Est. wind Speed: 13.5 m/s Generator speed: 7.6 RPM, Pitch angle: 9.2 deg, Power: 15032.2 kW, Est. wind Speed: 13.4 m/s Generator speed: 7.6 RPM, Pitch angle: 9.2 deg, Power: 14979.3 kW, Est. wind Speed: 13.5 m/s Time: 190 of 600 seconds. Estimated final completion at 11:33:47 (in 0.018 days). WindSpeed=12.5m/s: Generator speed: 8.3 RPM, Pitch angle: 10.7 deg, Power: 14612.6 kW, Est. wind Speed: 14.3 m/s Generator speed: 8.0 RPM, Pitch angle: 3.5 deg, Power: 16859.0 kW, Est. wind Speed: 12.8 m/s Generator speed: 6.2 RPM, Pitch angle: 0.9 deg, Power: 11120.5 kW, Est. wind Speed: 8.4 m/s Generator speed: 8.3 RPM, Pitch angle: 11.1 deg, Power: 14771.1 kW, Est. wind Speed: 14.4 m/s Generator speed: 7.9 RPM, Pitch angle: 3.1 deg, Power: 16733.9 kW, Est. wind Speed: 12.7 m/s Generator speed: 6.2 RPM, Pitch angle: 1.2 deg, Power: 11081.8 kW, Est. wind Speed: 8.2 m/s Generator speed: 8.4 RPM, Pitch angle: 11.3 deg, Power: 14908.9 kW, Est. wind Speed: 14.5 m/s Generator speed: 7.8 RPM, Pitch angle: 2.9 deg, Power: 16688.7 kW, Est. wind Speed: 12.6 m/s Generator speed: 6.2 RPM, Pitch angle: 1.5 deg, Power: 11091.0 kW, Est. wind Speed: 8.0 m/s Generator speed: 8.4 RPM, Pitch angle: 11.5 deg, Power: 15019.2 kW, Est. wind Speed: 14.6 m/s Generator speed: 7.8 RPM, Pitch angle: 2.6 deg, Power: 16592.7 kW, Est. wind Speed: 12.6 m/s Generator speed: 6.2 RPM, Pitch angle: 1.8 deg, Power: 11166.3 kW, Est. wind Speed: 7.9 m/s Generator speed: 8.5 RPM, Pitch angle: 11.9 deg, Power: 15359.0 kW, Est. wind Speed: 14.6 m/s Generator speed: 7.7 RPM, Pitch angle: 2.4 deg, Power: 16441.6 kW, Est. wind Speed: 12.5 m/s Generator speed: 6.3 RPM, Pitch angle: 2.1 deg, Power: 11278.1 kW, Est. wind Speed: 7.8 m/s Generator speed: 8.6 RPM, Pitch angle: 12.2 deg, Power: 15575.4 kW, Est. wind Speed: 14.7 m/s Generator speed: 7.6 RPM, Pitch angle: 2.0 deg, Power: 16179.8 kW, Est. wind Speed: 12.4 m/s Generator speed: 7.6 RPM, Pitch angle: 2.0 deg, Power: 16179.8 kW, Est. wind Speed: 12.4 m/s The attached figure shows the time-domain variation of several key parameters at a wind speed of 12.5 m/s.(包括桨距(Pitch)、转子转速(rotspeed)、发电机功率(generator power)...)
Thank you for your time and guidance in diagnosing this core modeling issue. Sincerely,
Dear @marisa16-daze,
I'm glad switching to DBEMT_Mod = 3 resolved the issue when BeamDyn is enabled.
Regarding your new issue, does using proper initial conditions resolve the issue? We generally recommend setting RotSpeed and BlPitch in ElastoDyn based on their expected (mean) values for the mean wind speed you are simulating to avoid confusing the controller. At 12.5 m/s, I agree that RotSpeed should be set to 7.56 rpm for the IEA Wind 15-MW RWT, but BlPitch should be closer to 8deg (not 0deg). Does correcting that resolve the issue?
Best regards,
Dear Dr. Jonkman, Thank you for your prompt reply and clarification. Unfortunately, when I tried adding the appropriate blade pitch at a certain wind speed, the approach did not work, and the results still failed to converge. Currently, besides adjusting the controller, I have tried many other methods and settings. A few representative cases are as follows: 1.Decrease DT BeamDyn, DBEMT=3, V=12m/s, DT=0.0004 (original DT=0.002) Did not converge 2.DBEMT=0 BeamDyn, DBEMT=0 (no dynamic wake), V=12m/s Converged 3.BeamDyn, DBEMT=3, V=13m/s, DT=0.002, BASE, Did not converge 4.BeamDyn, DBEMT=3, V=13m/s, DT=0.002, Tower DOFs off, Converged It is noteworthy that when trying to enable/disable degrees of freedom (DOFs), it only reduced the non-convergence range. For example, by turning off the Tower DOFs, the original non-convergence range of 11m/s to 13m/snarrowed to 11m/s to 12m/s. In any case, the limited conclusion I can draw so far is that some unfavorable coupling has occurred among BeamDyn, Dynamic Inflow, and the ROSCO controller. My next step is to plan to adjust the model's controller using the ROSCO_TOOLBOX based on Yaml.I should explain that I am doing all of this for model validation (aerodynamics, structure, hydrodynamics, and full system), and the subsequent process will inevitably require the use of BeamDyn for flutter analysis. This current issue is obstructing my aerodynamic validation. I have already produced good wind-speed-vs-thrust and wind-speed-vs-power curves using ElastoDyn, and therefore I wish to proceed with BeamDyn and plot the same curves under ROSCO control. I do not know if this step is typically required for validation, and I feel I have taken many detours. Therefore, I would be grateful for any advice from Dr. Jonkman on model validation (including subsequent structural validation, etc.).
Thank you for taking the time to guide and diagnose this core modeling issue. Sincerely,
Dear @marisa16-daze,
To isolate if the coupling to the ROSCO controller is a source of the problem, you can try running your case with the generator DOF disabled in ElastoDyn (GenDOF = FALSE), which will effectively disable the influence of the controller because the speed will be held fixed regardless of the torques applied. Does your model converge then? If, I agree that a controller change could solve the issue.
Best regards,
Dear @marisa16-daze,
From your comment in the following OpenFAST issue: https://github.com/OpenFAST/openfast/issues/983#issuecomment-3527565279, it sounds like you confirmed that the coupling issue between BeamDyn and DBEMT=3 only exists when GenDOF = TRUE and ROSCO is enabled. This implies to me that a modification of the controller gains in ROSCO could solve the issue.
Best regards,
This does look like an instability in the controller. I have not yet seen behavior like this, but it's worth investigating further.
Can you clearly enumerate the changes you made to the IEA model and controller so that I can reproduce this issue?
I would start by reducing omega_pc and omega_vs in the tuning yaml: https://github.com/NREL/ROSCO/blob/ebeaebf17a0f90bb1cda2f30ba6fb5338ac25eff/Examples/Test_Cases/IEA-15-240-RWT/IEA-15-240-RWT-Monopile/IEA-15-240-RWT-Monopile_ROSCO.yaml#L43
Best, Dan
Dear Dr.jonkman&dzalkind Thank you both for your swift responses. Although the process may be challenging, I have already started attempting the controller adjustments.
@dzalkind: Thank you for your plan to reproduce the issue. My current setup details are as follows:
IEA-15-240-RWT-Monopile_test.fst(steady windspeed=12m/s):
Elastodyn:
AeroDyn:
ServoDyn:
others: 1.The only change made to the wind file was modifying the Steady wind speed. 2.I compiled the libdiscon.dll myself, but the accompanying .in file utilizes the default settings. 3.All other settings and files are identical to the IEA-15-240-RWT-Monopile example downloaded from GitHub.
Thank you again for your reply. Sincerely,
Dear dzalkind Furthermore, the issue does not occur when using only ElastoDyn or when DBEMT = 0.
Okay, can you please share a list of only the inputs that have changed? In the meantime, you may need to run with DBEMT = 0
Dear @dzalkind,
The attached TXT file contains the settings that were modified only from the default input files. Furthermore, please note that the simulation remains convergent (stable) when DBEMT = 0, regardless of whether the structural module used is ElastoDyn or BeamDyn.
#983 Dear Dr. Bortolotti @ptrbortolotti, I have read your article: [https://iopscience.iop.org/article/10.1088/1742-6596/2767/5/052042/meta]. Please forgive my follow-up question, but I would like to know if you used DBEMT in your aerodynamic model settings, as I did not see further details regarding the DBEMT setup in the paper. Over the past few days, I have attempted several remedies: 1.Adjusting settings based on those already provided in your article. 2.Attempting to tune the controller by reducing the torque damping and natural frequency in the .yaml file: adjusting zeta_vs and omega_vs. 3.Setting F_NotchType and experimenting with different structural frequencies (it is highly possible this correction direction is incorrect). Unfortunately, none of these worked. Furthermore, I had already tried the setting DBEMT=0 found in the 22 MW wind turbine example, and the simulation is convergent under DBEMT=0. My subsequent research will focus on flutter analysis, thus I am uncertain if I can discard DBEMT.I have seen several articles suggesting that dynamic wake/inflow appears to be quite important for flutter analysis, as it significantly influences aerodynamic damping.
Thank you for your guidance on this modeling issue. Sincerely,
hi @marisa16-daze, thank you for conducting these tests. it is true, it looks like I kept DBEMT=0 in that verification study. I will try to run more simulations switching the model back on. I will add that recently I saw an internal only slide deck where the effect of DBEMT seemed marginal. however, the turbine was not the IEA22. I'm afraid that I don't have much to add for now, but I will try to find the time to look at the model