R/e_pilot_ALL.R
e_pilot_density_altitude.Rd
Approximation for Koch Chart density altitude for an increase in takeoff roll and decrease in climb rate based on pressure altitude and temperature.
e_pilot_density_altitude(
pres_alt = 0,
temp_C = 15,
dist_takeoff_sea_level = 1000,
climb_rate_sea_level = 500,
sw_propeller = c("fixed_pitch", "constant_speed")[2]
)
pressure altitude, inches of Mg
temperature, degrees celsius
POH distance for takeoff at standard temperature and pressure (STP)
POH distance for climb at standard temperature and pressure (STP)
Select propeller to be "fixed_pitch" or "constant_speed"
out named list including density_altitude
,
dist_takeoff_dens_alt
,
climb_rate_dens_alt
,
and all the input parameters.
dens_alt
= (145426 * (1 - (((288.16 - pres_alt
* 0.001981) /
288.16)^5.2563 / ((273.16 + temp_C
) / 288.16))^0.235))
"Axioms of Flight",
Equations and approximations from
James Embree, Flight Information Publications,1984. ISBN 0-9601062-7-8 St. Louis MO,
Approximation (good to 8000 feet density altitude):
Takeoff distance:
For fixed pitch prop, increase sea level standard day takeoff distance 15% for each 1000 foot increase in density altitude.
For constant speed prop, increase by 13%.
Climb rate
For fixed pitch prop, decrease sea level standard day climb rate 7.5% for each 1000 foot increase in density altitude.
For constant speed prop, decrease by 7%.
Example takeoff for fixed pitch prop:
dist_takeoff_dens_alt = dist_takeoff_sealevel * (1 + ((dens_alt / 1000) * 0.15))
(https://groups.google.com/g/rec.aviation.piloting/c/SDlMioBVqaA)
e_pilot_density_altitude(
pres_alt = 0
, temp_C = 15
, dist_takeoff_sea_level = 1000
, climb_rate_sea_level = 500
, sw_propeller = c("fixed_pitch", "constant_speed")[1]
)
#> density_altitude dist_takeoff_dens_alt climb_rate_dens_alt
#> "0" "1000" "500"
#> pres_alt temp_C dist_takeoff_sea_level
#> "0" "15" "1000"
#> climb_rate_sea_level sw_propeller
#> "500" "fixed_pitch"
e_pilot_density_altitude(
pres_alt = 7170
, temp_C = 30
, dist_takeoff_sea_level = 770
, climb_rate_sea_level = 900
, sw_propeller = c("fixed_pitch", "constant_speed")[1]
)
#> density_altitude dist_takeoff_dens_alt climb_rate_dens_alt
#> "10422" "1974" "197"
#> pres_alt temp_C dist_takeoff_sea_level
#> "7170" "30" "770"
#> climb_rate_sea_level sw_propeller
#> "900" "fixed_pitch"
e_pilot_density_altitude(
pres_alt = 7170
, temp_C = 30
, dist_takeoff_sea_level = 770
, climb_rate_sea_level = 900
, sw_propeller = c("fixed_pitch", "constant_speed")[2]
)
#> density_altitude dist_takeoff_dens_alt climb_rate_dens_alt
#> "10422" "1813" "243"
#> pres_alt temp_C dist_takeoff_sea_level
#> "7170" "30" "770"
#> climb_rate_sea_level sw_propeller
#> "900" "constant_speed"
## Tables
# 1972 Piper Arrow II
dist_takeoff_sea_level <- 770
climb_rate_sea_level <- 900
sw_propeller <- c("fixed_pitch", "constant_speed")[2]
list_out <- list()
i_list <- 0
for (i_pres_alt in seq(0, 10000, by = 2000)) {
## i_pres_alt = 0
for (i_temp_C in c(0, seq(15, 40, by = 5))) {
## i_temp_C = 0
i_list <- i_list + 1
list_out[[ i_list ]] <-
e_pilot_density_altitude(
pres_alt = i_pres_alt
, temp_C = i_temp_C
, dist_takeoff_sea_level = dist_takeoff_sea_level
, climb_rate_sea_level = climb_rate_sea_level
, sw_propeller = sw_propeller
)
}
}
dat_out <-
list_out %>%
dplyr::bind_rows()
dat_out %>% print(n = 10)
#> # A tibble: 42 × 8
#> density_altitude dist_takeof…¹ climb…² pres_…³ temp_C dist_…⁴ climb…⁵ sw_pr…⁶
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 -1838 586 1016 0 0 770 900 consta…
#> 2 0 770 900 0 15 770 900 consta…
#> 3 587 829 863 0 20 770 900 consta…
#> 4 1161 886 827 0 25 770 900 consta…
#> 5 1724 943 791 0 30 770 900 consta…
#> 6 2275 998 757 0 35 770 900 consta…
#> 7 2816 1052 723 0 40 770 900 consta…
#> 8 659 836 859 2000 0 770 900 consta…
#> 9 2466 1017 745 2000 15 770 900 consta…
#> 10 3043 1075 708 2000 20 770 900 consta…
#> # … with 32 more rows, and abbreviated variable names ¹dist_takeoff_dens_alt,
#> # ²climb_rate_dens_alt, ³pres_alt, ⁴dist_takeoff_sea_level,
#> # ⁵climb_rate_sea_level, ⁶sw_propeller
# Note: pres_alt = pressure altitude at 29.92 inches Mg
# density altitude
dat_density_altitude <-
dat_out %>%
dplyr::select(
density_altitude
, pres_alt
, temp_C
) %>%
tidyr::pivot_wider(
id_cols = temp_C
, names_from = pres_alt
, values_from = density_altitude
)
# takeoff roll
dat_takeoff_roll <-
dat_out %>%
dplyr::select(
dist_takeoff_dens_alt
, pres_alt
, temp_C
) %>%
tidyr::pivot_wider(
id_cols = temp_C
, names_from = pres_alt
, values_from = dist_takeoff_dens_alt
)
# climb rate
dat_climbrate <-
dat_out %>%
dplyr::select(
climb_rate_dens_alt
, pres_alt
, temp_C
) %>%
tidyr::pivot_wider(
id_cols = temp_C
, names_from = pres_alt
, values_from = climb_rate_dens_alt
)
dat_density_altitude
#> # A tibble: 7 × 7
#> temp_C `0` `2000` `4000` `6000` `8000` `10000`
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 0 -1838 659 3147 5628 8100 10564
#> 2 15 0 2466 4924 7373 9815 12248
#> 3 20 587 3043 5490 7930 10362 12785
#> 4 25 1161 3607 6046 8476 10897 13311
#> 5 30 1724 4161 6589 9010 11422 13826
#> 6 35 2275 4703 7122 9533 11936 14331
#> 7 40 2816 5234 7644 10046 12440 14826
dat_takeoff_roll
#> # A tibble: 7 × 7
#> temp_C `0` `2000` `4000` `6000` `8000` `10000`
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 0 586 836 1085 1333 1581 1827
#> 2 15 770 1017 1263 1508 1752 1996
#> 3 20 829 1075 1320 1564 1807 2050
#> 4 25 886 1131 1375 1618 1861 2102
#> 5 30 943 1186 1430 1672 1913 2154
#> 6 35 998 1241 1483 1724 1965 2205
#> 7 40 1052 1294 1535 1776 2015 2254
dat_climbrate
#> # A tibble: 7 × 7
#> temp_C `0` `2000` `4000` `6000` `8000` `10000`
#> <chr> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 0 1016 859 702 545 390 234
#> 2 15 900 745 590 435 282 128
#> 3 20 863 708 554 400 247 95
#> 4 25 827 673 519 366 213 61
#> 5 30 791 638 485 332 180 29
#> 6 35 757 604 451 299 148 -3
#> 7 40 723 570 418 267 116 -34