Initial sizing

The aim of the initial sizing is to come up with a design which is light, performs well, and is inexpensive to manufacture and operate.

A popular method for initial sizing is the so called constraint analysis method. The method can be used to asses the required wing area and power for an aircraft such that the aircraft meets all performance requirements.

The performance requirements are defined by mathematical expressions of the following form:

TW=f(WS)\frac{T}{W}=f\left(\frac{W}{S}\right).

In the above equation TW\frac{T}{W}is referred to as the thrust to weight ratio and the WS\frac{W}{S}is referred to as the wing loading. The expressions relating the wing loading to the thrust to weight ratio are dependent on the performance requirements. Below are commonly used performance requirements equations. They can be found in any aircraft performance textbook.

The performance equations below are rewritten as a function of the power loading PW\frac{P}{W}expressed in W/kgW/kg. This is more convenient when designing propeller-powered aircraft.

P/W for a level, constant-velocity turn

PW=qcruise(CD0WSg+k(ng)2WSg)Vcruiseηg\frac{P}{W}=q_{cruise}\left(\frac{C_{D0}}{\frac{W}{S}g}+k\left(\frac{n}{g}\right)^2\frac{W}{S}g\right)\frac{V_{cruise}}{\eta}g

P/W for a desired rate of climb

PW=(ROCVclimb+qrefWSgCD0+kqrefWSg)Vclimbηg\frac{P}{W}=\left(\frac{ROC}{V_{climb}}+\frac{q_{ref}}{\frac{W}{S}g}C_{D0}+\frac{k}{q_{ref}}\frac{W}{S}g\right)\frac{V_{climb}}{\eta}g

P/W for a desired cruise airspeed

PW=(qcruiseCD0WSg+kqcruiseWSg)Vcruiseηg\frac{P}{W}=\left(\frac{q_{cruise}C_{D0}}{\frac{W}{S}g}+\frac{k}{q_{cruise}}\frac{W}{S}g\right)\frac{V_{cruise}}{\eta}g

P/W for a desired takeoff distance

PW=[Vtakeoff22gStakeoff+qtakeoffCD,takeoffWSg+Cf,takeoff(1qtakeoffCL,takeoffWSg)]Vclimbηg,Vtakeoff=1.1Vstall\frac{P}{W}=\left[\frac{V_{takeoff}^2}{2gS_{takeoff}}+\frac{q_{takeoff}C_{D,takeoff}}{\frac{W}{S}g}+C_{f,takeoff}\left(1-\frac{q_{takeoff}C_{L,takeoff}}{\frac{W}{S}g}\right)\right]\frac{V{climb}}{\eta}g,\\ V_{takeoff}=1.1V_{stall}

Vstall=2ρCL,maxWSgV_{stall}=\sqrt{\frac{2}{\rho C_{L,max}}\frac{W}{S}g}

P/W for a best range

PW=(qrangeCD0WSg+kqrangeWSg)Vrangeηg,Vrange=2gρWSkCD0\frac{P}{W}=\left(\frac{q_{range}C_{D0}}{\frac{W}{S}g}+\frac{k}{q_{range}}\frac{W}{S}g\right)\frac{V_{range}}{\eta}g,\quad V_{range}=\sqrt{\frac{2g}{\rho}\frac{W}{S}\sqrt{\frac{k}{C_{D0}}}}

P/W for best endurance

PW=(qenduranceCD0WSg+kqenduranceWSg)Venduranceηg,Vendurance=2gρWSk3CD0\frac{P}{W}=\left(\frac{q_{endurance}C_{D0}}{\frac{W}{S}g}+\frac{k}{q_{endurance}}\frac{W}{S}g\right)\frac{V_{endurance}}{\eta}g,\quad V_{endurance}=\sqrt{\frac{2g}{\rho}\frac{W}{S}\sqrt{\frac{k}{3C_{D0}}}}

CLmax for desired stall speed

CL,max=1qstallWSgC_{L,max}=\frac{1}{q_{stall}}\frac{W}{S}g

The expressions above depend on the following parameters:

When performing initial sizing it is difficult to determine the values for the above parameters. After all we haven't even started designing the aircraft! You have probably guessed already - aircraft design is an iterative process.

The image below shows all the performance requirements equations. The required CL,maxC_{L,max}for a desired stall speed is also shown.

In order to meet all performance requirements, the design point should be above all performance requirement equations. In the above image for a design having a wing loading of 25 kg/m225\text{ }kg/m^2the power loading should be approximately 200 W/kg200\text{ }W/kg. In addition for a design having a wing loading of 25 kg/m225\text{ }kg/m^2and a desired stall speed of 15 m/s15\text{ }m/sthe maximum lift coefficient CL,maxC_{L,max}of the design should be approximately 1.81.8. Consider you would like your design to have a mass of 20kg20 kg. For a wing loading of 25 kg/m225\text{ }kg/m^2and power loading of 200 W/kg200\text{ }W/kgyou will need a reference area of approximately Sref=0.8 m2S_{ref}=0.8\text{ }m^2and power system of approximately 4000 W4000\text{ }W.

Example

Please refer to the Python code below which plots the constraint analysis for specific combination of parameters.

import math
import matplotlib.pyplot as plt
import numpy as np


k=0.0593
CD0=0.0181
eta=0.6
m=20
S=3.2200
V_turn=25
V_cruise=25
V_climb=20
ROC=10
ROC_ceiling=0.5
CL_CD0=0.2784
CL_max=1.7
rho=1.1116
rho_takeoff=1.225
rho_ceiling=0.8191
g=9.80665
phi=math.radians(30)
n=1/math.cos(phi)
S_takeoff=50
Cf_takeoff=0.025

N=100
wss = np.linspace(1,30,N)
pw_turn = np.zeros(N)
pw_climb = np.zeros(N)
pw_cruise = np.zeros(N)
pw_takeoff = np.zeros(N)
pw_ceiling = np.zeros(N)
pw_endurance = np.zeros(N)
pw_range = np.zeros(N)

i=0
for ws in wss:

    #Turn
    q=1/2*rho*V_turn**2
    pw_turn[i]=q*(CD0/(ws*g)+k*(n/q)**2*ws*g)*V_turn/eta*g
    P_turn = pw_turn[i] * m

    #Climb
    q=1/2*rho*V_climb**2
    pw_climb[i]=(ROC/V_climb+q/(ws*g)*CD0+k/q*ws*g)*V_climb/eta*g
    P_climb = pw_climb[i] * m

    #Cruise
    q=1/2*rho*V_cruise**2
    pw_cruise[i]=(q*CD0*(1/(ws*g))+k*(1/q)*ws*g)*V_cruise/eta*g
    P_cruise = pw_cruise[i] * m

    #Takeoff
    V_stall=math.sqrt(2/(rho_takeoff*CL_max)*ws*g)
    V_takeoff=1.1*V_stall

    CL_takeoff = 0.8*CL_max
    CD_takeoff = CD0 + k*(CL_takeoff-CL_CD0)**2

    q=1/2*rho_takeoff*(0.7*V_takeoff)**2
    pw_takeoff[i]=(V_takeoff**2/(2*g*S_takeoff)+q*CD_takeoff/(ws*g)+Cf_takeoff*(1-(q*CL_takeoff)/(ws*g)))*V_takeoff/eta*g
    P_takeoff=pw_takeoff[i] * m

    #Ceiling
    pw_ceiling[i]=(ROC_ceiling/math.sqrt(2/rho_ceiling*ws*g*math.sqrt(k/(3*CD0)))+4*math.sqrt((k*CD0)/3))*V_climb/eta*g
    P_cng=pw_ceiling[i]*m

    #Best endurance
    V_endurance = math.sqrt(2 * g * ws * math.sqrt(k / (3*CD0)) / rho)
    q = 1/2 * rho * V_endurance**2
    pw_endurance[i] = (q*CD0/(ws*g)+k/q*ws*g)*V_endurance/eta*g
    P_endurance = pw_endurance[i] * m

    #Best range
    V_range = math.sqrt(2 * g * ws * math.sqrt(k / CD0) / rho)
    q = 1/2 * rho * V_range**2
    pw_range[i] = (q*CD0/(ws*g)+k/q*ws*g)*V_range/eta*g
    P_range = pw_range[i] * m

    i=i+1

plt.figure()
plt.plot(wss,pw_cruise,label='Cruise')
plt.plot(wss,pw_climb,label='Climb')
plt.plot(wss,pw_turn,label='Turn')
plt.plot(wss,pw_endurance,label='Endurance')
plt.plot(wss,pw_range,label='Range')
plt.plot(wss,pw_ceiling,label='Ceiling')
plt.plot(wss,pw_takeoff,label='Takeoff')
plt.title('Constraints')
plt.legend()
plt.xlabel('Wing loading (kg/m^2)')
plt.ylabel('Power loading (W/kg)')
plt.show()

Last updated