leapfrog 耗散、sponge 和守恒修正

输入范围

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

Mars 运行参与度:条件经过。COMMON 完整 GCM 路径按 dissip_periodapdiss 执行耗散;MARS nogcm 变体去掉 apdiss 和完整耗散段。

apdiss 门控

完整 leapfrog.Fapdiss 在每次 label 2 开始时先置 .FALSE.,再按时间步设置:

nogcm 源码注释明确删除 apdiss,没有耗散调用。

耗散调用顺序

apdiss 为真:

  1. callsponge,先调用 sponge(ucov,vcov,teta,ps,dtdiss,mode_sponge)
  2. covcontenercin 计算耗散前动能 ecin0
  3. tpot2t 得到温度 temp
  4. dissip(vcov,ucov,teta,p,dvdis,dudis,dtetadis) 计算耗散增量。
  5. ucov=ucov+dudisvcov=vcov+dvdis
  6. dudis/dvdis 除以 dtdiss,转成 (m/s)/s tendency。

conservative dissipation

dissip_conservativeSAVE 逻辑量,默认 .true.。启用时,耗散后重新计算动能 ecin,把动能损失转成热力修正:

  1. dtec=(ecin0-ecin)/cpdet(temp)
  2. temp=temp+dtec
  3. t2tpot 把温度修正转回 ztetaec
  4. ztetaec 更新 teta 的相关 tendency/状态。

这段保证小尺度风场耗散掉的动能以热力形式回到系统,减少能量不守恒。

pressure 和极点处理

完整 GCM 在耗散相关段前已经刷新过 p/masse。耗散段末尾还有一段极点 pressure 处理代码被 if (1 == 0) 包住,不会执行;因此当前活跃路径不做该段极点平均。

nogcm 差异

MARS phymars/leapfrog_nogcm.F

复现要点

待确认

相关页面