Open jiayaomeng opened 2 years ago
Dear @jiayaomeng,
A couple things to try to better isolate the problem:
GenDOF
= False in ElastoDyn).AFAeroMod
= 1?DT
or set NumCrctn
= 1 in the OpenFAST primary input)?Best regards,
Dear @jjonkman,
Many thanks for your reply!
It turns out to be the convergence issue. The big difference still exists with the modification of GenDOF
= False and AFAeroMod
= 1, but after I reduced DT
from 0.0015s to 0.0005s and NumCrctn
=1, BeamDyn and ElastoDyn finally match.
I will close this issue, thank you again!
Best wishes, Jiayao
Thanks, @jiayaomeng.
It sounds like you changed both DT
and NumCrctn
at the same time. Have you tried each of these changes independently? I'm curious which one is more effective at solving the problem. Considering the time steps you are using are already quite small, there may be an issue with the coupling between BeamDyn and AeroDyn that we need to address.
Thanks,
Dear @jjonkman,
I tried the two changes independently and found that only reducing dt
to 0.0005s still doesn't work, whereas the change ofNumCrctn
=1 is effective even with dt
=0.0015s. That's interesting. Does that mean we are advised to add the correction step first before considering using a smaller time step when coming across the numerical instability issue?
Best wishes, Jiayao
Dear @jiayaomeng,
Typically adding one correction step and dropping the time step in halve have similar effect, but sometimes adding one correction step is necessary for solution accuracy. This typically indicates a reordering of the OpenFAST glue code input-output coupling algorithm is in order. I'm going to reopen this issue for now to remind us to review the BeamDyn-AeroDyn coupling. Until this issue is resolved, I recommend running with NumCrctn
= 1 when using BeamDyn with DBEMT enabled in AeroDyn.
Best regards,
@andrew-platt -- Any ideas on this one?
I'm a bit surprised that we need a correction step. It might be that there is enough high frequency motion of the blade due to the drivetrain coupling that it induces some unwanted effects in the DBEMT. This is sort of hinted at with the warning about tau
:
FAST_Solution:FAST_AdvanceStates:AD_UpdateStates:BEMT_UpdateStates(node 1, blade 1):ComputeTau:Rotor-averaged axial induction factor is greater than 0.5; limiting time-varying tau1.
I'm not entirely sure how we would fix this issue as I'm not sure if it is an issue in BeamDyn, in AeroDyn 15, or in the coupling code. I suppose it could be in part related to the qfit
parameter in BeamDyn and #818, but it may also be an interaction of AD15 DBEMT with the large initial transients we've seen due to the BeamDyn to ElastoDyn coupling at the hub (the drivetrain DOF tends to make those worse).
We have seen similar issues. Using DBEMT_Mod=3
instead of DBEMT_Mod=1
should help, but we still don't know why the discrete formulation (DBEMT_Mod=1
) is sensitive to number of corrections and time step when beamdyn is used.
Dear @jjonkman,
I just wanted to follow up on the possible BeamDyn-AeroDyn coupling issue that we discussed earlier. I came across the large discrepancy between ElastoDyn and BeamDyn again, even with NumCrctn = 1
and DBEMT_Mod=3
(as @ebranlard suggested). Please take a look at the following simulation results of the 5MW ITI-Barge floating wind turbine example. The two models match very well when the wind speed is under the rated speed (8 m/s), but disagree when above (14m/s).
Here are my Aerodyn settings:
2 WakeMod - Type of wake/induction model {0=none, 1=BEMT, 2=DBEMT, 3=OLAF}
2 AFAeroMod - Type of blade airfoil aerodynamics model {1=steady model, 2=BL unsteady model}
3 DBEMT_Mod - Type of dynamic BEMT (DBEMT) model {1=constant tau1, 2=time-dependent tau1, 3=constant tau1 with continuous formulation}
6 UAMod - Unsteady Aero Model Switch {2=B-L Gonzalez, 3=B-L Minnema/Pierce, 4=B-L HGM 4-states, 5=B-L 5 states, 6=Oye, 7=Boeing-Vertol}
Simulation control setting in the .fst
file
0.00125 DT - Recommended module time step (s)
2 InterpOrder - Interpolation order for input/output time history (-) {1=linear, 2=quadratic}
1 NumCrctn - Number of correction iterations (-) {0=explicit calculation, i.e., no corrections}
I used the ROSCO controller with the floating feedback being enabled only for the 14m/s case.
Settings in the DISCON.IN
file
2 ! Fl_Mode - Floating specific feedback mode {0: no nacelle velocity feedback, 1: feed back translational velocity, 2: feed back rotational veloicty}
-20.000 ! Fl_Kp - Nacelle velocity proportional feedback gain [s]
and I am using the latest OpenFAST v3.5.1.
I had expected that BeamDyn results should not be very different from ElastoDyn for this 5MW turbine, since the platform pitch and blade flapwise velocities under 14 m/s are not insanely larger than those under 8 m/s. I was wondering if the discrepancy is induced by the BeamDyn-AeroDyn coupling when, for example, the blade pitch controller comes into play. Any suggestions would be very much appreciated!
Dear @jiayaomeng,
Are you using the OpenFAST model of the NREL 5-MW baseline wind turbine atop the ITI Energy barge provided by NREL, with the modifications to the AeroDyn inputs and the change to the ROSCO controller that you mention? Did you make any other changes to the model?
Regardless, perhaps the results are not too surprising because blade deflection is largest around rated and your simulation has a mean wind speed just above rated. I would guess that the BeamDyn model is showing sizeable blade twist, which is somewhat compensated in ElastoDyn by the use of larger blade-pitch angles.
You sound concerned with the DBEMT_Mod
= 3 and UAMod
= 6 results; is that because the comparison between the solutions with ElastoDyn and BeamDyn are more similar with simpler aerodynamic settings such as WakeMod
= AFAeroMod
= 1?
Best regards,
Dear @jjonkman,
Many thanks for your reply! The only change I made is to use a 6*6 linear stiffness matrix in HydroDyn to represent the moorings' elasticity.
I tinkered with different combinations of WakeMod
and AFAeroMod
, and compared the results calculated from ElastoDyn and BeamDyn. It seems the issue comes from the unsteady aerodynamics. The two models disagree once AFAeroMod
is set to 2. Could you further advise on this, please? Thank you!
Best wishes, Jiayao
Dear @jiayaomeng,
Thanks for narrowing this down. Can I ask for one more check? How do the models compare if keep AFAeroMod
= 2, but switch UAMod
from 6 to something else like 3 or 4?
Best regards,
Dear @jjonkman,
The two models match very well after switching UAMod
to 4. Does this indicate some bug in the 1-state stall model?
Many Thanks,
Jiayao
@jiayaomeng -- I've not used UAMod
= 6 myself before, but it sounds like there is an issue. I would suggest using UAMod
= 4 for now.
@ebranlard -- Do you know what the issue with UAMod
= 6 could be?
we've had problems with UAMod6 when polars are very nonlinear. the internal logic of openfast to identify the linear regime might fail and the outputs become unreliable. this points to a weakness of the theory more than a weakness of openfast. airfoil polars, especially toward the root, are commonly very nonlinear
Thanks for the information,@ptrbortolotti! However, it still puzzles me why UAMod=6 appears to work fine with BeamDyn for the 8m/s case.
Bug description The BeamDyn results disagree with ElastoDyn when using the dynamic BEM model in AreoDyn. Both models are under the steady uniform wind (6 m/s) thus similar steady responses and operation conditions are expected. However, it seems the BeamDyn model bifurcates at the first several seconds and gives inaccurate results. They do agree when the classical BEM model is used (WakeMod=1).
To Reproduce All settings are consistent with the example files provided in "https://github.com/OpenFAST/r-test/tree/78d763effae41fb41ecff5143f0b486a6ac0593c/glue-codes/openfast/5MW_Land_BD_DLL_WTurb" except that I switched "WakeMod" in AeroDyn from "1 (BEM)" to "2 (DBEM)."
Expected behavior They should agree, though some little discrepancies can exist due to the different blade models they are using.
Screenshots, if applicable
OpenFAST Version
OpenFAST Copyright (C) 2021 National Renewable Energy Laboratory Copyright (C) 2021 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-v3.0.0 Compile Info:
Time: 10:16:54+0000 OpenFAST input file heading: FAST Certification Test 26: NREL 5.0 MW Baseline Wind Turbine (Onshore) Running ElastoDyn. Nodal outputs section of ElastoDyn input file not found or improperly formatted. Running BeamDyn. Nodal outputs section of BeamDyn input file not found or improperly formatted. Running BeamDyn. Nodal outputs section of BeamDyn input file not found or improperly formatted. Running BeamDyn. Nodal outputs section of BeamDyn input file not found or improperly formatted. Running AeroDyn. AD15 Nodal Outputs: Nodal output section of AeroDyn input file not found or improperly formatted. Skipping nodal outputs. Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 1, blade 1) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 1) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 3, blade 1) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 4, blade 1) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 1, blade 2) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 2) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 3, blade 2) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 4, blade 2) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 1, blade 3) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 2, blade 3) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 3, blade 3) Warning: Turning off Unsteady Aerodynamics because C_nalpha is 0. (node 4, blade 3) Running InflowWind. Running ServoDyn. Running ServoDyn Interface for Bladed Controllers (using GNU Fortran for Linux, ). Using legacy Bladed DLL interface. Time: 0 of 60 seconds.
FAST_Solution0:CalcOutputs_And_SolveForInputs:SolveOption2:SrvD_CalcOutput:DLL_controller_call:Running with torque and pitch control of the NREL offshore 5MW baseline wind turbine from DISCON.dll as written by J. Jonkman of NREL/NWTC for use in the IEA Annex XXIII OC3 studies. FAST_Solution: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_AdvanceStates:AD_UpdateStates:BEMT_UpdateStates(node 1, blade 1):ComputeTau:Rotor-averaged axial induction factor is greater than 0.5; limiting time-varying tau1. This message will not be repeated though the condition may persist. Total Real Time: 7.5768 minutes Total CPU Time: 7.5761 minutes Simulation CPU Time: 7.5736 minutes Simulated Time: 1 minutes Time Ratio (Sim/CPU): 0.13204 OpenFAST terminated normally.
System Information (please complete the following information):
Additional context I noticed this issue reported by @ptrbortolotti and it seems like a bifurcation as well. I tried to compile with that new branch but the large difference between ElastoDyn and BeaDyn still exists.