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.
In[1]:=
Out[1]=
rateOfClimb =
1085 825 570 315 840 610 380 155 H* feetminute *L 645 435 230 20
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
Out[3]=
-
wt +
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]= In[5]:=
Out[5]=
InterpolatingFunction@881, 3<, 81, 4<<, <>D
RateOfClimb@alt_ H*feet *L, wt_ H* pounds *LD = RateOfClimbInterpolator@RateOfClimbMatrixWeightToIndex@wtD, RateOfClimbMatrixAltitudeToIndex@altDD H* feetminute *L InterpolatingFunction@881, 3<, 81, 4<<, <>DB-
14
wt +
3
alt , 1+
300
5000
F
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.
In[6]:=
Out[6]=
83 77 70 64 climbSpeed = 88 81 75 68 H* mileshour *L 91 85 80 73
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
Out[8]=
-
wt +
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]= In[10]:=
Out[10]=
InterpolatingFunction@881, 3<, 81, 4<<, <>D
ClimbSpeed@alt_ H* feet *L, wt_ H* pounds *LD = ClimbSpeedInterpolator@ ClimbSpeedMatrixWeightToIndex@wtD, ClimbSpeedMatrixAltitudeToIndex@altDD H* mileshour *L InterpolatingFunction@881, 3<, 81, 4<<, <>DB-
14
wt +
3
alt , 1+
300
5000
F
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.
In[11]:=
Out[11]=
1 1.9 2.9 4.4 climbFuelBurn = 1 2.2 3.6 6.3 H* US gallonshour *L 1 2.6 4.8 11.5
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
Out[13]=
-
wt +
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]:=
Out[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 gallonshour *L -InterpolatingFunction@881., 3.<, 81., 4.<<, <>DBInterpolatingFunction@881., 3.<, 81., 4.<<, <>DB-
14
wt
alt0
+
, 1+
3 14
300 wt +
5000 altf , 1+
3
300
5000
F+ F
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]:=
Out[16]=
TimeBetweenAltitudes@alt0_ H* feet *L, altf_ H* feet *L, wt_ H* pounds *LD = altf 1 â x H* minutes *L à alt0 RateOfClimb@x, wtD à
altf
alt0
1 InterpolatingFunction@881, 3<, 81, 4<<, <>DA- 14 + 3
wt , 300
1+
x E 5000
âx
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. In[17]:=
Out[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 gallonshour *L 60 -InterpolatingFunction@881., 3.<, 81., 4.<<, <>DBInterpolatingFunction@881., 3.<, 81., 4.<<, <>DBà
500+alt
-500+alt InterpolatingFunction@881,
14
-500 + alt
wt +
, 1+
3
300
14
5000 500 + alt
wt +
3
, 1+ 300
5000
F
F+
1 3<, 81, 4<<, <>DA- 14 + 3
wt , 300
1+
x E 5000
â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]:= Out[18]=
cruiseSpeed = 8122, 121, 119, 117, 115< H* mileshour *L 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]:= Out[20]= In[21]:=
CruiseSpeedInterpolator = ListInterpolation@cruiseSpeedD InterpolatingFunction@881, 5<<, <>D CruiseSpeed@alt_ H* feet *LD = CruiseSpeedInterpolator@CruiseSpeedVectorAltitudeToIndex@altDD H* MPH *L alt
Out[21]=
InterpolatingFunction@881, 5<<, <>DB 2500
F
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]:= Out[22]=
cruiseFuelBurnRate = 87.1, 6.8, 6.6, 6.4, 6.2< H* US gallonshour *L 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]:= Out[24]= In[25]:=
CruiseFuelBurnRateInterpolator = ListInterpolation@cruiseFuelBurnRateD InterpolatingFunction@881., 5.<<, <>D CruiseFuelBurnRate@alt_ H* feet *LD = CruiseFuelBurnRateInterpolator@ CruiseFuelBurnRateVectorAltitudeToIndex@altDD H* US gallonshour *L alt
Out[25]=
InterpolatingFunction@881., 5.<<, <>DB 2500
F
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]:= Out[26]=
rateOfDescent = 2.54 H* meterssecond *L 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]:= Out[27]= In[28]:= Out[28]= In[29]:= Out[29]= In[30]:= Out[30]=
In[31]:= Out[31]= In[32]:= Out[32]= In[33]:= Out[33]=
universalGasConstant = 8.31447 H* JoulesKelvin-mole *L 8.31447 temperatureLapseRate = -0.0065 H* Kelvinmeter *L -0.0065 gravitationalAcceleration = 9.80665 H* meterssecond^2 *L 9.80665 dryAirMass = 0.0289644 H* kilogramsmole *L 0.0289644 gravitationalConstant = 6.67300 * 10-11 H* meters^3kilogram-second *L 6.673 ´ 10-11 earthsMass = 5.9742 * 1024 H* kilograms *L 5.9742 ´ 1024 earthsRadius = 6378.1 * 1000 H* meters *L 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 0.0065 alt Out[34]=
5.25578
press 1 temp
In[35]:=
Out[35]= In[36]:=
AirTemperature@alt_ H* meters *L, surfaceTemp_ H* Kelvin *LD = surfaceTemp + temperatureLapseRate* alt -0.0065 alt + surfaceTemp 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 -
0.0065 alt 5.25578 N temp
Out[36]=
-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* meterssecond *LD = 111 855. pct
Out[37]=
v
111 854.981 * pct v
6
1974-5 Cessna Skyhawk 172 M.nb
In[38]:=
ForceDrag@v_ H* meterssecond *L, press_ H* Pascals *L, alt_ 1 H* meters *L, temp_ H* Kelvin *LD = - AirDensity@press, alt, tempD * v2 * ACD 2 0.00174181 press J1 -
Out[38]=
0.0065 alt 5.25578 N temp
v2 ACD
-0.0065 alt + temp
In a cruise, thrust and drag sum to zero. From this, we can determine ACD . We’ll enter in the cruise speeds for each percentage of BHP (150 HP) and altitude as an ordered list. In[39]:=
Out[39]=
In[40]:=
Out[40]= In[41]:=
Out[41]=
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* mileshour *L 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
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, 7500, 7500, 10 000, 10 000, 10 000, 10 000, 10 000, 12 500, 12 500, 12 500< H* feet *L 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. In[43]:=
Θ@v_ H* meterssecond *LD = ArcSinB 2.54
Out[43]=
ArcSinB v
rateOfDescent v
F H* angle *L
F
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 = earthsMass * wt gravitationalConstant* H* Newtons *L HearthsRadius + altL2 3.98658 ´ 1014 wt
Out[44]=
I6.3781 ´ 106 + altM
2
We recalculate the drag equation, substituting in our derived value for ACD . In[45]:=
DerivedDrag@v_ H* meterssecond *L, press_ H* Pascals *L, alt_ H* meters *L, 1 temp_ H* Kelvin *LD = - AirDensity@press, alt, tempD * v2 * derivedACD 2 0.00143882 press J1 -
Out[45]=
0.0065 alt 5.25578 N temp
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 force of drag (where “horizontal” refers to the lateral axis of the aircraft, and is not relative to the horizon). In[46]:=
Out[46]=
Solve@ ForceThrust@pct, vD + W@alt, wtD * Sin@Θ@vDD + DerivedDrag@v, 101 325, alt * 0.3048, 288.15D 0, vD ::v ®
-JH0.5 + 0.866025 äL I2.25679 ´ 1039 pct - 1.48091 ´ 1034 alt pct - 4.81016 ´ 1027 alt2 pct - 3.81433 ´ 13
1020 alt3 pct + 5.02213 ´ 1035 wt - 3.45301 ´ 1030 alt wtM JI1. - 6.87559 ´ 10-6 altM
1.751927097624336
:v ® -JH0.5 - 0.866025 äL I2.25679 ´ 10
39
N
I1.0208 ´ 1034 + 3.20095 ´ 1027 alt + 2.50933 ´ 1020 alt2 M
13
34
pct - 1.48091 ´ 10
27
alt pct - 4.81016 ´ 10 13
3.81433 ´ 1020 alt3 pct + 5.02213 ´ 1035 wt - 3.45301 ´ 1030 alt wtM JI1. - 6.87559 ´ 10-6 altM
1.751927097624336
:v ® I2.25679 ´ 10
39
34
pct - 1.48091 ´ 10
alt pct 13
I1.0208 ´ 1034 + 3.20095 ´ 1027 alt + 2.50933 ´ 1020 alt2 M
13
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 + 13
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
13
H* meterssecond *L
Out[47]=
I2.25679 ´ 1039 pct - 1.48091 ´ 1034 alt pct - 4.81016 ´ 1027 alt2 pct 13
3.81433 ´ 1020 alt3 pct + 5.02213 ´ 1035 wt - 3.45301 ´ 1030 alt wtM JI1. - 6.87559 ´ 10
-6
1.751927097624336
altM
Chart 3. Descent Fuel Burn
I1.0208 ´ 10
34
N>,
2
3.81433 ´ 1020 alt3 pct + 5.02213 ´ 1035 wt - 3.45301 ´ 1030 alt wtM JI1. - 6.87559 ´ 10-6 altM
N 13
alt pct - 4.81016 ´ 10
1.751927097624336
alt pct -
I1.0208 ´ 1034 + 3.20095 ´ 1027 alt + 2.50933 ´ 1020 alt2 M 27
N>,
2
27
+ 3.20095 ´ 10
N
alt + 2.50933 ´ 1020 alt2 M
13
N
N>>
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]:= Out[48]=
descentFuelBurnRate = 6.1 H* US gallonshour *L 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@
[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, 15 000, 2500
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 2500 5000 7500 10 000 12 500 15 000
0 0 0 0 0 0 0
0 0 0 0 0 0 0
105 106 105 103 102 100 98
79 76 74 72 70 67 63
106 109 111 114 117 120 124
7.6 7.1 6.8 6.6 6.4 6.2 6.
20.2 9.3 6.6 8.1 10.5 9.8 0.6
6.1 6.1 6.1 6.1 6.1 6.1 6.1
645 539 435 332 230 126 20
500. 500. 500. 500. 500. 500. 500.