leapfrog 输出、诊断和 restart

输入范围

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

Mars 运行参与度:必经。COMMON 完整 GCM 使用 leapfrog.F 写 history/dynav 诊断和 restart.nc;MARS phymars/leapfrog_nogcm.F 只作为 Mars 侧边界对照,最终步写 restart,不支持 ecritstart 中途 restart。

平均/纬向诊断

在非 purmats 路径,每当 MOD(itau,iperiod)==0itau==itaufin

  1. iav=1 表示最终步,否则为 0。
  2. 重算 phi,完整 GCM 使用 CP(T) 适配后的 tsurpk,nogcm 平均输出处直接用 teta
  3. ok_dynzon 且启用 IOIPSL,调用 bilan_dyn(dtvr*iperiod,dtvr*day_step*periodav,...)
  4. ok_dyn_ave 且启用 IOIPSL,调用 writedynav(itau,vcov,ucov,teta,pk,phi,q,masse,ps,phis)

purmats backward 分支中也有同样的平均/纬向输出逻辑。

instant history 和 Grads

MOD(itau,iecri)==0

restart 判断

完整 leapfrog.F 支持最终步和中途 restart:

条件 行为
itau==itaufin lrestart=.true.
ecritstart>0MOD(itau,ecritstart)==0 lrestart=.true.
ecritstart==0 避免 modulo 除零,不触发中途 restart

写 restart 时:

MARS nogcm 变体只在 itau==itaufin 时写:

输出前状态

输出前通常会重新计算 phi,但不总是刷新 p/masse/pk。因此调用顺序依赖前面物理/耗散段已经保证 ps/masse/pk 一致。writehistwritedynav 接收 q,其第三维为 nqtot

复现要点

待确认

相关页面