How to choose the perturbation values for linearization?

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(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]

Dear Mohamed,

I’m not sure I understand your question. Are you trying to change the default perturbation sizes for some reason? The default perturbation sizes where chosen so that they would work with most wind turbines (scaled by blade radius and tower height). Are the default perturbation sizes not appropriate for your system?

Best regards,

Dear Dr Jonkman

Thank you for your understanding
Just I noticed that perturbation values are so large while it should be a small deviation from the operating point. Also, it does not causes any problem with my system until now.

Best Regards
M.Fekry

Dear Mohamed,

I agree that the perturbations should be small relative to the operating point (OP) values, but the OP values grow with turbine size, so, the perturbation sizes do as well.

Best regards,