leapfrog 动力计算和 tracer 输送段

输入范围

LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dyn3d\leapfrog.F
LMDZ.MARS\libf\dynphy_lonlat\phymars\leapfrog_nogcm.F

Mars 运行参与度:条件经过。COMMON 完整 GCM 入口会执行本页的动力/输送段;MARS nogcm 变体保留接口但把动力 tendency 清零,不调用 caldyn/caladvtrac/integrd

完整 GCM 调用顺序

每个 label 2 步中,完整 leapfrog.F 的动力段顺序是:

  1. tpot2ttetapk 转成温度 temp
  2. 构造 tsurpk=cpp*temp/pk
  3. geopot(ip1jmp1,tsurpk,pk,pks,phis,phi) 计算 geopotential。
  4. caldyn(...) 计算 du/dv/dteta/dp/w/pbaru/pbarv
  5. planet_type=="generic"ok_guide,把 uforc nudging 加到 du
  6. forward .OR. leapf,调用 caladvtrac(q,pbaru,pbarv,p,masse,dq,teta,flxw,pk)
  7. offline 且启用 IOIPSL,调用 fluxstokenc 写 mass flux。
  8. 调用 integrd(nqtot,...,dv,du,dteta,dq,dp,...,q,ps,masse,phis) 写回状态。
  9. Titan tidal 分支可额外加 tidal_forces

tendency 输入输出

例程 主要输入 输出/副作用
caldyn 当前 ucov/vcov/teta/ps/masse/pk/pkf/phi du/dv/dteta/dp/w/pbaru/pbarv
caladvtrac q/pbaru/pbarv/p/masse/teta/pk dqflxw
fluxstokenc pbaru/pbarv/masse/teta/phi/phis/dtvr/itau offline tracer flux history
integrd 上一步状态 ...m1 和 tendency 更新 ucov/vcov/teta/q/ps/masse

integrd 接收 nqtot,因此 tracer 维度由 infotrac contract 控制。

NODYN 和 nogcm

完整 leapfrog.F#ifdef NODYN 分支:将 dv/du/dteta/dq/dp/flxw 置零,绕过 caldyn/caladvtrac/integrd 前的动力计算。

MARS phymars/leapfrog_nogcm.F 则直接把:

dv=0
du=0
dteta=0
dq=0

并跳过完整动力段和 integrd。它后续通过 physics 后的 pressure/CO2/temperature mixing 来替代部分再分布效果。

与已有 helper 页的关系

复现要点

待确认