infotrac 的 MARS 与 COMMON 使用方

输入范围

LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dyn3d_common\infotrac.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dyn3d
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dyn3dpar
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dynphy_lonlat
LMDZ.MARS\libf\dynphy_lonlat\phymars
LMDZ.MARS\libf\phymars\dyn1d

Mars 运行参与度:必经。Mars 全 GCM、工具程序和 1D/testphys 初始化都把 infotrac 当作 tracer 维度、名称和 family 关系的公共 contract。

COMMON 入口使用位置

文件 使用内容 影响
dyn3d/gcm USE infotrac,调用 infotrac_init,随后分配 q(ip1jmp1,llm,nqtot) 完整 GCM 的 tracer 维度由 nqtot 决定
COMMON dyn3d/nogcm.F90 当前源码已删除 旧版 COMMON nogcm 使用关系后续集中说明
dyn3dpar/gcm.F 调用 infotrac_init,分配并行版 q 并行入口与串行入口共享 tracer 元数据
dyn3d/conf_gcm.F90dyn3dpar/conf_gcm.F90 USE infotrac, ONLY: type_trac 配置阶段设置/读取 tracer 类型

动力和输送使用位置

文件 使用内容 影响
advtrac 串并行对照 nqtot/iadv/nqperes/ok_iso_verif 按 scheme 调度 Van Leer、PPM、Prather 等路径
dyn3dpar/advtrac_p.F90 nqtot/iadv/ok_iso_verif 并行 tracer 输送调度和 isotope 检查
caladvtrac.F nqtot tracer tendency 数组循环边界
addfi.Faddfi_p.F nqtot 物理 tendency 写回 tracer 维度
COMMON leapfrog.F、MARS phymars/leapfrog_nogcm.Fleapfrog_p.F nqtot,部分路径用 ok_iso_verif/tname 主时间推进中的 q/dq/dqfi 分配和循环
vlspltgen_p nqtot/nqperes/nqdesc/nqfils/iqfils/ok_iso_verif family tracer 与 isotope 检查进入并行 Van Leer 内核

物理接口和输出使用位置

文件 使用内容 影响
dynphy_lonlat/calfis.Fcalfis_p.F nqtot/niadv/tname 动力 tracer 映射到物理列,调用 call_physiq(...,nqtot,tname,...)
inithist.Finitdynav.F90 nqtot/ttext 创建 history/dynav tracer 变量
writehist.Fwritedynav.F nqtot/ttext 按 tracer 长名写出历史场
dynredem.F90dynredem_p.F90 nqtot/tname/ttext/type_trac restart 变量创建和读取匹配

Mars 使用关系

文件 使用内容 Mars 影响
phymars/nogcm.F90 USE infotrac,调用 infotrac_init,分配 q(...,nqtot) Mars 主运行入口直接继承 COMMON tracer contract
phymars/newstart.F infotrac_init/nqtot/tname 分配 qcoefvmr,读取 archive 后可能把 archive 名称复制回 tname
phymars/start2archive.F infotrac_init/nqtot/tname 分配 tracer 和 surface tracer,按 tname 写 archive 变量
phymars/lect_start_archive.F tname、传入 nqtot 读取 tname(iq)tname(iq)//"_surf" 对应的 archive 字段
phymars/iniphysiq_mod.F90 nqtot 物理状态和 conf_phys 初始化使用 tracer 数
phymars/callphysiq_mod.F90 形参 nqtot/tname 物理包接收动力 tracer 名称和维度
phymars/leapfrog_nogcm.F nqtot/ok_iso_verif/tname Mars nogcm 主循环含 tname=="co2" 的 CO2 特殊处理
phymars/dyn1d/init_testphys1d_mod.F90 nqtot/tname/nqperes/nqfils 1D/testphys 自行设置 nqtot、分配 tname 并复用父子 tracer 检查
phymars/dyn1d/read_profile_mod.F90 tname 按 tracer 名读取 profile

关键约定

  1. infotrac_init 必须早于任何 q(...,nqtot) 分配。
  2. nqtot 是动力维度,Mars archive/physics 不能只看 nbtrnqtrue
  3. tname 是 restart/archive/physics 的变量名桥梁;newstart 允许交互或 archive 匹配后改写 tname
  4. ttext 主要服务 history/dynav 输出。
  5. iadvadvtrac 使用,决定 tracer 是否走 Van Leer、饱和水汽或其他历史分支。
  6. niadv 由动力-物理接口使用,避免 moments 附加 tracer 被当作普通物理 tracer。

复现要点

待确认

相关页面