# Constraint 2: Rate of Climb

Another constraint that can lead to interesting engine power versus wing area trade-offs is the rate of climb requirement. If q denotes the dynamic pressure in the environmental conditions specified earlier, V is the calibrated airspeed in the climb, and VV is the rate of ascent, the required thrust to weight ratio T/W as a function of the wing loading W/S can be calculated as:

The Python implementation once again sweeps a sensible range of wing loading values to build the appropriate constraint diagram:

In [56]: WSlistROC_Pa = np.linspace(Start_Pa,8500,Resolution)

TWlistROC = []

i = 0

for WS in WSlistROC_Pa:

TW = RateOfClimb_mps/ClimbSpeed_mpsCAS + CDmin *q_climb_Pa/WSlistROC_Pa[i] + k*WSlistROC_Pa[i]/q_climb_Pa TWlistROC.append(TW) i = i + 1

WSlistROC_kgm2 = [x*0.101971621 for x in WSlistROC_Pa] figROC = plt.figure()

PlotSetUp(0, WSmax_kgm2, 0, TWmax, '\$W/S,[,kg/m*2]\$' , '\$T/W,[,,]\$')

Out[57]:

# Constraint 3: Take-Off Ground Run Constraint

We next compute the thrust to weight ratio required for a target ground run distance on take-off. If C™ and CDO denote the take-off run lift and drag coefficients respectively, dGR is the required ground run distance, VL is the lift-off speed, ^TO is the ground friction constant, the required thrust to weight ratio T/W as a function of the wing loading W/S can be calculated as:

Sweeping the range of wing loading values as before, in order to build the appropriate constraint diagram:

In [58]: WSlistGR_Pa = np.linspace(Start_Pa,8500,Resolution)

TWlistGR = []

i=0

for WS in WSlistGR_Pa:

TW =(TakeOffSpeed_mpsCAS**2)/(2*9.81*GroundRun_m) + q_TO_Pa*CDTO/WSlistGR_Pa[i]

+ muTO*(1-q_TO_Pa*CLTO/WSlistGR_Pa[i])

TWlistGR.append(TW) i=i+1

WSlistGR_kgm2 = [x*0.101971621 for x in WSlistGR_Pa]

In [59]: TORunPoly = ConstraintPoly(WSlistGR_kgm2,TWlistGR,'green'/0.1) figTOR = plt.figure()

PlotSetUp(0, WSmax_kgm2, 0, TWmax, '\$W/S,[,kg/m^2]\$'

, '\$T/W,[,,]\$')

Out[59]: