inigeomphy_mod.F90

路径

LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dynphy_lonlat\inigeomphy_mod.F90

文件定位

inigeomphy_mod.F90 定义 inigeomphy,负责把动力网格几何和垂直层信息初始化到物理侧公共模块。它初始化物理列分布、动力-物理索引、regular lon-lat 网格、物理列经纬度/面积/边界、局部 OpenMP 几何数组,并把 comvert_mod 中的垂直层复制给 vertical_layers_mod

Mars 运行参与度

必经/条件经过:Mars 物理初始化路径通过 `iniphysiq_mod` 使用 COMMON `inigeomphy_mod` 时经过;1D 和 3D 分支都在本文件内处理。

定义的符号

符号 类型 行号 作用
inigeomphy_mod module 1 物理几何初始化模块。
inigeomphy subroutine 5 初始化物理分布、水平几何和垂直层。

输入参数

参数 维度/类型 说明
iim, jjm, nlayer integer 动力经向、纬向和垂直层数。
nbp integer 当前 MPI 进程物理列数。
communicator integer 物理分布使用的 MPI communicator。
rlatu(jjm+1), rlatv(jjm) real 物理标量纬度和纬向边界。
rlonv(iim+1), rlonu(iim+1) real 经度点和经向边界。
aire(iim+1,jjm+1) real 动力网格面积,单位注释为 m2
cu, cv real arrays 协变风转换系数。

依赖

依赖 用途
mod_grid_phy_lmdz klon_glo 和 regular lon-lat grid 类型。
mod_phys_lmdz_para klon_omp、OpenMP/MPI 子域起止列。
physics_distribution_mod init_physics_distribution 初始化物理列分布。
mod_interface_dyn_phys init_interface_dyn_phys 初始化动力-物理索引。
regular_lonlat_mod 初始化全局 regular lon-lat 网格和四角边界。
geometry_mod init_geometry 写入物理侧局部几何。
comvert_mod preff/ap/bp/aps/bps/presnivs/scaleheight/pseudoalt
vertical_layers_mod init_vertical_layers 写入物理侧垂直层。
gr_dyn_fi 将动力面积场转换到物理列。
abort_gcm 面积一致性严重失败时退出。

核心流程

  1. iim*jjm>1,按 3D regular lon-lat 初始化物理分布;否则按 1D 模式初始化单列分布。
  2. 调用 mod_interface_dyn_physinit_interface_dyn_phys
  3. 构造 global regular grid 的经纬边界数组,其中第一经度 west 边界用 rlonu(iim)-2*pi 特判。
  4. 调用 init_regular_lonlat 写入全局 regular lon-lat 网格。
  5. 分配 latfi_glo/lonfi_glo/cufi_glo/cvfi_glo/airefi_glo/bounds*
  6. 3D 分支中,北极和南极分别作为单个物理点,中间纬圈按 k=(j-2)*iim+1+i 展开。
  7. 调用 gr_dyn_fi 把动力面积转成物理面积,并用动力极圈面积和修正两极物理面积。
  8. 比较 total_area_dyntotal_area_phy;相对差超过 1e-5abort_gcm
  9. 1D 分支中直接复制单列经纬度、面积和边界。
  10. 在 OpenMP parallel 区分配线程私有局部数组,并根据 klon_mpi_begin/klon_omp_begin/klon_omp_end 截取全局物理列。
  11. 调用 init_geometry 写入局部物理几何。
  12. 调用 init_vertical_layers 将动力垂直层状态复制给物理侧。

保存状态和线程私有数组

latfi/lonfi/cufi/cvfi/airefi/boundslonfi/boundslatfi/ind_cell_glo_fiALLOCATABLE,SAVE,并声明为 THREADPRIVATE。每个 OpenMP 线程在 parallel 区分配自己的局部物理列几何;这些数组随后传入 geometry_mod

复现要点

待确认

相关页面