callphysiq_mod.F90

路径

LMDZ.MARS\libf\dynphy_lonlat\phymars\callphysiq_mod.F90

所属目录/模块

libf/dynphy_lonlat/phymars

文件定位

lon-lat GCM 动力-物理耦合适配器。callphysiq_mod 模块封装唯一入口 call_physiq,在动力核心与 physiq_mod 之间传递状态数组和 tendency;首次调用时验证 planet_type=="mars",随后将动力核心传入的 OMP 并行数组按 physiq 参数列表转发,并把物理 tendency 回写动力侧。

当前源码树中的直接调用方位于 LMDZ.COMMON-6.3:串行 calfis 和并行 calfis_p 都在 CPP_PHYS 分支内按 nsplit_phys 调用 call_physiq。MARS 本文件是行星物理包提供给 COMMON 动力核心的适配层。

定义的符号

符号 类型 行号 作用
callphysiq_mod module 4 动力-物理接口模块,封装 call_physiq
call_physiq subroutine 10 接收动力核心状态、调用 physiq、返回 tendency

依赖的模块

use 模块 only 列表 用途 待确认
control_mod planet_type 首次调用时校验行星类型为 "mars"
mod_grid_phy_lmdz nbp_lon, nbp_lat pducov 参数提供维度(nbp_lon+1, nbp_lat
physiq_mod physiq Mars 物理参数化主调度例程

调用的关键例程

被调用例程 所在模块/文件 调用位置 作用
abort_gcm 公共工具(待确认模块) 行 62 planet_type 非 "mars" 时中止运行
physiq physiq_mod 行 69-89 将动力状态转发给 Mars 物理包,接收 tendency

直接调用本例程的位置:

调用方 源码位置 调用条件与作用
calfis LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dynphy_lonlat\calfis.F:699 串行 lon-lat 路径;在 CPP_PHYS 下按 nsplit_phys 转发物理列状态。
calfis_p LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dynphy_lonlat\calfis_p.F:946 MPI/OpenMP 并行 lon-lat 路径;转发当前物理列切片并接收 tendency。

输入

输入 来源 类型/维度 单位 含义
klon 动力核心 INTEGER 局地大气柱数
llm 动力核心 INTEGER 大气层数
nqtot 动力核心 INTEGER 示踪剂个数
tname 动力核心 CHARACTER(len=*) (nqtot) 示踪剂名称
debut_split 动力核心 LOGICAL 是否为物理过程首次调用
lafin_split 动力核心 LOGICAL 是否为物理过程末次调用
jD_cur 动力核心 REAL day 儒略日
jH_cur_split 动力核心 REAL day 儒略小时(日分数)
zdt_split 动力核心 REAL s 物理过程时间步长
zplev_omp 动力核心 REAL (klon,llm+1) Pa 层间气压
zplay_omp 动力核心 REAL (klon,llm) Pa 中层气压
zpk_omp 动力核心 REAL (klon,llm) 气压相关参数
zphi_omp 动力核心 REAL (klon,llm) m²/s² 中层位势
zphis_omp 动力核心 REAL (klon) m²/s² 地表位势
presnivs_omp 动力核心 REAL (llm) Pa 各层近似气压
zufi_omp 动力核心 REAL (klon,llm) m/s 纬向风
zvfi_omp 动力核心 REAL (klon,llm) m/s 经向风
zrfi_omp 动力核心 REAL (klon,llm) s⁻¹ 相对涡度
ztfi_omp 动力核心 REAL (klon,llm) K 温度
zqfi_omp 动力核心 REAL (klon,llm,nqtot) */kg 示踪剂混合比
flxwfi_omp 动力核心 REAL (klon,llm) kg/s 下界面垂直质量通量
pducov 动力核心 REAL (nbp_lon+1,nbp_lat,llm) 动力倾向(ucov)

输出

输出 去向 类型/维度 单位 含义
zdufi_omp 动力核心 REAL (klon,llm) */s 纬向风 tendency
zdvfi_omp 动力核心 REAL (klon,llm) */s 经向风 tendency
zdtfi_omp 动力核心 REAL (klon,llm) */s 温度 tendency
zdqfi_omp 动力核心 REAL (klon,llm,nqtot) */s 示踪剂 tendency
zdpsrf_omp 动力核心 REAL (klon) */s 地表气压 tendency

共享状态与副作用

核心逻辑

  1. 首次调用校验IF (firstcall) 时检查 planet_type 是否为 "mars",不是则调用 abort_gcm 中止,然后将 firstcall 置为 .false.
  2. 转发物理调用call_physiq 接收 27 个形参,向 physiq 传递其中 21 个。未转发的是 tnamezpk_ompzphis_omppresnivs_ompzrfi_omppducovjD_curjH_cur_split 分别明确映射为 physiqpdayptime

伪代码

SUBROUTINE call_physiq(状态参数..., tendency参数...)
  USE control_mod  → planet_type
  USE physiq_mod   → physiq

  IF firstcall THEN
    IF planet_type ≠ "mars" THEN abort
    firstcall ← .false.
  ENDIF

  CALL physiq(klon, llm, nqtot, debut_split, lafin_split,
              jD_cur, jH_cur_split, zdt_split,
              zplev_omp, zplay_omp, zphi_omp,
              zufi_omp, zvfi_omp, ztfi_omp, zqfi_omp,
              flxwfi_omp,
              zdufi_omp, zdvfi_omp, zdtfi_omp, zdqfi_omp, zdpsrf_omp)
END SUBROUTINE

参与的主题流程

主题 参与方式
动力-物理接口 作为 COMMON calfis/calfis_p 到 MARS physiq 的行星侧适配点;串、并行路径都通过本入口。

写法特点

复现要点

待确认

相关页面