LMDZ COMMON / MARS 5.3 到 6.3 版本差异

全量入口: 5.3→6.3 全量变更矩阵逐项登记 419 个变化路径,并链接到 21 个逻辑主题详情页;来源与方法记录哈希、官方 Changelog 边界与证据等级。

页面定位与比较边界

本页比较两组由使用者指定的源码快照:一组作为 5.3 基线,另一组作为 6.3 当前版。每组都同时包含 LMDZ.COMMONLMDZ.MARS。这里的“5.3”“6.3”是这两组目录的使用者版本标识;快照内没有可独立核验的统一 release tag,因此本页不把比较结果外推到所有同名发行包。

比较在 2026-07-12 完成,分两层:

  1. 对源码树建立“相对路径 + SHA-256”清单,统计新增、删除、同路径修改和字节不变文件。
  2. 对关键差异继续核验模块、调用点、配置读取和输出路径;只有经过源码调用链核验的内容才写成行为变化。

清单排除了任一路径段为 .gitbuildbinobj__pycache__ 的文件,也排除了 .DS_Store 以及常见编译产物(.o.obj.mod.a.so.dll.exe.pyc.pdb)。重命名在机械统计中表现为“一项删除 + 一项新增”,后文会单独指出已核验的重命名或迁移。

一页结论

从 5.3 到 6.3,COMMON 仍以动力核心和公共运行时为主,文件总量变化不大;主要变化集中在动力—物理接口、并行边界、tracer 文件基础设施、FCM 构建和机器配置。MARS 的变化更广:物理配置从 include 状态转向模块化,tracer 初始化改为物理侧解析,write_output 统一桥接 diagfi 与 XIOS,1D 驱动重构,水云、尘埃、热层和质量守恒路径均有实质更新。

因此,5.3 运行目录不能只替换可执行文件后直接用于 6.3。至少要成组迁移构建选项、callphys.def、tracer 定义、XIOS XML、初始/重启文件与诊断变量名,并重新做一次短积分守恒检查。

量化总览

源码树 5.3 文件数 6.3 文件数 6.3 新增 6.3 删除 同路径修改 字节不变
COMMON 472 483 33 22 57 393
MARS 324 362 93 55 159 110

COMMON 的新增文件主要落在 arch(23)、ioipsl(6)和 libf(4);同路径修改主要落在 libf(35)。MARS 的新增文件主要落在 libf(59)与 deftank(22),同路径修改则以 libf(125)为主。文件计数说明 MARS 的升级不是局部补丁,但不能单独证明物理行为变化;行为结论以以下源码证据为准。

COMMON:公共动力与构建层

1. tracer 基础设施进入公共层

6.3 COMMON 新增:

MARS 6.3 的 libf/phymars/parse_tracer_file.F90 直接使用 strings_modreadTracFiles_mod::{tracers,readTracersFiles},并在 master rank 解析后广播。因此这不只是文件存在性变化,而是 MARS 新式 tracer.def 解析链的 COMMON 依赖。

边界需要说清:5.3 COMMON 的 dyn3d_common/infotrac.F90 已能识别旧式和 #ModernTrac-v1 格式。本次升级的关键不是“6.3 才首次支持现代 tracer”,而是 MARS 物理侧开始通过新的公共解析设施自行取得 tracer 信息,减少动力侧向物理侧传递 tracer 元数据的耦合。

2. 动力—物理接口与 1D 并行特例

libf/dynphy_lonlat/inigeomphy_mod.F90 调用 mod_interface_dyn_phys::init_interface_dyn_phys。6.3 的接口对 klon_mpi == 1 增加物理列索引重置,这是源码注释明确标出的 1D parallel 特例。

同一接口链上的 calfis.Fcalfis_p.Finigeomphy_mod.F90 都发生修改:

现有 COMMON 依赖入口和接口图见 COMMON dependency boundary

3. 并行运行时修复

6.3 修改了 libf/dyn3dpar/parallel_lmdz.F90 以及 libf/phy_common/mod_phys_lmdz_mpi.F90mod_phys_lmdz_omp.F90mod_phys_lmdz_para.F90mod_phys_lmdz_transfert_para.F90

其中 parallel_lmdz.F90 新增 omp_chunk 收缩循环。源码注释说明:某些 llm/omp_size 组合会让空闲线程未发出 send/recv 就进入 MPI_Waitall,从而触发 request error;6.3 通过缩小 chunk 避免这种组合,并在 chunk 过小时告警。升级后的 MPI × OpenMP 结果应至少覆盖一种非整除垂直层分配,而不能只测纯 MPI。

4. 构建系统与机器配置

COMMON 根目录的旧 makegcm 被删除;build_gcmmakelmdz_fcmbld.cfg 有修改,并新增多组 ADASTRA、BAO_YGG、MESOIPSL、MESU 的 arch.path/.env/.fcm 配置。

makelmdz_fcm 的 6.3 行为包括:

这意味着旧 makegcm 命令行和新 FCM 构建不能视为同一接口的简单别名。迁移时要保存完整编译命令、-io 模式、MPI/OpenMP 组合和所用 arch 三件套。

5. 目录职责调整

5.3 COMMON 的 libf/evolution/ 在 6.3 快照中整体删除,其中包括 pem.F90compute_tendencies_mod*.F90 等 15 个文件。另一个已核验的迁移是旧 COMMON libf/dyn3d/nogcm.F90leapfrog_nogcm.F 被删除,而 MARS 6.3 在 libf/dynphy_lonlat/phymars/ 下提供同名驱动;新 nogcm.F90 仍调用 COMMON infotrac_init,随后调用 MARS iniphysiq。这是无完整 GCM 驱动的职责下沉到行星包,不应把它误写成算法凭空新增。

MARS:物理、配置与输出层

1. 配置状态模块化

5.3 的 libf/phymars/callkeys.h 被 6.3 的 callkeys_mod.F90 取代。配置主链为:

iniphysiq
  -> conf_phys(klon_omp, nlayer, nqtot)
       -> getin_p 读取 callphys.def
       -> callkeys_mod 保存跨物理过程开关
  -> physiq 按开关调度各过程

conf_phys.Fcallkeys_mod 导入状态并读取配置;physiq_mod.F 再导入这些开关。已核验的新路径包括:

1D 也调用同一个 conf_phys(1,llm,nq),所以 3D 与 1D 的配置语义更一致,但旧 1D 配置文件中的已弃用键也会更直接地触发新校验。配置模块详见 callkeys_modconfig system

2. tracer 初始化边界重构

5.3 的 initracer.F 被模块化的 6.3 initracer.F90 取代,并新增:

tracer_mod.F90 同时导入两个 parser。新式 parser 调 COMMON 的 readTracFiles_mod,两个 parser 都由 master rank 读取后广播。与 5.3 相比,6.3 的物理初始化不再依赖动力把完整 tracer 元数据作为实参传入,而是优先在物理侧解析配置文件。

迁移规则:

  1. 不要只复制 tracer 名称;要保留父子/输运关系和目标 section。
  2. 若同时存在 traceur.deftracer.def,必须记录实际被选中的文件与 section;经纬网默认 section 是 lmdz,非结构网格默认是 dynamico
  3. 旧字段 nqperes/nqfils/qperemin 在 6.3 后期命名为 nqparents/nqchildren/qparentmin;自有补丁和外部接口需要同步。
  4. 启用 call_mass_fixer_dyn 时,应保存第一步之前的 tracer 柱质量;初始 mass_predyn <= 0 时首个物理步会跳过修正。

详见 tracer_mod

3. 输出由一个 API 桥接 diagfi 与 XIOS

6.3 新增 write_output_modphysiq_mod.F 导入 write_output,各类重载执行:

write_output(field)
  |-- output_diagfi = true  -> writediagfi
  `-- CPP_XIOS             -> send_xios_field

与此对应,旧 writeg1d.Feofdump_mod.F90calleofdump 被删除,output_diagfi 成为是否生成 diagfi.nc 的显式开关。XIOS XML 从 deftank 根目录的旧文件布局迁到:

deftank/xios/
  context_pcm_physics.xml
  field_def_physics.xml
  file_def_physics.xml
  iodef.xml

风险点:当前 write_output_mod.F90xios_is_active_field 查询注释掉并把 is_active 强制设为真。功能上仍由统一 API 发送字段,但大量未被目标文件引用的调用可能带来额外组合、通信或性能开销。XIOS 文件布局和输出选择见 xios config

4. 1D 驱动成为独立模块群

6.3 在 libf/phymars/dyn1d/ 下形成完整支撑模块群,并新增 startfiles/start1D.txt。旧 dyn1d/testphys1d.Fprofile.F 被模块化/重写后的 testphys1d.F90init_testphys1d_mod.F90profile_temp_mod.F90 等替代。

已核验的主链为:

init_testphys1d
  -> conf_phys(1, llm, nq)
  -> initracer
  -> read_profile_mod 读取 profile_<tracer>
testphys1d 时间循环
  -> physiq
  -> writerestart1D 生成 restart1D.txt

因此 5.3 的 1D 输入不能只按文件名复制。profile 已改名为 profile_temp,水汽/水冰可使用独立 profile 与松弛时间,start1D.txt 位置也移到 startfiles/。详见 testphys1d configdyn1d 目录页

5. 物理过程的代表性变化

主题 5.3 -> 6.3 的已核验变化 主要入口
水云 watercloud_mod 在 improved/simple 两方案间分派;improved 方案引入自适应微时间步并修正 tendency 注入;水冰 profile、地表/地下冰与热惯量反馈继续扩展 water cyclewatercloud_mod
CO2 云 co2cloud.F90 模块化为 co2cloud_mod.F90,由 physiq 调用;地表 CO2 冰最大反照率改为配置项 CO2 cycleco2cloud_mod
尘埃 新增凝并 dust_coagulation_mod.F90;抬升和尘卷风例程模块化;加入可配置抬升尘埃有效半径 dust cycledust coagulation
边界层 新增 ATKE 模块群与 vdif_cd_mod.F90pbl_parameters_mod.F90;配置校验禁止 ATKE 与 Yamada4 同时启用 conf_phys.Fphysiq_mod.F
热层/分子扩散 physiq -> thermosphere_mod::thermosphere -> moldiff_MPF;6.3 修正前序 tendency 传递,并可启用分子扩散质量修正 thermosphere_mod.Fmoldiff_MPF.F90
光化学 calchim_mod -> photochemistry_mod::photochemistry,旧非模块化文件被替换 calchim_mod.F90photochemistry_mod.F90
动力质量守恒 新增 tracer_mass_fixer_dyn_mod,对选定非 CO2 tracer 的动力质量误差作修正,并以 CO2 补偿 physiq_mod.Ftracer_mass_fixer_dyn_mod.F90

这些条目同时包含“模块化重构”和“新行为”。迁移测试应针对输出或守恒量验证,不能用文件名变化代替数值验证。

光化学还有一项构建契约:photochemistry_mod.F90 调用 LAPACK dgesv,缺少对应实现时会明确中止。启用光化学的 6.3 构建必须把 LAPACK 链接测试纳入冒烟检查。

6. GCM6 样例配置不是 GCM5 配置的原样延续

6.3 deftank/callphys.def.GCM6 的代表性变化包括:

此外,max_icecap_albedooutput_diagfislow_diagfi、1D 水汽/水冰 profile 控制和 XIOS 文件布局都需要在旧运行目录中显式处理。6.3 新增 callphys.def.MCD6traceur.def.MCD6run.def.64x48x73.MCD6z2sig.def.MCD6;其中旧 z2sig.def 与新 z2sig.def.MCD6 在本快照中哈希相同,属于命名/样例组织变化,不能据此声称垂直坐标算法改变。

迁移与复现实验清单

A. 构建

B. 配置与 tracer

C. 初始场、重启与 1D

D. 输出与科学回归

证据等级与仍待确认项

结论类型 本页处理方式
SHA-256 相同/不同、文件新增/删除 已核验的快照事实
usecallgetin_p、条件分支 已核验的源码行为
删除 + 新增且调用链连续 可写为迁移或模块化重构
只有新文件名、尚未追到调用点 只写“存在性变化”,不声称运行时启用
对气候统计量、性能或科学偏差的影响 必须经编译和数值试验确认

仍需运行验证的问题:

相关页面