CO2 循环配置
本页汇总驱动 LMDZ.MARS CO2 循环(CO2 凝结/升华、CO2 云微物理、地表 CO2 冰、永久 CO2 冰盖、CO2 冰辐射活性、CO2 凝结清除)的配置项:callphys.def.* 中的物理开关、traceur.def.* 中的 CO2 tracer 集合、以及 XIOS 中的 CO2 输出字段。水循环配置见 water-cycle-config;通用配置体系见 config-system。
源码依据:libf/phymars/conf_phys.F 中的 getin_p 读取与 abort_physic 校验;deftank/callphys.def.* 中的样例值;deftank/traceur.def.* 中的 tracer 名;deftank/xios/field_def_physics.xml 与 file_def_physics.xml 中的字段定义和输出引用。
路径
LMDZ.MARS\deftank\callphys.def.*
LMDZ.MARS\deftank\traceur.def.*
LMDZ.MARS\deftank\xios\field_def_physics.xml
LMDZ.MARS\deftank\xios\file_def_physics.xml
类型
配置(物理开关 + tracer 清单 + 输出字段定义)
作用
控制是否计算 CO2 凝结/升华、用哪种 CO2 云方案(瞬时凝结 vs 完整微物理)、CO2 冰是否辐射活跃、水冰/流星尘是否可作 CO2 云凝结核、永久 CO2 冰盖反照率,以及 CO2 相关 tracer 的输运和诊断输出。
1. callphys.def CO2 开关
下表「源码默认」来自 libf/phymars/conf_phys.F 中各 getin_p 前的赋值;「样例值」分别来自 deftank/callphys.def.GCM6(标准 v6 配置)和 deftank/callphys.def.co2clouds.GCM5(CO2 云微物理配置)。源码默认普遍是关闭/保守值,真实模拟靠 callphys.def 打开。
核心开关
| 字段 | 源码默认 | GCM6 | co2clouds.GCM5 | 含义 | 读取行(conf_phys.F) |
|---|---|---|---|---|---|
callcond |
.true. |
.true. |
.true. |
CO2 凝结总开关。调用 co2condens 例程处理地表/大气 CO2 凝结升华 |
348 |
co2clouds |
.false. |
(未设,默认 .false.) |
.true. |
CO2 云微物理方案(成核/凝并/沉降),由 co2cloud_mod 调度。隐含微物理,无需额外开关 |
749 |
activeco2ice |
.false. |
(未设,默认 .false.) |
(未设) | CO2 冰作为辐射活性气溶胶参与辐射传输。需 co2clouds |
732 |
co2useh2o |
.false. |
(未设) | (未设) | 水冰粒子可作 CO2 云凝结核(CCN) | 754 |
scavco2cond |
.false. |
.true. |
(未设) | 瞬时 CO2 凝结洗脱尘埃/水冰。与 co2clouds 互斥 |
933 |
CO2 云微物理子选项
| 字段 | 源码默认 | co2clouds.GCM5 | 含义 | 读取行 |
|---|---|---|---|---|
CLFvaryingCO2 |
.false. |
(未设) | CO2 云次网格温度分布(类似水云 CLFvarying) |
764 |
spantCO2 |
0 |
(未设) | 次网格温度分布振幅(K),仅 CLFvaryingCO2=.true. 时有效 |
769 |
satindexco2 |
.true. |
(未设) | 用饱和指数过滤次网格温度分布 | 774 |
meteo_flux |
.false. |
(未设) | 流星尘粒子供应作 CO2 冰 CCN(John Plane 值) | 759 |
nuiceco2_sed |
0.45 |
0.1 |
CO2 冰沉降对数正态分布有效方差 | 827 |
nuiceco2_ref |
0.45 |
(未设) | CO2 云参考有效方差 | 832 |
永久 CO2 冰盖参数
| 字段 | 源码默认 | 含义 | 读取行 |
|---|---|---|---|
albedo_perennialco2_north |
0.6 |
北半球永久 CO2 冰反照率 | 444 |
albedo_perennialco2_south |
0.85 |
南半球永久 CO2 冰反照率 | 451 |
已废弃字段
| 字段 | 状态 | 说明 |
|---|---|---|
microphysco2 |
已移除(changelog 2017-11-02) | 原用于区分 CO2 云简化/微物理方案;co2clouds=.true. 后自动启用微物理,无需此开关。callphys.def.co2clouds.GCM5 中仍有此字段但源码不再读取 |
依赖与互斥校验(conf_phys.F 中 abort_physic)
复现时这些组合非法,会让模式中止:
| 约束 | 行 | 说明 |
|---|---|---|
activeco2ice 需 co2clouds |
813–817 | CO2 冰辐射活性依赖 CO2 云微物理方案 |
co2clouds 与 scavco2cond 互斥 |
943–951 | co2clouds 已含微物理洗脱,二者不能同开 |
scavco2cond 需 dustbin>0 |
937–941 | 瞬时清除需要尘埃 bin |
另有警告(不中止):co2clouds 与 scavco2cond 同开时打印 WARNING 并 abort。
2. traceur.def CO2 tracer
traceur.def.* 首行是 tracer 总数,其后每行一个 tracer 名。CO2 循环相关 tracer:
| tracer | 含义 | 何时需要 |
|---|---|---|
co2 |
CO2 气体 | 始终存在(大气主成分) |
co2_ice |
CO2 冰 | co2clouds=.true. |
ccnco2_number |
CO2 云凝结核数密度 | co2clouds=.true. |
ccnco2_mass |
CO2 云凝结核质量 | co2clouds=.true. |
样例对比
traceur.def.co2(最小 CO2-only 集合,1 个 tracer):
1
co2
traceur.def.co2clouds.GCM5(CO2 云微物理 + 水循环 + 尘埃,10 个 tracer):
10
co2
co2_ice
dust_number
dust_mass
ccnco2_number
ccnco2_mass
h2o_ice
h2o_vap
ccn_mass
ccn_number
traceur.def.GCM6(标准 v6,11 个,不含 co2_ice/ccnco2_*):
11
co2
dust_number
dust_mass
stormdust_number
stormdust_mass
topdust_number
topdust_mass
h2o_ice
h2o_vap
ccn_number
ccn_mass
traceur.def.MCD6(完整化学+离子,43 个,含 co2 与离子 co2plus/hco2plus):
43
co2
co
o
...
co2plus
...
hco2plus
...
elec
复现风险:tracer 名的拼写与顺序必须与 initracer.F90 的字符串匹配逻辑一致,否则对应 igcm_* 为 0,相关物理被静默跳过。tracer 总数(首行)必须与实际行数一致。GCM6 标准配置不含 co2_ice/ccnco2_*,因此即使 callcond=.true.,也无法运行 co2clouds 微物理(缺少 tracer)。
3. XIOS CO2 输出字段
字段定义在 field_def_physics.xml,是否实际输出由 file_def_physics.xml 的 <field field_ref=.../> 决定。
大气场(field_def_physics.xml)
| 字段 id | 含义 | 定义行 |
|---|---|---|
co2 |
CO2 质量混合比 (kg/kg) | 857 |
vmr_co2 |
CO2 体积混合比 (mol/mol) | 860 |
num_co2 |
CO2 数密度 (cm⁻³) | 863 |
co2_layer1 |
第一层 CO2 混合比 (kg/kg) | 535 |
c_co2 |
CO2 柱积分量 | 650 |
mass_co2 |
全球 CO2 质量 (g) | 35 |
co2conservation |
物理过程 CO2 质量守恒 (kg) | 30 |
co2condens_pdtc |
CO2 凝结温度倾向 (K/s) | 1217 |
地表场
| 字段 id | 含义 | 定义行 |
|---|---|---|
co2ice |
地表 CO2 冰厚度 | 595 |
co2ice_slope01~_slope07 |
各坡度分量 CO2 冰厚度 | 598–616 |
perennial_co2ice |
永久 CO2 冰厚度 | 620 |
perennial_co2ice_slope01~_slope07 |
各坡度分量永久 CO2 冰厚度 | 623–641 |
co2condens_zfallice |
CO2 凝结地表倾向 | 645 |
file_def_physics.xml 实际启用
GCM6 样例中 file_def_physics.xml 引用了:co2ice(行 29、124、207)、co2ice_slope01~_slope07(行 208–214)、perennial_co2ice(行 127)、perennial_co2ice_slope01~_slope07(行 229–235)、co2_layer1(行 97、144)。
注意:co2、vmr_co2、co2condens_pdtc 等大气场虽在 field_def_physics.xml 中定义,但在 GCM6 的 file_def_physics.xml 中未被引用,不会自动输出。如需输出,需在 file_def_physics.xml 中添加 <field field_ref="co2" /> 等条目。
被读取的位置
| 读取例程 | 文件 | 说明 |
|---|---|---|
conf_phys(getin_p) |
libf/phymars/conf_phys.F |
所有 callphys.def CO2 开关;存入 callkeys_mod 模块变量 |
initracer |
libf/phymars/initracer.F90 |
解析 traceur.def tracer 名→igcm_* 索引 |
co2condens |
libf/phymars/co2condens_mod.F |
读取 callcond、scavco2cond、CO2 tracer 索引 |
co2cloud |
libf/phymars/co2cloud_mod.F |
读取 co2clouds、co2useh2o、CLFvaryingCO2、spantCO2、satindexco2、meteo_flux、CO2 tracer 索引 |
physiq_mod |
libf/phymars/physiq_mod.F |
根据 callcond/co2clouds/activeco2ice 决定调用路径 |
| XIOS 库 | field_def_physics.xml/file_def_physics.xml |
由 write_output 调用触发 |
影响的计算流程
| 主题 | 影响 |
|---|---|
| CO2 凝结/升华 | callcond→co2condens 主调度,处理地表/大气 CO2 相变、Van Leer 垂直输送、sigma 层校正,见 co2condens |
| CO2 云微物理 | co2clouds→co2cloud_mod 调度完整微物理(成核/凝并/沉降),见 co2cloud_mod |
| CO2 成核 | co2clouds 启用 nucleaco2 CO2 冰成核率计算,见 nucleaco2 |
| CO2 质量传输 | co2clouds 启用 massflowrateco2 CO2 冰粒增长,见 massflowrateco2 |
| CO2 冰辐射 | activeco2ice 决定 CO2 冰是否进辐射传输(需 co2clouds) |
| CO2 凝结清除 | scavco2cond 或 co2clouds 内置洗脱决定尘埃/水冰被 CO2 降雪清除,见 co2condens-scavenging |
| physiq 调用链 | callcond/co2clouds/activeco2ice/scavco2cond 决定 tendency 注入,见 physiq-co2-cycle-callpoints |
| CO2 饱和 | CO2 凝结温度/饱和蒸气压公式,见 co2-saturation-helpers |
| 地表 CO2 冰 | albedo_perennialco2_* 影响永久 CO2 冰盖反照率 |
| 尘埃循环 | scavco2cond/co2clouds 洗脱影响尘埃负荷 |
复现要求
- 标准 v6 配置(GCM6)使用
callcond=.true.+scavco2cond=.true.(瞬时凝结清除),不开co2clouds。 - CO2 云微物理配置(co2clouds.GCM5)使用
co2clouds=.true.,此时scavco2cond必须关闭(互斥)。 activeco2ice需co2clouds,否则 abort。- traceur.def 必须含
co2;若开co2clouds还需co2_ice、ccnco2_number、ccnco2_mass;缺 tracer 会导致相关物理静默跳过。 microphysco2已废弃(2017 年移除),源码不再读取;co2clouds=.true.即隐含微物理。- 遵守依赖校验:
activeco2ice需co2clouds;co2clouds与scavco2cond互斥;scavco2cond需dustbin>0。 - 复现历史结果要对齐
nuiceco2_sed、albedo_perennialco2_*等数值默认。 callcond源码默认.true.,即不开也会做基本 CO2 凝结;关闭需显式callcond=.false.。
已核验边界
callcond与co2clouds可同时为.true.:conf_phys.F只禁止co2clouds.and.scavco2cond,不禁止callcond.and.co2clouds;physiq_mod.F中co2clouds控制第 9a bis 段co2cloud,callcond控制第 11 段co2condens,二者顺序和耦合变量见 physiq-co2-cycle-callpoints。meteo_flux在conf_phys.F:758-760的源码默认是.false.;若配置未写该键,就不会启用流星尘 CCN 子族。traceur.def.MCD5/MCD6中的离子 tracer(co2plus、hco2plus等)归热层化学/电离层模块使用;本页只在 CO2 气体、CO2 冰和 CO2 云 CCN 层面说明它们与 CO2 循环配置的边界。
复现风险
- GCM6 标准配置不含
co2_ice/ccnco2_*tracer,无法运行co2clouds微物理;若需 CO2 云微物理必须换用含这些 tracer 的traceur.def(如traceur.def.co2clouds.GCM5)。 callcond源码默认.true.,不写进 callphys.def 也会做 CO2 凝结;但co2clouds默认.false.,不显式打开就不会有云微物理。scavco2cond与co2clouds互斥是硬约束(abort),配置时必须二选一。microphysco2出现在旧配置文件(如callphys.def.co2clouds.GCM5)中但源码已不读取,存在误导风险。