advtrac 串并行对照
输入范围
dyn3d\advtrac.F90
dyn3dpar\advtrac_p.F90
Mars 运行参与度:条件经过。tracer advection 开启时由 leapfrog 调度;并行构建使用 _p 版本。
例程定位
advtrac 是 tracer 输送调度层,不是单一数值格式。它根据 tracer 配置选择 Van Leer、PPM、Prather、advn、pentes_ini 等路径,并在必要时做质量平均、时间步适配和 isotope 检查。dyn3d/advtrac 是串行文件页;caladvtrac 到 tracer advection 循环 进一步展开 iapp_tracvl 累计门控、nqperes/iadv 顶层循环、串行 caladvtrac wrapper 和并行 advtrac_p 直调边界。
对照表
| 项 | 串行 advtrac.F90 |
并行 advtrac_p.F90 |
|---|---|---|
| 行数 | 407 | 531 |
| 主例程 | advtrac |
advtrac_p |
| 质量处理 | massbar |
并行质量/halo 兼容处理 |
| Van Leer | vlsplt、饱和分支 |
vlspltgen_p、vlsplt_p |
| 其他格式 | advn, pentes_ini, prather, ppm3d |
同类格式加并行交换和计时 |
| isotope | check_isotopes_seq |
并行检查和同步点更多 |
调度顺序
- 根据当前质量和通量准备 advection 所需的 staggered mass。
- 按 tracer 的
iadv或 scheme 标识进入不同输送格式。 - Van Leer 路径调用 split transport;饱和分支调用
vlspltqs或并行通用vlspltgen_p的饱和内核。 - PPM/Prather/advn 路径调用 common 大内核或 moments 内核。
- 对 isotope 或父子 tracer 做一致性检查。
- 必要时调用
adaptdt调整输送步长。
复现要点
- 复现 tracer 结果必须先确定 tracer 配置中的 scheme;只读
advtrac不能知道每个 tracer 的最终路径。 - 并行版的 halo/swap 点是数值等价的关键,不能仅比较内核名。
- ppm3d 入口约定 说明 PPM 串行可达性和并行不可达状态。
- advn 调度顺序 说明 advn 的 x-y-z-y-x split 和 iadv=12/13 调用关系。
- vlspltgen_p、prather、pentes_ini 是本页的关键子页。
相关页面
- vlsplt 串行父子 tracer
- vlsplt 串行 split 内核
- dyn3d/advtrac
- caladvtrac 到 tracer advection 循环
- ppm3d 入口约定
- advn 调度顺序
- vlsplt 串并行 Van Leer 差异对照
待确认
iadv数字到 scheme 名称的完整表需要infotrac.F90重点页 补齐。