Why the Linearization subroutines of FAST (ED_Init_Jacobian, ED_Init_Jacobian_x) assumes a predefined perturbation values (p%du and p%dx) to perform the linearization for the motion equations? Based on what one should choose these values?

For du perturbations

[code]if (allocated(u%BladePtLoads)) then

do k=1,p%NumBl

p%du(2*k-1) = MaxThrust / real(100*p%NumBl*u%BladePtLoads(k)%NNodes,R8Ki) ! u%BladePtLoads(k)%Force = 2*k-1

p%du(2*k ) = MaxTorque / real(100*p%NumBl*u%BladePtLoads(k)%NNodes,R8Ki) ! u%BladePtLoads(k)%Moment = 2*k

end do !k

else

p%du(1:6) = 0.0_R8Ki

end if

p%du( 7) = MaxThrust / 100.0_R8Ki ! u%PlatformPtMesh%Force = 7

p%du( 8) = MaxTorque / 100.0_R8Ki ! u%PlatformPtMesh%Moment = 8

p%du( 9) = MaxThrust / real(100*u%TowerPtLoads%NNodes,R8Ki) ! u%TowerPtLoads%Force = 9
p%du(10) = MaxTorque / real(100*u%TowerPtLoads%NNodes,R8Ki) ! u%TowerPtLoads%Moment = 10

p%du(11) = MaxThrust / 100.0_R8Ki ! u%HubPtLoad%Force = 11

p%du(12) = MaxTorque / 100.0_R8Ki ! u%HubPtLoad%Moment = 12

p%du(13) = MaxThrust / 100.0_R8Ki ! u%NacelleLoads%Force = 13

p%du(14) = MaxTorque / 100.0_R8Ki ! u%NacelleLoads%Moment = 14

p%du(15) = 2.0_R8Ki * D2R_D ! u%BlPitchCom = 15

p%du(16) = MaxTorque / 100.0_R8Ki ! u%YawMom = 16

p%du(17) = MaxTorque / (100.0_R8Ki*p%GBRatio) ! u%GenTrq = 17[/code]

for dx perturbations

[code] p%dx = 0.0_R8Ki ! initialize in case we have only 1 blade

! set perturbation sizes: p%dx

p%dx(DOF_Sg :DOF_Hv) = 0.2_R8Ki * D2R_D * max(p%TowerHt, 1.0_ReKi) ! platform translational displacement states

p%dx(DOF_R :DOF_Y ) = 2.0_R8Ki * D2R_D ! platform rotational states

p%dx(DOF_TFA1:DOF_TSS1) = 0.020_R8Ki * D2R_D * p%TwrFlexL ! tower deflection states: 1st tower

p%dx(DOF_TFA2:DOF_TSS2) = 0.002_R8Ki * D2R_D * p%TwrFlexL ! tower deflection states: 2nd tower

p%dx(DOF_Yaw :DOF_TFrl) = 2.0_R8Ki * D2R_D ! nacelle-yaw, rotor-furl, generator azimuth, drivetrain, and tail-furl rotational states

do i=1,p%NumBl

p%dx(DOF_BF(i,1))= 0.20_R8Ki * D2R_D * p%BldFlexL ! blade-deflection states: 1st blade flap mode

p%dx(DOF_BF(i,2))= 0.02_R8Ki * D2R_D * p%BldFlexL ! blade-deflection states: 2nd blade flap mode for blades (1/10 of the other perturbations)

p%dx(DOF_BE(i,1))= 0.20_R8Ki * D2R_D * p%BldFlexL ! blade-deflection states: 1st blade edge mode

end do

if ( p%NumBl == 2 ) then

p%dx(DOF_Teet) = 2.0_R8Ki * D2R_D ! rotor-teeter rotational state

end if

!Set some limits in case perturbation is very small

do i=1,p%NDof

p%dx(i) = max(p%dx(i), MinPerturb)

end do[/code]