advxp/advyp/advzp Prather 内核组

输入范围

LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dyn3d_common\advxp.F
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dyn3d_common\advyp.F
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dyn3d_common\advzp.F

文件定位

这组三个固定格式 Fortran 文件实现 Prather/SOM moments 输送的 x/y/z 方向内核。名称带 p,但文件位于 dyn3d_common,用于 COMMON 的 Prather moments 方向搬运逻辑,而不是 dyn3dpar 专属 MPI halo 层。

Mars 运行参与度

条件经过:Mars 或 COMMON 运行选择 Prather/SOM moments advection scheme 时经过;默认 tracer 输送是否进入本组取决于 `infotrac` 的 `iadv` 配置和上层调度。

例程清单

文件 行数 例程 方向 主要通量
advxp.F 648 ADVXP x PBARU(iip1,jjp1,llm)
advyp.F 651 ADVYP y PBARV(iip1,jjm,llm)
advzp.F 376 ADVZP z W(iip1,jjp1,llm)

共同接口

三者都接收 limiter 开关、方向时间步、质量 SM、均值 S0 和 moments/slopes 数组 SSX/SY/SZ/SSXX/SSXY/SSXZ/SYY/SYZ/SZZ,并按方向通量把 moments 在相邻格点间移动。ntra 是 tracer 维度,调用方需要保证传入数组已经按 Prather 格式初始化。

ADVXP

ADVXP 处理周期 x 方向。它把 pbaru(i,j,l) 反转到 ugri(i,j,llm+1-l),对每个垂直层和纬向行按 PBARU 的符号决定从左格或右格向相邻格搬运 moments。代码包含极区扩展区聚合逻辑,通过 NUM(K) 把极点附近多个 i 方向格点合并处理。

复现要点:

ADVYP

ADVYP 处理 y 方向。它把 pbarv(i,j,l) 转为 vgri(i,j,llm+1-l)=-pbarv(i,j,l),并将南北边界外的 vgri(:,0,:)vgri(:,jjp1,:) 设为 0。极点附近存在专门的 north/south moments 汇总变量,例如 sbms/sfms/sfzs/sbmn/sfmn/sfzn

复现要点:

ADVZP

ADVZP 处理垂直方向。它把 w(i,j,l) 转为 wgri(i,j,llm+1-l),并设置 wgri(:,:,0)=0。主循环遍历垂直接口 L=1,NIV-1,根据 WGRI 符号在 LLP=L+1 两层之间搬运 moments。

复现要点:

与串行 advx/advy/advz 的区别

advx/advy/advz 是 slope/limiter advection 内核;本页的 advxp/advyp/advzp 维护 Prather moments,包括一阶和二阶矩数组。两组都在 dyn3d_common,但不能互换:调用方必须按 tracer advection scheme 选择对应格式。

待确认

相关页面