phy_common 总览
路径
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\phy_common
职责
phy_common 提供物理侧公共基础设施:物理列并行分布、MPI/OpenMP transfer、物理几何和垂直层状态、XIOS/write_field 封装、打印控制和物理侧 abort。它位于动力-物理接口之后,为行星物理包提供统一的网格、并行和输出支撑。
Mars 运行参与度
条件经过:Mars 物理初始化、物理输出或 COMMON 物理侧并行抽象被使用时经过;具体文件是否进入 Mars 标准路径取决于 phymars 调用和编译宏。
当前覆盖页面
| 页面 | 作用 |
|---|---|
| mod_phys_lmdz_para | 物理侧并行抽象入口,串联 MPI/OMP data 和 transfer。 |
| mpi-data-transfer | MPI 物理列分布和 MPI transfer 接口族。 |
| mod_phys_lmdz_mpi_transfert | MPI transfer 主文件页,覆盖 8 个泛型、94 个 specific procedures、SCATTERV/GATHERV/REDUCE 和局部 1D/2D 转换。 |
| omp-data-transfer | OMP 物理列分布和线程内 transfer 接口族。 |
| mod_phys_lmdz_transfert_para | MPI/OMP 组合 transfer wrapper,覆盖 bcast/scatter/gather/scatter2D/gather2D/reduce_sum 泛型、顺序和临时数组约定。 |
| mod_phys_lmdz_omp_transfert | OMP transfer 主文件页,覆盖共享 buffer、同步指令、列形状约定和高维 broadcast。 |
| parallel-transfer-6d | 5D/6D broadcast 泛型和 OMP buffer/race 修复。 |
| physics_distribution_mod | grid、parallel、dimphy 三段初始化封装。 |
| mod_grid_phy_lmdz | 全局物理网格规模、klon_glo 和 Grid1Dto2D_glo/Grid2Dto1D_glo 映射。 |
| geometry-grid-layers | 局部几何、regular lon-lat、垂直层和 1D/2D 网格映射。 |
| geometry_mod | 物理列局部经纬度、边界、面积、输出面积和全局 cell index 状态。 |
| grid-coordinate-state | 全局 regular lon-lat 坐标轴和物理侧 threadprivate 垂直层状态。 |
| ioipsl_getin_p_mod | is_master getin wrapper 和 broadcast 约定。 |
| write-field-xios | 物理侧 XIOS 和旧 write_field 输出封装。 |
| xios_writefield | CPP_XIOS 下的临时 field dump 封装,覆盖 native/regular/unstructured domain 分支。 |
| print-control-abort | 物理侧打印控制、lunout/prt_level/debug 和 abort 组页。 |
| abort_physic | 物理侧统一错误终止入口、IOIPSL close/getin dump 和 MPI abort 分支。 |
目录文件分组
典型初始化链
inigeomphy_mod
-> physics_distribution_mod:init_physics_distribution
-> mod_grid_phy_lmdz:init_grid_phy_lmdz
-> mod_phys_lmdz_para:init_phys_lmdz_para
-> mod_phys_lmdz_mpi_data:init_phys_lmdz_mpi_data
-> mod_phys_lmdz_omp_data:Init_phys_lmdz_omp_data
-> dimphy:Init_dimphy
-> regular_lonlat_mod:init_regular_lonlat
-> geometry_mod:init_geometry
-> vertical_layers_mod:init_vertical_layers
复现要点
klon_glo是全局物理列数,去掉重复极点经度;klon_mpi是当前 MPI rank 的列数;klon_omp是当前 OpenMP 线程的列数。mod_grid_phy_lmdz只保存全局网格规模和 1D/2D 映射;经纬度、面积和边界数组由regular_lonlat_mod与geometry_mod保存。geometry_mod和vertical_layers_mod的关键数组是THREADPRIVATE,必须在 OpenMP parallel 区内初始化。- MPI/OMP transfer 组页用于快速定位;MPI transfer、OMP transfer 和 para wrapper 主文件页均已完成。
- 输出和打印控制由本目录的专页展开,目录页只保留职责分组。
待确认
xios_writefield.F90当前本地源码未见直接调用点;外部 physics 包或用户 patch 是否使用需运行/配置侧继续确认。