scavenging_by_co2
所属文件
LMDZ.MARS\libf\phymars\co2condens_mod.F
所属模块
co2condens_mod
例程定位
SUBROUTINE scavenging_by_co2 (行 1017–1159)
例程职责
CO2 凝结过程中清除(scavenging)尘埃和水冰的子例程。当 CO2 在大气中凝结时,以指数衰减方式捕获尘埃质量/数量和水冰;当 CO2 升华时,按比例释放被清除的粒子。清除的粒子最终沉积到地表。
仅在 scavco2cond=.true. 时由 co2condens 调用(行 358-361)。
被调用例程
| 被调用例程 | 所在模块/文件 | 调用位置 | 作用 |
|---|---|---|---|
| 无外部调用 | - | - | 纯计算逻辑 |
输入
| 输入 | 来源 | 类型/维度 | 单位 | 含义 |
|---|---|---|---|---|
ngrid |
co2condens | INT | - | 格点数 |
nlayer |
co2condens | INT | - | 层数 |
nq |
co2condens | INT | - | tracer 数量 |
ptimestep |
co2condens | REAL | s | 物理时间步长 |
pplev |
co2condens | REAL (ngrid,nlayer+1) | Pa | 层界面气压 |
pq |
co2condens | REAL (ngrid,nlayer,nq) | kg/kg | tracer 混合比 |
rdust |
co2condens | REAL (ngrid,nlayer) | m | 尘埃有效半径 |
pcondicea |
co2condens | REAL (ngrid,nlayer) | kg/m²/s | CO2 凝结速率(>0 凝结,<0 升华) |
pfallice |
co2condens | REAL (ngrid,nlayer+1) | kg/m²/s | CO2 冰从层 l 落下的通量 |
输出
| 输出 | 去向 | 类型/维度 | 单位 | 含义 |
|---|---|---|---|---|
pdq_scav |
co2condens | REAL (ngrid,nlayer,nq) | kg/kg/s | 清除产生的 tracer 倾向 |
pdqsc |
co2condens | REAL (ngrid,nq) | kg/m²/s | 地表 tracer 沉积通量 |
共享状态与副作用
- 读取
tracer_mod中的 tracer 索引和rho_dust、nuice_sed、nuice_ref、r3n_q。 - 读取
dust_param_mod::freedust和callkeys_mod::water、microphys。 - 无文件 I/O,无 module 变量写入。
核心逻辑
硬编码参数
scav_ratio_dust = 20:尘埃清除比——注释说"20 是在极夜去除尘埃而不干涸水循环的好折衷"。scav_ratio_wice = scav_ratio_dust = 20:水冰清除比,与尘埃相同。
算法
对每个格点,从顶层向下循环(l = nlayer → 1):
CO2 凝结时(pcondicea > 0,行 1074-1095):
- 尘埃(
freedust):pdq_scav(dust_mass) = -pq(dust_mass)/ptimestep * (1 - exp(-scav_ratio_dust*pcondicea*dt/massl))- 指数衰减模型:凝结的 CO2 冰按比例捕获周围尘埃
- 数量由质量推导:
pdq_scav(dust_number) = pdq_scav(dust_mass) * r3n_q / rdust
- CCN(
freedust AND microphys):同理用scav_ratio_wice清除 ccn_mass/number - 水冰(
water):pdq_scav(h2o_ice) = -pq(h2o_ice)/ptimestep * (1 - exp(-scav_ratio_wice*pcondicea*dt/massl))
CO2 升华时(pcondicea < 0,行 1097-1117):
- 按比例释放:
pdq_scav(dust_mass) = -pcondicea/massl * scav_dust_mass(l+1)/pfallice(l+1)- 从上层落下的清除通量中,按 CO2 升华/总通量的比例释放
- 尘埃/CCN/水冰分别计算
清打通量累积(行 1119-1137):
scav_dust_mass(l) = -pdq_scav(dust_mass)*massl + scav_dust_mass(l+1)- 逐层向下传递被清除的粒子质量/数量
地表沉积(行 1140-1157):
pdqsc(dust_mass) += scav_dust_mass(1)——到达地面的清除粒子沉积- 水冰:
pdqsc(h2o_ice) = scav_h2o_ice(1)
质量守恒
- 凝结时:大气中尘埃/水冰减少(
pdq_scav < 0),清打通量增加 - 升华时:清打通量中的粒子释放回大气(
pdq_scav > 0) - 地表:最终沉积量 = 从层 1 落下的清打通量
伪代码
scavenging_by_co2(ngrid, nlayer, nq, ptimestep, pplev, pq, rdust,
pcondicea, pfallice, pdq_scav, pdqsc):
scav_ratio = 20 // dust and water ice
for ig = 1 to ngrid:
scav_flux(l+1) = 0 // 初始化顶层以上
for l = nlayer to 1:
massl = (pplev(l) - pplev(l+1)) / g
if pcondicea > 0: // CO2 凝结,清除
pdq_scav(dust_mass) = -pq(dust_mass)/dt * (1-exp(-scav_ratio*pcondicea*dt/massl))
pdq_scav(dust_number) = pdq_scav(dust_mass) * r3n_q / rdust
// CCN 和 h2o_ice 同理
else if pcondicea < 0: // CO2 升华,释放
pdq_scav(dust_mass) = -pcondicea/massl * scav_dust_flux(l+1)/pfallice(l+1)
// CCN 和 h2o_ice 同理
// 累积清打通量
scav_flux(l) = -pdq_scav * massl + scav_flux(l+1)
// 地表沉积
pdqsc(dust_mass) += scav_dust_flux(1)
pdqsc(dust_number) += scav_dust_number(1)
pdqsc(h2o_ice) = scav_h2o_ice(1)
参与的主题流程
| 主题 | 参与方式 |
|---|---|
| CO2 循环 (CO2-cycle) | CO2 凝结时清除尘埃/水冰,升华时释放 |
| 尘埃循环 (dust-cycle) | 尘埃被 CO2 冰捕获并沉积到地表 |
写法特点
- 固定格式 Fortran 77(.F 后缀,续行用
&)。 - 指数衰减清除模型:
1-exp(-ratio*pcondicea*dt/massl)——凝结量越大、层质量越小,清除效率越高。 - 升华释放模型:按比例分配——
pcondicea/pfallice为升华占总通量的比例。 scav_ratio_dust = scav_ratio_wice = 20硬编码——注释提到这是经验值。- 尘埃数量由质量推导:
dust_number = dust_mass * r3n_q / rdust——假设 log-normal 分布。
复现要点
scav_ratio = 20是硬编码经验值——改变此值显著影响尘埃清除和水循环。- 指数衰减模型假设清除效率与凝结率成正比——物理上对应 CO2 冰晶包裹尘埃的效率。
- 升华释放假设清除的粒子随 CO2 冰一起下落——
pfallice为 CO2 冰总通量。 freedust和water开关控制是否清除尘埃和水冰——可独立关闭。
待确认
scav_ratio = 20的物理来源——注释仅说"good compromise",未引用文献。- 升华释放时
pfallice(l+1)可能为零——代码未含除零保护(行 1101/1104/1108/1111/1115)。 pdqsc(dust_mass)在行 1142 和 1148 累加了两部分(freedust 和 freedust+microphys 的 ccn)——是否会导致重复计数。
复现风险
scav_ratio = 20硬编码——不同值会显著改变尘埃分布和水循环。pfallice为零时的除法可能导致 NaN——需确认调用点是否有保护。- 清除效率的指数衰减模型是参数化假设——不同微物理假设可能导致不同结果。
相关页面
- co2condens — CO2 凝结主例程 - 调用本例程
- co2cloud_mod — CO2 云主调度 - 提供
pcondicea_co2microp和zdqssed_co2 - CO2 循环主题页
- 尘埃循环主题 - 尘埃清除背景