geometry output cell area
输入范围:phy_common/geometry_mod.F90、dynphy_lonlat/inigeomphy_mod.F90。 Mars 运行参与度:条件经过;Mars 物理列几何和 lon-lat 输出可读取该状态。
当前行为
当前源码把物理 cell area 与 lon-lat 输出 cell area 分开:
| 符号 | 位置 | 作用 |
|---|---|---|
cell_area_for_lonlat_outputs(:) |
geometry_mod.F90:32 |
保存输出专用 lon-lat 面积。 |
THREADPRIVATE(cell_area_for_lonlat_outputs) |
geometry_mod.F90:36 |
OMP 线程私有。 |
init_geometry_cell_area_for_outputs |
geometry_mod.F90:84 |
初始化输出面积缓存。 |
CALL init_geometry_cell_area_for_outputs |
inigeomphy_mod.F90:241 |
从 dyn-phys 几何初始化阶段写入。 |
inigeomphy_mod.F90:14 导入 init_geometry_cell_area_for_outputs,说明输出面积初始化是几何桥接的一部分,不是后处理临时变量。
数据流
inigeomphy_mod
-> 计算/准备 airefi_for_outputs
-> init_geometry_cell_area_for_outputs(klon_omp, airefi_for_outputs)
-> allocate cell_area_for_lonlat_outputs(klon)
-> copy input area
geometry_mod.F90:88 注释把输入称为 tweaked lon-lat mesh。该数组用于输出网格面积,避免把物理列面积和 lon-lat 输出面积极点处理混在一起。
复现要点
- 诊断输出面积问题时,先确认使用的是 physics cell area 还是
cell_area_for_lonlat_outputs。 - 极点差异通常来自输出 lon-lat 网格的特殊处理,不应直接归咎于物理列面积。
- OMP 运行要确认每个线程已初始化 threadprivate 面积缓存。
- 如果输出模块读不到该数组,回溯到
inigeomphy_mod是否调用了init_geometry_cell_area_for_outputs。