calfis.F
路径
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dynphy_lonlat\calfis.F
文件定位
calfis.F 定义串行动力调用物理的接口例程 calfis。它把动力网格上的压力、温度、风、tracer、位势和垂直质量通量整理到物理列数组,调用 call_physiq 获得物理 tendency,再把 tendency 映射回动力网格。
Mars 运行参与度
条件经过:COMMON 串行动力启用物理时经过;Mars 标准物理入口多在 phymars 侧,但本文件保留 COMMON lon-lat 串行动力-物理接口逻辑。
定义的符号
| 符号 |
类型 |
行号 |
作用 |
calfis |
subroutine |
6 |
串行动力-物理调用接口。 |
主要依赖
| 依赖 |
用途 |
infotrac:nqtot,niadv,tname |
tracer 数量、物理 tracer 名称和 advection index 映射。 |
control_mod:planet_type,nsplit_phys |
行星类型和物理步分裂次数。 |
callphysiq_mod:call_physiq |
行星物理统一调用入口。 |
cpdet_mod:tpot2t,t2tpot |
位温和温度互转,支持 Cp(T) 适配。 |
comconst_mod |
daysec/dtvr/dtphys/kappa/cpp/g/rad/pi 等常量。 |
gr_dyn_fi、gr_fi_dyn |
动力格点与物理列互转。 |
输入输出
| 参数组 |
说明 |
| 动力状态 |
pps/pp/ppk/pteta/pq/pphi/pphis 等,从动力网格转为物理列。 |
| 风场 |
pucov/pvcov 转为物理侧 zufi/zvfi,极点用经纬方向分解。 |
| 物理 tendency 输出 |
pdufi/pdvfi/pdhfi/pdqfi/pdpsfi,单位按注释为每秒 tendency。 |
| 时间标志 |
debut 保存首次调用,lafin 表示最后一次 physics 调用。 |
核心流程
- 首次调用检查
ngridmx,分配 zonal mean 工作数组和纬度索引 klat。
- 将动力表面压力、压力层、Exner/位温和 tracer 从
iip1/jjp1 网格压缩为 ngridmx 物理列。
- 调用
tpot2t 得到物理温度 ztfi。
- 调用
gr_dyn_fi 转换位势和地表位势;计算物理列中的风、相对涡度和垂直质量通量 flxwfi。
- 在
CPP_PHYS 下按 nsplit_phys 循环调用 call_physiq,每个 split 使用 dtphys/nsplit_phys 和分裂后的 jH_cur_split。
- 每个 split 后用物理 tendency 更新
zufi/zvfi/ztfi/zqfi,并累计 zdufic/zdvfic/zdtfic/zdqfic。
- split 结束后把累计 tendency 除以
nsplit_phys。
- 调用
gr_fi_dyn 或显式循环把压力、热力、tracer、u/v tendency 写回动力网格;tracer 写回使用 iiq=niadv(iq)。
复现要点
ngridmx=2+(jjm-1)*iim - 1/jjm,普通 3D 情况对应两个极点加中间纬圈。
- 物理列顺序是北极单点、中间纬圈展开、南极单点。
call_physiq 的入口温度是 ztfi,写回热力 tendency 前再用 t2tpot 回到位温。
pdufi 在极点置零;pdvfi 近极点由物理侧矢量分量和 rlonv 投影得到。
flag_moyzon 与 nsplit_phys.ne.1 同时启用时只打印 warning。
待确认
- Mars 当前生产路径是否直接调用 COMMON
calfis,需从 phymars 构建和入口进一步确认。
moyzon_ch/moyzon_mu 的实际诊断输出需要 moyzon_mod 页面补充。
相关页面