density_co2_ice.F90
路径
LMDZ.MARS\libf\phymars\density_co2_ice.F90
所属目录/模块
libf/phymars
文件定位
CO2 冰密度的温度依赖计算函数。根据 Mangan et al. (2017) 的经验公式,给定温度返回 CO2 冰粒子密度(kg/m³)。被 CO2 云微物理(improvedco2clouds)、气溶胶光学厚度(aeropacity)和粒子半径更新(updaterad)调用。
定义的符号
| 符号 |
类型 |
行号 |
作用 |
density_co2_ice_mod |
module |
13 |
封装 density_co2_ice 的模块 |
density_co2_ice |
subroutine |
18 |
给定温度计算 CO2 冰密度 |
依赖的模块
| use 模块 |
only 列表 |
用途 |
待确认 |
| 无 |
- |
- |
- |
调用的关键例程
| 被调用例程 |
所在模块/文件 |
调用位置 |
作用 |
| 无外部调用 |
- |
- |
纯函数式计算,无子例程调用 |
输入
| 输入 |
来源 |
类型/维度 |
单位 |
含义 |
temperature |
调用点 |
DOUBLE PRECISION, scalar |
K |
温度 |
输出
| 输出 |
去向 |
类型/维度 |
单位 |
含义 |
density |
调用点 |
DOUBLE PRECISION, scalar |
kg/m³ |
CO2 冰密度 |
共享状态与副作用
- 无 module 变量读写
- 无文件 I/O
- 纯函数式计算,无副作用
核心逻辑
按 Mangan et al. (2017) 经验公式计算 CO2 冰密度:
density = 1000 × (1.72391 − 2.53×10⁻⁴ × T − 2.87×10⁻⁶ × T²)
- 公式中
1.72391 − 2.53e-4*T − 2.87e-6*T² 给出 g/cm³ 单位的密度
- 乘以 1000 转换为 kg/m³
- 系数为多项式拟合,适用范围:P ≈ 1e-2 mbar,80 K ≤ T ≤ 195 K
伪代码
density_co2_ice(temperature, density):
density = 1000. * (1.72391 - 2.53e-4 * temperature - 2.87e-6 * temperature * temperature)
参与的主题流程
| 主题 |
参与方式 |
| CO2 循环 (CO2-cycle) |
为 CO2 冰粒子密度提供温度依赖计算 |
| 辐射 (radiation) |
通过 aeropacity 计算 CO2 冰光学厚度时使用 |
写法特点
- 自由格式 Fortran 90(.F90 后缀)。
- 无任何
use、SAVE、THREADPRIVATE 或编译宏。
- 单行公式实现,无循环、无分支。
- 输入输出均为
double precision,但公式系数为单精度字面量。
复现要点
- 公式系数(1.72391、2.53e-4、2.87e-6)来自 Mangan et al. (2017),修改需核对原文。
- 适用温度范围 80-195 K;超出此范围的外推行为未验证。
- 输出单位为 kg/m³(×1000 转换),非 cgs。
待确认
- 公式在 T < 80 K 或 T > 195 K 时的外推行为是否合理(Mangan et al. 2017 标注适用范围 80-195 K)。
co2cloud_mod.F90 中 use 了 density_co2_ice 但未调用——是否为接口遗留或 improvedco2clouds 内部需要(Fortran use 不自动传递)。
相关页面