leapfrog 动力-物理耦合

输入范围

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

Mars 运行参与度:必经。COMMON 完整 GCM 通过 calfis 接收动力列状态,再由 addfi 把物理 tendency 写回动力数组;MARS phymars/leapfrog_nogcm.F 还在该段完成 pressure/CO2/teta 的松弛混合,作为 Mars 侧边界记录。

physics 调用前刷新

apphys=.TRUE. 时,两个例程都会先刷新物理所需状态:

  1. pressionps 重算层界压力 p
  2. exner_hybexner_milieu 重算 pks/pk/pkf
  3. geopot 重算 phi
  4. 计算传给 physics 的 jD_cur/jH_cur
  5. ip_ebil_dyn>=1planet_type=="earth",调用 diagedyn 做 physics 前能量诊断。

完整 GCM 中 geopotential 使用 CP(T) 适配后的 tsurpk;MARS nogcm 变体在 physics 前用 teta 版本的 geopot

calfis/addfi

调用链:

CALL calfis(lafin,jD_cur,jH_cur,ucov,vcov,teta,q,masse,ps,p,pk,phis,phi,
            du,dv,dteta,dq,flxw,dufi,dvfi,dtetafi,dqfi,dpfi)

CALL addfi(dtphys,leapf,forward,ucov,vcov,teta,q,ps,
           dufi,dvfi,dtetafi,dqfi,dpfi)

calfis 只产生 physics tendency;addfi 才把 tendency 加到动力状态。addfi 之后 ps 可能改变,所以完整 GCM 立即执行:

完整 GCM 额外 forcing

分支 条件 行为
top boundary iflag_top_bound>0 且 physics 段内 top_bound(...,dtphys,dutop),再把 dutop 转成 tendency
Newtonian academic iflag_phys==2 teta 做 Newtonian relaxation,giant 分支可加 intrinsic heat flux
friction iflag_phys==2 调用 friction(ucov,vcov,dtvr)
stratospheric top iflag_phys==2ok_strato 调用 top_bound(...,dtvr,dutop)

nogcm pressure/CO2/teta 混合

nogcm 在 addfi 后走一段替代动力再分布逻辑:

  1. 保存 CO2 tracer 质量 mq=masse*q(:,:,igcm_co2)
  2. globaverage2d(ps) 得到 psmean,构造参考压力 p0*kpd
  3. tau_psps 松弛到参考压力,负压时设置小正值。
  4. ps 改变,用 (ps/oldps)**kappa 修正 teta
  5. 重算 p/masse/pk
  6. mq/masse 恢复 CO2 混合比,保持 CO2 质量一致。
  7. 垂直混合 CO2:每列按 pressure thickness 求平均,再写回所有层。
  8. 水平松弛 CO2 到全球平均。
  9. teta 按层做面积加权平均松弛,时间尺度 tau_teta

复现要点

待确认

相关页面