用方法一就行
[Python] 纯文本查看 复制代码 import math
def compute_m_density(temperature, pressure, humidity):
"""
计算湿空气密度(基于温度、气压和相对湿度)
参数:
temperature: 温度 (°C)
pressure: 气压 (hPa)
humidity: 相对湿度 (%)
返回:
dict: 包含总密度、干空气密度和水汽密度
"""
T = temperature
P = pressure
RH = humidity
# 计算饱和水汽压 (hPa)
Psat = 6.0178 * (10 ** ((7.5 * (T + 273.15) - 2048.625) / (T + 273.15 - 35.85)))
# 计算实际水汽压 (hPa)
Pv = RH / 100 * Psat
# 计算干空气密度 (kg/m³)
Pd = (P - Pv) / (287.058 * (T + 273.15))
# 计算水汽密度 (kg/m³)
Pv_density = Pv / (461.495 * (T + 273.15))
# 总密度
density = round((Pd + Pv_density) * 100, 4)
mda = round(Pd * 100, 4)
mwv = round(Pv_density * 100, 4)
return {
'density': density, # 湿空气密度
'dry_air': mda, # 干空气密度
'water_vapor': mwv # 水汽密度
}
def compute_dp_density(dewpoint, temperature, pressure):
"""
计算湿空气密度(基于露点温度)
参数:
dewpoint: 露点温度 (°C)
temperature: 温度 (°C)
pressure: 气压 (hPa)
返回:
dict: 包含总密度、干空气密度和水汽密度
"""
# Goff-Gratch方程系数
eso = 6.1078
c0 = 0.99999683
c1 = -0.0090826951
c2 = 0.00078736169
c3 = -0.00000061117958
c4 = 0.0000000043884187
c5 = -0.000000000029883885
c6 = 0.000000000000021874425
c7 = -0.000000000000000017892321
c8 = 0.000000000000000000011112018
c9 = -0.000000000000000000000030994571
t = dewpoint
# 计算饱和水汽压 (hPa)
Es = eso * (c0 + t * (c1 + t * (c2 + t * (c3 + t * (c4 + t * (c5 + t * (c6 + t * (c7 + t * (c8 + t * c9))))))))) ** -8
# 温度转开尔文
Tk = temperature + 273.15
# 水汽压 (Pa)
Pv = Es * 100
# 干空气压力 (Pa)
Pd = (pressure - Es) * 100
# 水汽密度 (kg/m³)
dv = Pv / (461.4964 * Tk)
# 干空气密度 (kg/m³)
dd = Pd / (287.0531 * Tk)
# 总密度
d = dd + dv
return {
'density': round(d, 4),
'dry_air': round(dd, 4),
'water_vapor': round(dv, 4)
}
# 使用示例
if __name__ == "__main__":
# 方法1:使用温度、气压和相对湿度
result1 = compute_m_density(
temperature=25, # °C
pressure=31013.3, # hPa (注意:示例中的101000应该是1010 hPa)
humidity=25 # %
)
print("方法1 - 基于相对湿度:")
print(f"湿空气密度: {result1['density']} kg/m³")
print(f"干空气密度: {result1['dry_air']} kg/m³")
print(f"水汽密度: {result1['water_vapor']} kg/m³")
print("\n" + "="*50 + "\n")
# 方法2:使用露点温度
result2 = compute_dp_density(
dewpoint=10, # °C
temperature=25, # °C
pressure=1013.25 # hPa
)
print("方法2 - 基于露点温度:")
print(f"湿空气密度: {result2['density']} kg/m³")
print(f"干空气密度: {result2['dry_air']} kg/m³")
print(f"水汽密度: {result2['water_vapor']} kg/m³") |