ioipsl_getin_p_mod.F90
源码路径:LMDZ.COMMON-6.3\LMDZ.COMMON\libf\phy_common\ioipsl_getin_p_mod.F90。 Mars 运行参与度:条件经过;Mars 并行物理配置读取可经过本 wrapper。
文件定位
本模块提供并行上下文中的 getin_p 泛型:master 读取配置,然后通过 mod_phys_lmdz_transfert_para:bcast 广播给其它 MPI ranks/OMP threads。
master abstraction
当前实现要点:
| 位置 | 行为 |
|---|---|
| 12 | USE mod_phys_lmdz_para, ONLY : is_master |
| 13 | USE mod_phys_lmdz_transfert_para, ONLY : bcast |
| 18-25 | INTERFACE getin_p 绑定 char/int/real/logical 标量和数组。 |
| 43, 57, 73, 85, 97, 111, 123, 135, 149, 161, 173 | 各类型例程用 IF (is_master) CALL getin(...)。 |
旧的 is_mpi_root .AND. is_omp_root 判断不再是 主线;master 语义集中到 mod_phys_lmdz_para:is_master。
调用模式
getin_p(key, VarOut)
-> IF (is_master) CALL getin(key, VarOut)
-> CALL bcast(VarOut)
字符 1D 例程对每个元素广播;其它标量/数组调用 bcast(VarOut) 泛型。该泛型在 支持到 5D/6D。
复现检查
- 配置只应由 master 读,非 master 通过 broadcast 同步。
- 若某 rank/线程参数不同,先查
is_master定义和bcast泛型。 - 高维数组配置要确认
parallel-transfer-6d已纳入构建。 - 没有 IOIPSL 时,源码可改用
ioipsl_getincom:getinfallback。