# 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 *V _{V}* 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,[,,]$')

axROC = figROC.add_subplot(111) axROC.add_patch(RateOfClimbPoly)

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 CD^{O} denote the take-off run lift and drag coefficients respectively, *d _{GR}* is the required ground run distance,

*V*is the lift-off speed, ^

_{L}_{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,[,,]$')

axTOR = figTOR.add_subplot(111) axTOR.add_patch(TORunPoly)

Out[59]: