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(2k-1) = MaxThrust / real(100p%NumBlu%BladePtLoads(k)%NNodes,R8Ki) ! u%BladePtLoads(k)%Force = 2k-1
p%du(2k ) = MaxTorque / real(100p%NumBlu%BladePtLoads(k)%NNodes,R8Ki) ! u%BladePtLoads(k)%Moment = 2k
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(100u%TowerPtLoads%NNodes,R8Ki) ! u%TowerPtLoads%Force = 9
p%du(10) = MaxTorque / real(100u%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]