FAST Linearization

Hi Vicki,

When input parameter CalcStdy is set to “False” in the FAST linearization input file, the FAST model will be linearized about the initial conditions that are specified in the primary, furling, and platform input files. This allows you to bypass the trim solution built within FAST.

The only problem with the solution mentioned above is that the input files only allow you to specify initial conditions for the DOF displacements; the initial conditions for the DOF rates and accelerations are assumed to be zero by the model (the RotSpeed initial condition is the one and only exception to this rule). If you desire to user-specify nonzero operating point rates and/or accelerations (apart from RotSpeed), this will require a minor modification to the source code (and the use of a Fortran compiler).

The source code that defines the linearization operating point for each DOF at each azimuth step is given below and is contained in PROGRAM FAST(), which is available in source file FAST_Prog.f90:


IF ( CalcStdy ) THEN ! Find the periodic / steady-state solution and interpolate to find the operating point values of the DOFs:

CALL CalcSteady

ELSE ! Set the operating point values of the DOFs to initial conditions (except for the generator azimuth DOF, which increment at a constant rate):

DO L = 1,NAzimStep ! Loop through all equally-spaced azimuth steps

  Qop  (:,L) = Q  (:,IC(1))  ! Initialize the operating
  QDop (:,L) = QD (:,IC(1))  ! point values to the
  QD2op(:,L) = QD2(:,IC(1))  ! initial conditions
        
  Qop (DOF_GeAz,L) = QAzimInit + ( TwoPi/NAzimStep )*( L - 1 )               ! Make the op generator
  IF ( Qop(DOF_GeAz,L) >= TwoPi )  Qop(DOF_GeAz,L) = Qop(DOF_GeAz,L) - TwoPi ! azimuth DOF periodic

ENDDO ! L - Equally-spaced azimuth steps

ENDIF


Here, Qop(I,J) is the operating point displacement of DOF I at azimuth step L at which the model will be linearized about. Similarly, QDop(I,J) and QD2op(I,J) define the operating point rates and accelerations. The DOF indices are defined in MODULE DOFs(), which is available in source file FAST_Mods.f90. For example, if you want to linearize about an operating point where the nacelle yaw rate is 1 rad/s at each azimuth step, you could add the following line of code within the DO…ENDDO loop in the code above:

  QDop(DOF_Yaw,L) = 1.0  

Make sure to be careful with the units. The internal units for displacements, rates, and accelerations contain combinations of meters for length, seconds for time, and radians for angles.

I hope that works for you!

Best regards,