FAST v7 differential equations and Integration scheme

Dear Sir,

I need proper references with the differential equations solved in FAST v7 along with the details of the integration scheme used.
Additionally, it would help if I could get some information on how and which damping modes are taken in the time domain analysis while the turbine is operational.

Thanks
Subham

Dear @Kashyap.Subham,

The structural equations of motion of FAST v7 are the same as those of the ElastoDyn module of OpenFAST, documented here: 4.2.7. ElastoDyn Users Guide and Theory Manual — OpenFAST v3.3.0 documentation. In FAST v7, the states are updated from one time step to the next based on a fourth-order Adams-Bashforth-Adams-Moulton (ABM4) predictor-corrector integration scheme. This integrator is initialized using a fourth-order Runge-Kutta (RK4) integration scheme.

For an aeroelastic simulation, damping results from structural damping and aerodynamic/aeroelastic damping. Technically, any velocity-dependent force acts like a damping, so, you could also say forces such as gyroscopic, Coriolis, and generator torque-speed curves are also “damping like” terms.

Best regards,

Dear Jason,

I appreciate your input. I would further like to take a step ahead and quantify the aerodynamic damping of an operating wind turbine during a seismic event. How can I use FAST Seismic Module in doing so?

Thanks
Subham

Dear @Kashyap.Subham,

Perhaps you could compute the structural response with and without the aerodynamic loads applied and calculate the effect of aerodynamic damping by comparing these responses?

Best regards,

Dear Jason,

I found the SUBROUTINE Solver in FAST.f90 of FAST v7, just as you said. But I want to know where this function/corresponding program in OpenFAST v3.4.1.
I actually went to find the corresponding FAST.f90 of OpenFAST v3.4.1, but It was never found. In addition, I found SUBROUTINE ED_RK4( t, n, u, utimes, p, x, xd, z, OtherState, m, ErrStat, ErrMsg ) in
ElastoDyn.f90. I don’t know if this subroutine has the same function as the subroutine mentioned above? If not, could you please help to point out the corresponding location?

Thanks a lot!
Best regards,
Lei Xue

Dear @Lei.Xue,

I would say that the equivalent of SUBROUTINE Solver() in FAST.f90 of FAST v7 in OpenFAST is SUBROUTINE ED_UpdateStates() of ElastoDyn.f90. The structural module of FAST v7 was repurposed into the ElastoDyn module in OpenFAST, but the structure of the source code is very different between FAST v7 and OpenFAST, with OpenFAST following the new modularization framework that did not exist when FAST v7 was developed. Both of these routines use a combination of RK4, and ABM4 (ElastoDyn in OpenFAST also has the option for AB4).

Best regards,

Dear Jason,

Sorry for the late reply. I now want to know which statement in the SUBROUTINE Solver in FAST.f90 of FAST v7 corresponds to in SUBROUTINE ED_RK4 in ElastoDyn.f90 of OpenFAST v3.4.1. So that I can modify initial values of some DOFs in OpenFAST v3.4.1. I have made the following attempts to find, please help to see if it is correct, if not, please point out.
SUBROUTINE Solver :
! First call to dynamics routine:
QT = Q (:,IC(1))
QDT = QD(:,IC(1))
SUBROUTINE ED_RK4:
Guess 1:
CALL ED_CopyInput( u(1), u_interp, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL CheckError(ErrStat2,ErrMsg2)
IF ( ErrStat >= AbortErrLev ) RETURN
[SUBROUTINE ED_CopyInput in ElastoDyn_Types.f90]
Guess 2:
CALL ED_CopyContState( x, k1, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL CheckError(ErrStat2,ErrMsg2)
CALL ED_CopyContState( x, k2, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL CheckError(ErrStat2,ErrMsg2)
CALL ED_CopyContState( x, k3, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL CheckError(ErrStat2,ErrMsg2)
CALL ED_CopyContState( x, k4, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL CheckError(ErrStat2,ErrMsg2)
CALL ED_CopyContState( x, x_tmp, MESH_NEWCOPY, ErrStat2, ErrMsg2 )
CALL CheckError(ErrStat2,ErrMsg2)
IF ( ErrStat >= AbortErrLev ) RETURN
[SUBROUTINE ED_CopyContState、ED_ContinuousStateType in ElastoDyn_Types.f90]

Thanks a lot!
Best regards,
Lei Xue

Dear @Lei.Xue,

Most of the states of ElastoDyn can be initialized in the INITIAL CONDITIONS section of the ElastoDyn input file. Regardless, all of the initial states of ElastoDyn are set within SUBROUTINE Init_ContStates() of ElastoDyn.f90.

Best regards,