You are on page 1of 8

N854AC - Performance Functions

Section 1. Climb

Ÿ Chart 1. Rate of Climb


Rate of climb is represented as a matrix with x values being altitude MSL, in increments of 5,000 ft., with index 1 being 0 ft.; and
y values being gross weight, in increments of 300 lbs., with index 1 being 1,700 lbs. Values are at ISA.
1085 825 570 315
In[1]:= rateOfClimb = 840 610 380 155 H* feetminute *L
645 435 230 20
Out[1]= 881085, 825, 570, 315<, 8840, 610, 380, 155<, 8645, 435, 230, 20<<

We define functions that convert a given altitude or gross weight into index values of the matrix.

In[2]:= RateOfClimbMatrixAltitudeToIndex@alt_ H* feet *LD = alt  5000 + 1

alt
Out[2]= 1+
5000

In[3]:= RateOfClimbMatrixWeightToIndex@wt_ H* pounds *LD = wt  300 - 14  3

14 wt
Out[3]= - +
3 300

We define a function that yields a rate of climb for a given altitude and weight.

In[4]:= RateOfClimbInterpolator = ListInterpolation@rateOfClimbD

ListInterpolation::inhr : Requested order is too high; order has been reduced to 82, 3<. ‡
Out[4]= InterpolatingFunction@881, 3<, 81, 4<<, <>D

In[5]:= RateOfClimb@alt_ H*feet *L, wt_ H* pounds *LD =


RateOfClimbInterpolator@RateOfClimbMatrixWeightToIndex@wtD,
RateOfClimbMatrixAltitudeToIndex@altDD H* feetminute *L

InterpolatingFunction@881, 3<, 81, 4<<, <>DB- F


14 wt alt
Out[5]= + , 1+
3 300 5000

Ÿ Chart 2. Climb Speed


Climb speed is represented as a matrix with x values being altitude MSL, in increments of 5,000 ft., with index 1 being 0 ft.; and y
values being gross weight, in increments of 300 lbs., with index 1 being 1,700 lbs. Matrix values are at ISA.
83 77 70 64
In[6]:= climbSpeed = 88 81 75 68 H* mileshour *L
91 85 80 73
Out[6]= 8883, 77, 70, 64<, 888, 81, 75, 68<, 891, 85, 80, 73<<

We define functions that convert a given altitude or gross weight into index values of the matrix.
2 1974-5 Cessna Skyhawk 172 M.nb

We define functions that convert a given altitude or gross weight into index values of the matrix.

In[7]:= ClimbSpeedMatrixAltitudeToIndex@alt_ H* feet *LD = alt  5000 + 1

alt
Out[7]= 1+
5000

In[8]:= ClimbSpeedMatrixWeightToIndex@wt_ H* pounds *LD = wt  300 - 14  3

14 wt
Out[8]= - +
3 300

We define a function that yields a rate of climb for a given altitude and weight.

In[9]:= ClimbSpeedInterpolator = ListInterpolation@climbSpeedD

ListInterpolation::inhr : Requested order is too high; order has been reduced to 82, 3<. ‡
Out[9]= InterpolatingFunction@881, 3<, 81, 4<<, <>D

ClimbSpeed@alt_ H* feet *L, wt_ H* pounds *LD = ClimbSpeedInterpolator@


ClimbSpeedMatrixWeightToIndex@wtD, ClimbSpeedMatrixAltitudeToIndex@altDD H* mileshour *L
In[10]:=

InterpolatingFunction@881, 3<, 81, 4<<, <>DB- F


14 wt alt
Out[10]= + , 1+
3 300 5000

Ÿ Chart 3. Climb Fuel Burn


Climb fuel burn is derived from fuel used to attain altitude. This data is represented as a matrix with x values being altitude MSL,
in increments of 5,000 ft., with index 1 being 0 ft.; and y values being gross weight, in increments of 300 lbs., with index 1 being
1,700 lbs. Matrix values are the amount of fuel required to attain that altitude, at ISA, including 1 US gallon of taxi/runup fuel
use.
1 1.9 2.9 4.4
In[11]:= climbFuelBurn = 1 2.2 3.6 6.3 H* US gallonshour *L
1 2.6 4.8 11.5
Out[11]= 881, 1.9, 2.9, 4.4<, 81, 2.2, 3.6, 6.3<, 81, 2.6, 4.8, 11.5<<

We define functions that convert a given altitude or gross weight into index values of the matrix.

In[12]:= ClimbFuelBurnMatrixAltitudeToIndex@alt_ H* feet *LD = alt  5000 + 1

alt
Out[12]= 1+
5000

In[13]:= ClimbFuelBurnMatrixWeightToIndex@wt_ H* pounds *LD = wt  300 - 14  3

14 wt
Out[13]= - +
3 300

We define a function that yields a fuel burn between two altitudes.

In[14]:= ClimbFuelBurnInterpolator = ListInterpolation@climbFuelBurnD

ListInterpolation::inhr : Requested order is too high; order has been reduced to 82, 3<. ‡
Out[14]= InterpolatingFunction@881., 3.<, 81., 4.<<, <>D
In[15]:= ClimbFuelBurn@alt0_ H* feet *L, altf_ H* feet *L, wt_ H* pounds *LD =
ClimbFuelBurnInterpolator@ClimbFuelBurnMatrixWeightToIndex@wtD,
ClimbFuelBurnMatrixAltitudeToIndex@altfDD -
ClimbFuelBurnInterpolator@ClimbFuelBurnMatrixWeightToIndex@wtD,
ClimbFuelBurnMatrixAltitudeToIndex@alt0DD H* US gallonshour *L

-InterpolatingFunction@881., 3.<, 81., 4.<<, <>DB- F+


14 wt alt0
Out[15]= + , 1+
3 300 5000

InterpolatingFunction@881., 3.<, 81., 4.<<, <>DB- F


14 wt altf
+ , 1+
3 300 5000

We define a function that uses rate-of-climb data to determine how long it takes to climb from one altitude to another.

In[16]:= TimeBetweenAltitudes@alt0_ H* feet *L, altf_ H* feet *L, wt_ H* pounds *LD =

â x H* minutes *L
altf
à
1
alt0 RateOfClimb@x, wtD

à
altf 1

InterpolatingFunction@881, 3<, 81, 4<<, <>DA- 14 E


Out[16]= âx
alt0 wt x
3
+ 300
, 1+ 5000

Finally, we define a function that determines the fuel burn at a given altitude and gross weight. The burn is rate is determined
over a climb of ±500 feet from that altitude.
ClimbFuelBurnRate@alt_ H* feet *L, wt_ H* pounds *LD =
ClimbFuelBurn@alt - 500, alt + 500, wtD 
In[17]:=

HTimeBetweenAltitudes@alt - 500, alt + 500, wtD  60L H* US gallonshour *L

60 -InterpolatingFunction@881., 3.<, 81., 4.<<, <>DB- F+


14 wt -500 + alt
Out[17]= + , 1+
3 300 5000

InterpolatingFunction@881., 3.<, 81., 4.<<, <>DB- F “


14 wt 500 + alt
+ , 1+
3 300 5000

à
500+alt 1

3<, 81, 4<<, <>DA- 14 E


âx
-500+alt InterpolatingFunction@881, wt x
3
+ 300
, 1+ 5000

Section 2. Cruise

Ÿ Chart 1. Cruise Speed


Cruise speed is represented as a vector with x values being altitude MSL, in increments of 2,500 ft., with index 1 being 2,500 ft.
Matrix values are at 2,300 lbs. gross weight, 2,400 RPM, and ISA.
In[18]:= cruiseSpeed = 8122, 121, 119, 117, 115< H* mileshour *L

Out[18]= 8122, 121, 119, 117, 115<

We define a function that converts a given altitude into an index value of the vector.

In[19]:= CruiseSpeedVectorAltitudeToIndex@alt_ H* feet *LD = alt  2500

alt
Out[19]=
2500

We define a function that yields a cruise speed in knots for a given altitude.
4 1974-5 Cessna Skyhawk 172 M.nb

In[20]:= CruiseSpeedInterpolator = ListInterpolation@cruiseSpeedD

Out[20]= InterpolatingFunction@881, 5<<, <>D

CruiseSpeed@alt_ H* feet *LD =


CruiseSpeedInterpolator@CruiseSpeedVectorAltitudeToIndex@altDD H* MPH *L
In[21]:=

F
alt
Out[21]= InterpolatingFunction@881, 5<<, <>DB
2500

Ÿ Chart 2. Cruise Fuel Burn


Cruise fuel burn is represented as a vector with x values being altitude MSL, in increments of 2,500 ft., with index 1 being 2,500
ft. Matrix values are at 2,300 lbs. gross weight, 2,400 RPM, and ISA.
In[22]:= cruiseFuelBurnRate = 87.1, 6.8, 6.6, 6.4, 6.2< H* US gallonshour *L

Out[22]= 87.1, 6.8, 6.6, 6.4, 6.2<

We define a function that converts a given altitude or gross weight into an index value of the vector.

In[23]:= CruiseFuelBurnRateVectorAltitudeToIndex@alt_ H* feet *LD = alt  2500

alt
Out[23]=
2500

We define a function that yields a cruise speed for a given altitude.

In[24]:= CruiseFuelBurnRateInterpolator = ListInterpolation@cruiseFuelBurnRateD

Out[24]= InterpolatingFunction@881., 5.<<, <>D

CruiseFuelBurnRate@alt_ H* feet *LD = CruiseFuelBurnRateInterpolator@


CruiseFuelBurnRateVectorAltitudeToIndex@altDD H* US gallonshour *L
In[25]:=

F
alt
Out[25]= InterpolatingFunction@881., 5.<<, <>DB
2500

Section 3. Descent

Ÿ Chart 1. Rate of Descent


Because no charts exist for descent, we will use the lowest RPM available in the cruise chart, assume a descent rate of 500 feet
per minute, and calculate speed from that.
In[26]:= rateOfDescent = 2.54 H* meterssecond *L

Out[26]= 2.54

Ÿ Chart 2. Descent Speed

Ÿ Step 1. Forces of Flight

To do this, we will first specify the forces on the airplane in level flight. We do this by first specifying some constants describing
Earth’s atmosphere.
In[27]:= universalGasConstant = 8.31447 H* JoulesKelvin-mole *L

Out[27]= 8.31447

In[28]:= temperatureLapseRate = -0.0065 H* Kelvinmeter *L

Out[28]= -0.0065

In[29]:= gravitationalAcceleration = 9.80665 H* meterssecond^2 *L

Out[29]= 9.80665

In[30]:= dryAirMass = 0.0289644 H* kilogramsmole *L

Out[30]= 0.0289644

In[31]:= gravitationalConstant = 6.67300 * 10-11 H* meters^3kilogram-second *L

Out[31]= 6.673 ´ 10-11

In[32]:= earthsMass = 5.9742 * 1024 H* kilograms *L

Out[32]= 5.9742 ´ 1024

In[33]:= earthsRadius = 6378.1 * 1000 H* meters *L

Out[33]= 6.3781 ´ 106

Now we specify some standard approximations of atmospheric dynamics.

In[34]:= AirPressure@press_ H* Pascals *L, alt_ H* meters *L, temp_ H* Kelvin *LD =
gravitationalAcceleration*dryAirMass
temperatureLapseRate* alt -universalGasConstant*temperatureLapseRate
press * 1 +
temp
5.25578
0.0065 alt
Out[34]= press 1 -
temp

In[35]:= AirTemperature@alt_ H* meters *L, surfaceTemp_ H* Kelvin *LD =


surfaceTemp + temperatureLapseRate* alt
Out[35]= -0.0065 alt + surfaceTemp

In[36]:= AirDensity@press_ H* Pascals *L, alt_ H* meters *L, temp_ H* Kelvin *LD =
AirPressure@press, alt, tempD * dryAirMass
universalGasConstant* AirTemperature@alt, tempD

0.00348361 press J1 - N
0.0065 alt 5.25578
temp
Out[36]=
-0.0065 alt + temp

Now we are ready to specify the forces of thrust and drag.

ForceThrust@pct_ H* factor *L, v_ H* meterssecond *LD =


111 854.981 * pct
In[37]:=
v
111 855. pct
Out[37]=
v
6 1974-5 Cessna Skyhawk 172 M.nb

In[38]:= ForceDrag@v_ H* meterssecond *L, press_ H* Pascals *L, alt_

H* meters *L, temp_ H* Kelvin *LD = - AirDensity@press, alt, tempD * v2 * ACD


1
2

0.00174181 press J1 - N
0.0065 alt 5.25578
temp
v2 ACD
Out[38]= -
-0.0065 alt + temp

In a cruise, thrust and drag sum to zero. From this, we can determine A‰CD . We’ll enter in the cruise speeds for each percentage
of BHP (150 HP) and altitude as an ordered list.
cruiseSpeedsForDescent = 8139, 133, 128, 122, 116, 109, 138, 133, 128, 121, 114, 107,
138, 133, 126, 119, 112, 138, 131, 124, 117, 110, 132, 122, 115< H* mileshour *L
In[39]:=

Out[39]= 8139, 133, 128, 122, 116, 109, 138, 133, 128, 121, 114,
107, 138, 133, 126, 119, 112, 138, 131, 124, 117, 110, 132, 122, 115<

bhpPercentsForDescent = 887, 78, 70, 63, 57, 51, 81, 73, 66, 60,
54, 48, 76, 69, 63, 57, 51, 72, 66, 59, 54, 48, 65, 56, 51< H* percentage *L
In[40]:=

Out[40]= 887, 78, 70, 63, 57, 51, 81, 73, 66, 60, 54, 48, 76, 69, 63, 57, 51, 72, 66, 59, 54, 48, 65, 56, 51<

altitudesForDescent =
82500, 2500, 2500, 2500, 2500, 2500, 5000, 5000, 5000, 5000, 5000, 5000, 7500, 7500, 7500,
In[41]:=

7500, 7500, 10 000, 10 000, 10 000, 10 000, 10 000, 12 500, 12 500, 12 500< H* feet *L
Out[41]= 82500, 2500, 2500, 2500, 2500, 2500, 5000, 5000, 5000, 5000, 5000, 5000, 7500,
7500, 7500, 7500, 7500, 10 000, 10 000, 10 000, 10 000, 10 000, 12 500, 12 500, 12 500<

We then use these values to solve for A´CD , taking its value to be the average of all solutions.

In[42]:= derivedACD =
MeanATableAACD . SolveAForceThrustAbhpPercentsForDescentQiU ‘ 100, cruiseSpeedsForDescentQiU *
0.44704E + ForceDragAcruiseSpeedsForDescentQiU * 0.44704,
101 325, altitudesForDescentQiU * 0.3048, 288.15E Š 0, ACD E,
8i, 1, Length@cruiseSpeedsForDescentD<EE@@1DD H* meters^2 *L

Out[42]= 0.826051

Ÿ Step 2. Angle of Descent

The angle of descent is such that the aircraft descends at 500 feet per minute given its velocity.

Θ@v_ H* meterssecond *LD = ArcSinB F H* angle *L


rateOfDescent
In[43]:=
v

F
2.54
Out[43]= ArcSinB
v

Ÿ Step 3. Descent Speed

First, we determine the magnitude of the gravitational force upon the aircraft.
In[44]:= W@alt_ H* meters *L, wt_ H* kilograms *LD =

H* Newtons *L
earthsMass * wt
gravitationalConstant*
HearthsRadius + altL2

3.98658 ´ 1014 wt

I6.3781 ´ 106 + altM


Out[44]=
2

We recalculate the drag equation, substituting in our derived value for A‰CD .

In[45]:= DerivedDrag@v_ H* meterssecond *L, press_ H* Pascals *L, alt_ H* meters *L,

temp_ H* Kelvin *LD = - AirDensity@press, alt, tempD * v2 * derivedACD


1
2

0.00143882 press J1 - N
0.0065 alt 5.25578
temp
v2
Out[45]= -
-0.0065 alt + temp

The speed of the aircraft is the velocity at which the forces of thrust plus the horizontal component of weight is equal to the force
of drag (where “horizontal” refers to the lateral axis of the aircraft, and is not relative to the horizon).
In[46]:= Solve@
ForceThrust@pct, vD + W@alt, wtD * Sin@Θ@vDD + DerivedDrag@v, 101 325, alt * 0.3048, 288.15D Š 0, vD

Out[46]= ::v ®

-JH0.5 + 0.866025 äL I2.25679 ´ 1039 pct - 1.48091 ´ 1034 alt pct - 4.81016 ´ 1027 alt2 pct - 3.81433 ´


13
1020 alt3 pct + 5.02213 ´ 1035 wt - 3.45301 ´ 1030 alt wtM

JI1. - 6.87559 ´ 10-6 altM I1.0208 ´ 1034 + 3.20095 ´ 1027 alt + 2.50933 ´ 1020 alt2 M N>,
1.751927097624336 13

:v ® -JH0.5 - 0.866025 äL I2.25679 ´ 10 39


pct - 1.48091 ´ 10 34
alt pct - 4.81016 ´ 10 27 2
alt pct -


13
3.81433 ´ 1020 alt3 pct + 5.02213 ´ 1035 wt - 3.45301 ´ 1030 alt wtM

JI1. - 6.87559 ´ 10-6 altM I1.0208 ´ 1034 + 3.20095 ´ 1027 alt + 2.50933 ´ 1020 alt2 M N>,
1.751927097624336 13

:v ® I2.25679 ´ 10 39
pct - 1.48091 ´ 10 34
alt pct - 4.81016 ´ 10 27 2
alt pct -

’
13
3.81433 ´ 1020 alt3 pct + 5.02213 ´ 1035 wt - 3.45301 ´ 1030 alt wtM

JI1. - 6.87559 ´ 10-6 altM I1.0208 ´ 1034 + 3.20095 ´ 1027 alt + 2.50933 ´ 1020 alt2 M N>>
1.751927097624336 13

We’ll use the real solution as our equation for descent speed at an altitude and power setting.

In[47]:= DescentSpeed@pct_ H* factor *L, alt_ H* feet *L, wt_ H* pounds *LD =
I2.2567900815737013`*^39 pct - 1.4809085006917426`*^34 alt pct -
4.810158619974038`*^27 alt2 pct - 3.814329542744501`*^20 alt3 pct +
’
13
5.022128108384772`*^35 wt - 3.453007186649977`*^30 alt wtM

JH1.` - 6.875585632483083`*^-6 altL 1.7519270976243361085759412769`15.954589770191005

I1.0207994770400495`*^34 + 3.200951622081966`*^27 alt + 2.509330068579958`*^20 alt2 M N


13

H* meterssecond *L

Out[47]= I2.25679 ´ 1039 pct - 1.48091 ´ 1034 alt pct - 4.81016 ´ 1027 alt2 pct -

’
13
3.81433 ´ 1020 alt3 pct + 5.02213 ´ 1035 wt - 3.45301 ´ 1030 alt wtM

JI1. - 6.87559 ´ 10 I1.0208 ´ 10 alt + 2.50933 ´ 1020 alt2 M N


-6 1.751927097624336 34 27 13
altM + 3.20095 ´ 10

Ÿ Chart 3. Descent Fuel Burn


8 1974-5 Cessna Skyhawk 172 M.nb

Chart 3. Descent Fuel Burn


Descent fuel burn rate is constant at 50% BHP, regardless of altitude.

In[48]:= descentFuelBurnRate = 6.1 H* US gallonshour *L

Out[48]= 6.1

Section 4. Constructing the Charts


We are now ready to construct our performance charts. The colums are, in order: altitude (ft), cruise speed (KTAS), cruise fuel
burn rate (gal/hr), climb rate (ft/min), climb speed (KTAS), climb fuel burn rate (gal/hr), descent rate (ft/min), descent speed
(KTAS), and descent fuel burn rate (gal/hr).
In[49]:= MatrixForm@
Table@8i, 0, 0, Round@CruiseSpeed@iD * 0.868976242D, Round@ClimbSpeed@i, 2300D * 0.868976242D,
Round@DescentSpeed@.5, i, 2300 * 0.45359237D * 1.94384449D, Round@CruiseFuelBurnRate@iD, 0.1D,
Round@N@ClimbFuelBurnRate@i, 2300DD, 0.1D, descentFuelBurnRate,
Round@N@RateOfClimb@i, 2300DDD, rateOfDescent * 196.850394<, 8i, 0, 15 000, 2500<DD

InterpolatingFunction::dmval :
Input value 80< lies outside the range of data in the interpolating function. Extrapolation will be used. ‡
InterpolatingFunction::dmval :
Input value 80< lies outside the range of data in the interpolating function. Extrapolation will be used. ‡

InterpolatingFunction::dmval : Input value :3, > lies outside


9
10
the range of data in the interpolating function. Extrapolation will be used. ‡
General::stop : Further output of InterpolatingFunction::dmval will be suppressed during this calculation. ‡

NIntegrate::slwcon :
Numerical integration converging too slowly; suspect one of the following: singularity, value
of the integration is 0, highly oscillatory integrand, or WorkingPrecision too small. ‡
NIntegrate::ncvb :
NIntegrate failed to converge to prescribed accuracy after 9 recursive bisections in x near 8x<
= 815461.9<. NIntegrate obtained 209.76755327252812` and
154.6548498812603` for the integral and error estimates. ‡
Out[49]//MatrixForm=
0 0 0 105 79 106 7.6 20.2 6.1 645 500.
2500 0 0 106 76 109 7.1 9.3 6.1 539 500.
5000 0 0 105 74 111 6.8 6.6 6.1 435 500.
7500 0 0 103 72 114 6.6 8.1 6.1 332 500.
10 000 0 0 102 70 117 6.4 10.5 6.1 230 500.
12 500 0 0 100 67 120 6.2 9.8 6.1 126 500.
15 000 0 0 98 63 124 6. 0.6 6.1 20 500.

You might also like