cessna skyhawk 172 m performance derivations
DESCRIPTION
Interpolated and calculated performance values for a 1974-75 Cessna Skyhawk 172 M, for use with flight planning software that uses table-based performance data.TRANSCRIPT
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.; andy values being gross weight, in increments of 300 lbs., with index 1 being 1,700 lbs. Values are at ISA.
In[1]:= rateOfClimb =
1085 825 570 315
840 610 380 155
645 435 230 20
H* feet�minute *L
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
Out[2]= 1 +alt
5000
In[3]:= RateOfClimbMatrixWeightToIndex@wt_ H* pounds *LD = wt�300 - 14�3Out[3]= -
14
3+
wt
300
We define a function that yields a rate of climb for a given altitude and weight.
In[4]:= RateOfClimbInterpolator = ListInterpolation@rateOfClimbDListInterpolation::inhr : Requested order is too high; order has been reduced to 82, 3<. �
Out[4]= InterpolatingFunction@881, 3<, 81, 4<<, <>DIn[5]:= RateOfClimb@alt_ H*feet *L, wt_ H* pounds *LD =
RateOfClimbInterpolator@RateOfClimbMatrixWeightToIndex@wtD,RateOfClimbMatrixAltitudeToIndex@altDD H* feet�minute *L
Out[5]= InterpolatingFunction@881, 3<, 81, 4<<, <>DB-14
3+
wt
300, 1 +
alt
5000F
� 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 yvalues being gross weight, in increments of 300 lbs., with index 1 being 1,700 lbs. Matrix values are at ISA.
In[6]:= climbSpeed =
83 77 70 64
88 81 75 68
91 85 80 73
H* miles�hour *L
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.
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
Out[7]= 1 +alt
5000
In[8]:= ClimbSpeedMatrixWeightToIndex@wt_ H* pounds *LD = wt�300 - 14�3Out[8]= -
14
3+
wt
300
We define a function that yields a rate of climb for a given altitude and weight.
In[9]:= ClimbSpeedInterpolator = ListInterpolation@climbSpeedDListInterpolation::inhr : Requested order is too high; order has been reduced to 82, 3<. �
Out[9]= InterpolatingFunction@881, 3<, 81, 4<<, <>DIn[10]:= ClimbSpeed@alt_ H* feet *L, wt_ H* pounds *LD = ClimbSpeedInterpolator@
ClimbSpeedMatrixWeightToIndex@wtD, ClimbSpeedMatrixAltitudeToIndex@altDD H* miles�hour *LOut[10]= InterpolatingFunction@881, 3<, 81, 4<<, <>DB-
14
3+
wt
300, 1 +
alt
5000F
� 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 being1,700 lbs. Matrix values are the amount of fuel required to attain that altitude, at ISA, including 1 US gallon of taxi/runup fueluse.
In[11]:= climbFuelBurn =
1 1.9 2.9 4.4
1 2.2 3.6 6.3
1 2.6 4.8 11.5
H* US gallons�hour *L
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
Out[12]= 1 +alt
5000
In[13]:= ClimbFuelBurnMatrixWeightToIndex@wt_ H* pounds *LD = wt�300 - 14�3Out[13]= -
14
3+
wt
300
We define a function that yields a fuel burn between two altitudes.
In[14]:= ClimbFuelBurnInterpolator = ListInterpolation@climbFuelBurnDListInterpolation::inhr : Requested order is too high; order has been reduced to 82, 3<. �
Out[14]= InterpolatingFunction@881., 3.<, 81., 4.<<, <>D
2 1974-5 Cessna Skyhawk 172 M.nb
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
Out[15]= -InterpolatingFunction@881., 3.<, 81., 4.<<, <>DB-14
3+
wt
300, 1 +
alt0
5000F +
InterpolatingFunction@881., 3.<, 81., 4.<<, <>DB-14
3+
wt
300, 1 +
altf
5000F
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 =
àalt0
altf 1
RateOfClimb@x, wtD âx H* minutes *L
Out[16]= àalt0
altf 1
InterpolatingFunction@881, 3<, 81, 4<<, <>DA-14
3+
wt
300, 1 +
x
5000E âx
Finally, we define a function that determines the fuel burn at a given altitude and gross weight. The burn is rate is determinedover a climb of ±500 feet from that altitude.
In[17]:= ClimbFuelBurnRate@alt_ H* feet *L, wt_ H* pounds *LD =
ClimbFuelBurn@alt - 500, alt + 500, wtD �HTimeBetweenAltitudes@alt - 500, alt + 500, wtD �60L H* US gallons�hour *LOut[17]= 60 -InterpolatingFunction@881., 3.<, 81., 4.<<, <>DB-
14
3+
wt
300, 1 +
-500 + alt
5000F +
InterpolatingFunction@881., 3.<, 81., 4.<<, <>DB-14
3+
wt
300, 1 +
500 + alt
5000F �
à-500+alt
500+alt 1
InterpolatingFunction@881, 3<, 81, 4<<, <>DA-14
3+
wt
300, 1 +
x
5000E âx
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 *LOut[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�2500Out[19]=
alt
2500
We define a function that yields a cruise speed in knots for a given altitude.
In[20]:= CruiseSpeedInterpolator = ListInterpolation@cruiseSpeedDOut[20]= InterpolatingFunction@881, 5<<, <>DIn[21]:= CruiseSpeed@alt_ H* feet *LD =
CruiseSpeedInterpolator@CruiseSpeedVectorAltitudeToIndex@altDD H* MPH *LOut[21]= InterpolatingFunction@881, 5<<, <>DB alt
2500F
� 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,500ft. 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 *LOut[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�2500Out[23]=
alt
2500
We define a function that yields a cruise speed for a given altitude.
In[24]:= CruiseFuelBurnRateInterpolator= ListInterpolation@cruiseFuelBurnRateDOut[24]= InterpolatingFunction@881., 5.<<, <>DIn[25]:= CruiseFuelBurnRate@alt_ H* feet *LD = CruiseFuelBurnRateInterpolator@
CruiseFuelBurnRateVectorAltitudeToIndex@altDD H* US gallons�hour *LOut[25]= InterpolatingFunction@881., 5.<<, <>DB alt
2500F
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 feetper minute, and calculate speed from that.
In[26]:= rateOfDescent = 2.54 H* meters�second *LOut[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 describingEarth’s atmosphere.
4 1974-5 Cessna Skyhawk 172 M.nb
In[27]:= universalGasConstant = 8.31447 H* Joules�Kelvin-mole *LOut[27]= 8.31447
In[28]:= temperatureLapseRate = -0.0065 H* Kelvin�meter *LOut[28]= -0.0065
In[29]:= gravitationalAcceleration = 9.80665 H* meters�second^2 *LOut[29]= 9.80665
In[30]:= dryAirMass = 0.0289644 H* kilograms�mole *LOut[30]= 0.0289644
In[31]:= gravitationalConstant = 6.67300*10-11 H* meters^3�kilogram-second *LOut[31]= 6.673´10-11
In[32]:= earthsMass = 5.9742*1024 H* kilograms *LOut[32]= 5.9742´1024
In[33]:= earthsRadius = 6378.1*1000 H* meters *LOut[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 =
press* 1 +temperatureLapseRate*alt
temp
gravitationalAcceleration*dryAirMass
-universalGasConstant*temperatureLapseRate
Out[34]= press 1 -0.0065 alt
temp
5.25578
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
Out[36]=
0.00348361 press J1 -0.0065 alt
tempN5.25578
-0.0065 alt + temp
Now we are ready to specify the forces of thrust and drag.
In[37]:= ForceThrust@pct_ H* factor *L, v_ H* meters�second *LD =111854.981*pct
v
Out[37]=111855. pct
v
In[38]:= ForceDrag@v_ H* meters�second *L, press_ H* Pascals *L, alt_
H* meters *L, temp_ H* Kelvin *LD = -1
2 AirDensity@press, alt, tempD *v2 *ACD
Out[38]= -
0.00174181 press J1 -0.0065 alt
tempN5.25578
v2 ACD
-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.
In[39]:= 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
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<
In[40]:= 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
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<In[41]:= altitudesForDescent =82500, 2500, 2500, 2500, 2500, 2500, 5000, 5000, 5000, 5000, 5000, 5000, 7500, 7500, 7500,
7500, 7500, 10000, 10000, 10000, 10000, 10000, 12500, 12500, 12500< H* feet *LOut[41]= 82500, 2500, 2500, 2500, 2500, 2500, 5000, 5000, 5000, 5000, 5000, 5000, 7500,
7500, 7500, 7500, 7500, 10000, 10000, 10000, 10000, 10000, 12500, 12500, 12500<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,
101325, altitudesForDescentQiU *0.3048, 288.15E � 0, ACDE,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.
In[43]:= Θ@v_ H* meters�second *LD = ArcSinBrateOfDescentv
F H* angle *L
Out[43]= ArcSinB2.54v
F
� Step 3. Descent Speed
First, we determine the magnitude of the gravitational force upon the aircraft.
6 1974-5 Cessna Skyhawk 172 M.nb
In[44]:= W@alt_ H* meters *L, wt_ H* kilograms *LD =
gravitationalConstant*earthsMass* wt
HearthsRadius + altL2H* Newtons *L
Out[44]=3.98658´1014 wt
I6.3781´106 + altM2
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 = -
1
2 AirDensity@press, alt, tempD *v2 *derivedACD
Out[45]= -
0.00143882 press J1 -0.0065 alt
tempN5.25578
v2
-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 forceof 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, 101325, 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´
1020 alt3 pct + 5.02213´1035 wt - 3.45301´1030 alt wtM1�3N �JI1. - 6.87559´10-6 altM1.751927097624336 I1.0208´1034 + 3.20095´1027 alt + 2.50933´1020 alt2M1�3N>,
:v ® -JH0.5 - 0.866025 äL I2.25679´1039 pct - 1.48091´1034 alt pct - 4.81016´1027 alt2 pct -
3.81433´1020 alt3 pct + 5.02213´1035 wt - 3.45301´1030 alt wtM1�3N �JI1. - 6.87559´10-6 altM1.751927097624336 I1.0208´1034 + 3.20095´1027 alt + 2.50933´1020 alt2M1�3N>,
:v ® I2.25679´1039 pct - 1.48091´1034 alt pct - 4.81016´1027 alt2 pct -
3.81433´1020 alt3 pct + 5.02213´1035 wt - 3.45301´1030 alt wtM1�3 �JI1. - 6.87559´10-6 altM1.751927097624336 I1.0208´1034 + 3.20095´1027 alt + 2.50933´1020 alt2M1�3N>>
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`*^39pct - 1.4809085006917426`*^34alt pct -
4.810158619974038`*^27alt2 pct - 3.814329542744501`*^20alt3 pct +
5.022128108384772`*^35 wt - 3.453007186649977`*^30alt wtM1�3 �JH1.` - 6.875585632483083`*^-6altL1.7519270976243361085759412769`15.954589770191005
I1.0207994770400495`*^34+ 3.200951622081966`*^27alt + 2.509330068579958`*^20alt2M1�3NH* meters�second *L
Out[47]= I2.25679´1039 pct - 1.48091´1034 alt pct - 4.81016´1027 alt2 pct -
3.81433´1020 alt3 pct + 5.02213´1035 wt - 3.45301´1030 alt wtM1�3 �JI1. - 6.87559´10-6 altM1.751927097624336 I1.0208´1034 + 3.20095´1027 alt + 2.50933´1020 alt2M1�3N
� Chart 3. Descent Fuel Burn
�
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 *LOut[48]= 6.1
Section 4. Constructing the ChartsWe are now ready to construct our performance charts. The colums are, in order: altitude (ft), cruise speed (KTAS), cruise fuelburn 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@[email protected], 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, 15000, 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,9
10> lies outside
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.
10000 0 0 102 70 117 6.4 10.5 6.1 230 500.
12500 0 0 100 67 120 6.2 9.8 6.1 126 500.
15000 0 0 98 63 124 6. 0.6 6.1 20 500.
8 1974-5 Cessna Skyhawk 172 M.nb