海拔与氧气含量
(→原理) |
(→参考) |
||
第109行: | 第109行: | ||
[[文件:Alt-2.jpg]] | [[文件:Alt-2.jpg]] | ||
+ | |||
+ | <br> | ||
+ | |||
+ | == Generate Table == | ||
+ | |||
+ | <source lang=cpp> | ||
+ | #include <stdio.h> | ||
+ | #include <math.h> | ||
+ | |||
+ | const double air_mol_m = 28.9644 / 1000; | ||
+ | const double air_density_std = 1.225; | ||
+ | const double pressure_std = 101325; | ||
+ | const double temperature_std = 288.15; | ||
+ | |||
+ | const double gravity = 9.80665; | ||
+ | const double temp_grad = -0.0065; | ||
+ | const double R_gas = 8.31432; | ||
+ | |||
+ | double calc_atmos(double h) | ||
+ | { | ||
+ | double c = - gravity * air_mol_m / R_gas / temp_grad; | ||
+ | double b = (temperature_std + temp_grad * h)/temperature_std; | ||
+ | return pressure_std * pow(b, c); | ||
+ | } | ||
+ | |||
+ | int main() | ||
+ | { | ||
+ | int h = 0; | ||
+ | for(; h < 10000; h += 1000) | ||
+ | printf("altitude %d:\t\t\t %f\n", h, calc_atmos(h)); | ||
+ | |||
+ | return 0; | ||
+ | } | ||
+ | </source> | ||
<br> | <br> |
2018年11月22日 (四) 12:26的版本
目录 |
1 原理
氧气含量是为单位体积大气内氧气的质量,即为大气中氧气的密度。
据气体热力学方程: PV = nRT (P 为压强,V 为体积,R 为常数,T 为热力学温度,n 为物质的摩尔量,n = m/M (m 为气体质量,M为气体的摩尔质量),则:密度 m/V = PO2(M/(RT))
即在温度一定的情形下,大气中氧气的密度是与大气中氧气的分压成正比的(线性)
据「道尔顿定律」:混合气体中各成份气体的分压,与其体积百分率成正比,各成份气体分压总合等于混合气体的总压。
然,不管海拔如何,氧气体积的比例在大气中是一定的(约为 21%,20.947%),则氧气分压总是大气压的 0.21 倍。
因此大气中氧气的密度与所在海拔的大气压成正比:m/V = 0.20947P(M/(RT))
M = 32 g/mol R = 8.31431 J/K/mol T = (273.15 + t) K m/V = 0.8062 P/(273.15 + t),注意出来的密度单位为 g/m3
而气压与海拔的关系,实际应用中,多采用编制好的标准大气表
注:气温 0 度,标准大气压下,空气平均分子量 29,摩尔体积 22.4 L/mol
2 标准大气表
Standard Atmosphere Table
航空领域对气压与海拔的关系,最为关心。以国际民航组织 (ICAO) 编制的 ICAO Standard Atmosphere Table 使用最为广泛
其他标准表,如 International Standard Atmosphere (ISA) , U.S. Standard Atmosphere 大同小异
3 计算
则在标准大气下氧气含量为:
octave:29> 0.8062*101325/288.15 0000 = 283.49 octave:30> 0.8062*89874.57/281.65 1000 = 257.26 octave:31> 0.8062*79495.215511/275.15 2000 = 232.92 octave:32> 0.8062*70108.54467/268.65 3000 = 210.39 octave:33> 0.8062*61640.2353/262.15 4000 = 189.56 octave:34> 0.8062*54019.912104/255.65 5000 = 170.35 octave:35> 0.8062*47181.027568/249.15 6000 = 152.67 octave:36> 0.8062*41060.743191/242.65 7000 = 136.42 octave:37> 0.8062*35599.811423/236.15 8000 = 121.54 octave:38> 0.8062*30742.45842/229.65 9000 = 107.92
可近似为:
1000 时氧含量为平原地区的 91%
2000 时氧含量为平原地区的 82%
3000 时氧含量为平原地区的 74%
4000 时氧含量为平原地区的 67%
5000 时氧含量为平原地区的 60%
6000 时氧含量为平原地区的 54%
7000 时氧含量为平原地区的 48%
8000 时氧含量为平原地区的 42%
9000 时氧含量为平原地区的 38%
至于下面这个图,大气压的变化查表查得不错,可惜计算氧气含量时把 T = 273.15 + t 直接近似为 T = 273.15,忽略了温度对氧气含量的影响,造成了较大的误差,如 5000 时氧气含量为平原地区的 53%
4 Generate Table
#include <stdio.h> #include <math.h> const double air_mol_m = 28.9644 / 1000; const double air_density_std = 1.225; const double pressure_std = 101325; const double temperature_std = 288.15; const double gravity = 9.80665; const double temp_grad = -0.0065; const double R_gas = 8.31432; double calc_atmos(double h) { double c = - gravity * air_mol_m / R_gas / temp_grad; double b = (temperature_std + temp_grad * h)/temperature_std; return pressure_std * pow(b, c); } int main() { int h = 0; for(; h < 10000; h += 1000) printf("altitude %d:\t\t\t %f\n", h, calc_atmos(h)); return 0; }
5 参考
- https://en.wikipedia.org/wiki/International_Standard_Atmosphere
- https://www.engineeringtoolbox.com/international-standard-atmosphere-d_985.html
- http://home.anadolu.edu.tr/~mcavcar/common/ISAweb.pdf
- US Standard Atmosphere
- ICAO atmosphere calculator
- Online 1976 Standard Atmosphere calculator with table en graph generator