热力学
水汽和气块温度。库里大部分热力学计算在这一页。
函数可以从包根导入(import pymeteo as pm)。没特别说明时,默认单位是 °C、hPa、%、kg/kg。各函数下面写了用的公式。
saturation_vapor_pressure
水面饱和水汽压。不单独处理冰面。
temperature 默认 C,结果默认 hPa。0 °C 时是 6.1078 hPa。
import pymeteo as pm
pm.saturation_vapor_pressure(0.0)
pm.saturation_vapor_pressure(0.0, output_pressure_unit="Pa") # 610.78
condensation_temperature
抬升凝结高度上的温度,李社宏 1994 迭代。
参数是起始 pressure、temperature、dewpoint。网格插值若给出 Td > T 或负混合比,迭代可能停不下来,这时返回最后一次结果。
pm.condensation_temperature(850.0, 16.6, 0.6)
relative_humidity_from_dewpoint
温度和露点 → 相对湿度。输出默认 %;要 0–1 就设 output_humidity_unit="fraction"。
dewpoint_from_relative_humidity
反过来。相对湿度 ≤ 0 的位置是 nan。
pm.dewpoint_from_relative_humidity(18.0, 46.5) # 大约 6.30 °C
relative_humidity_from_mixing_ratio
温度、混合比、气压 → RH。饱和水汽压在 173.16–375.16 K 查表线性内插(和 NCL relhum 同一张表)。允许大于 100%;小于 0 截成 0.0001%。
mixing_ratio_unit 默认 kg/kg,也认 g/kg。
mixing_ratio_from_relative_humidity
气压、温度、RH → 混合比。Tetens,对应 NCL mixhum_ptrh。
pm.mixing_ratio_from_relative_humidity(1000.0, 18.0, 46.5) # 约 0.00602 kg/kg
specific_humidity_from_relative_humidity
参数一样,然后 q = w / (1 + w)。1000 hPa、18 °C、46.5% 时,output_humidity_unit="g/kg" 大约是 5.98 g/kg。
convert_humidity
混合比和比湿互转,同时可以换质量单位。
from_quantity / to_quantity 取 "mixing_ratio" 或 "specific_humidity"。比湿 ≥ 1 再转混合比会得到 nan。
visibility
用 RH 和温度估能见度。method="RUC" 是 60 km 乘指数衰减;"FSL" 用露点差。默认输出 km。
80%、18 °C、RUC 大约 11.8 km。
saturation_mixing_ratio
w_s = ε e_s(T) / (p − e_s),ε = 0.622。e_s 仍是李社宏水面公式。e_s ≥ p 时该点为 nan。
mixing_ratio_from_dewpoint
把温度换成露点,公式相同。对应 NCL mixhum_ptd 那条路。
vapor_pressure_from_mixing_ratio
e = w p / (ε + w)。混合比定义的代数逆。
vapor_pressure_from_relative_humidity
e = RH · e_s(T),e_s 还是李社宏公式。
potential_temperature
Poisson 位温:θ = T (1000 hPa / p)^0.286。输出默认是 K,不是 °C。
pm.potential_temperature(1000.0, 28.1) # 301.25 K
equivalent_potential_temperature
Bolton(1980)式 (43),里面含他式 (22) 的 LCL 温度。输出默认 K。
virtual_temperature
T_v = T (1 + r/ε) / (1 + r)。输出单位默认跟 temperature_unit 走。这是湿空气状态方程的精确形式,不用 NCL 文档里的 T (1 + 0.61 r) 近似。
wet_bulb_temperature
Stull(2011)海平面经验湿球。大约按 1013 hPa 想的。比较靠谱的范围大致是 −20–50 °C、相对湿度 5–99%;又干又冷时偏差会大。
pm.wet_bulb_temperature(20.0, 50.0) # 大约 13.7 °C
lifting_condensation_level
返回 (p_lcl, T_lcl)。T_L 用 Bolton(1980)式 (22),再 p_L = p (T_L / T)^{1/κ},κ = 0.286。
Wallace & Hobbs 那个 1000 hPa、15 °C、露点 4 °C 的例子,这里算出来大约 847 hPa。NCL lclvl 用 Stipanuk(1973),差几个 hPa 是正常的。
parcel_temperature_at_pressure
气块先干绝热抬到 LCL,再湿绝热抬到 pressure_target。若目标气压还高于 LCL(p_target ≥ p_LCL),全程干绝热。lifted_index_from_surface 用的就是它。