I have a controller (a DLL file) that works fine with FAST v7, but gives strange results when used with FAST v8 (AD v14). Unfortunately, I do not have the source code of the controller, so it is a black box.
To convert the v7 input files to v8 input files I used the m-file “ConvertFiles.m” and also checked manually for differences. As I could not find any differences, I am assuming that the set up is the same for both FAST versions. However, in FAST v8 the controller always initiates an emergency shut down of the turbine after 50s of simulation time. The inflow wind condition is a laminar flow with either 8m/s or 13m/s wind speed.
As this behavior does not occur in v7 I am assuming that it is not an issue of the controller itself. In FAST v8 I also checked the parameters that enter and leave the dll and I could not find anything unusual.
The only parameter that seems to influence the behavior is the initial blade pitch (c.f. attachment). This parameter is set to 90° for the run in FAST v7 as well, however the output of the parameter BldPitch looks different.
Additionally, I don’t understand why the power is so low at the beginning in FAST v8. For an initial pitch angle of 90° I would think that it just takes time for the turbine to adjust, but using an initial pitch angle of 0° results in almost no power output at all. I also tried out initial pitch angles between 0° and 90°, which only resulted in curves of the power output between the ones shown in the attachment for 0° and 90°.
Could this just be an error in my input files? If so, which parameters might be responsible?
In general I would expect quite consistent results between FAST v7 and FAST v8 with AeroDyn v14. But I’m not sure where the problem might be. I would verify that the results match between the two simulations with the controller disabled (and disable the generator DOF, GenDOF accordingly). Regarding the controller, I do recall the FAST v8 solution being more sensitive than FAST v7 to the initial conditions (e.g. setting the rotor speed and initial blade-pitch angles consistent with the mean hub-height wind speed).
thank you for your quick response. I believe that I found the solution. Apparently there is a problem in FAST v8 in passing the parameters ElecPwr and GenTrq of the previous time step back to ServoDyn and therefore to the DLL.
In FAST_Solver.f90 the subroutine SrvD_InputSolve is called with the parameters of the previous time step: SrvD%y_prev. However, I could not find where y_prev is written in ServoDyn, the parameters ElecPwr and GenTrq that are passed in SrvD_InputSolve are always 0 in that case.
I changed the call of the subroutine to pass SrvD%y instead of SrvD%y_prev and with that, the values for ElecPwr and GenTrq are passed and the output of the simulation resembles the ones of FAST v7.
It seems that these values are needed in the controller that I am using. In the Bladed-style DLL for the NREL turbine the parameters are not used and therefore the error does not occur.
Good catch. Yes, we were aware of the bug in SerovDyn within FAST v8–as referenced in the following OpenFAST issue: nwtc.nrel.gov/OpenFAST.