dyn3d_common 总览
路径
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dyn3d_common
职责
dyn3d_common 包含串行和并行动力共享的核心状态、初始化、网格几何、restart、垂直坐标、差分算子、输送内核和 I/O helper。当前目录有 123 个文件。
Mars 运行参与度:必经 到 接口兼容 混合。control_mod、comconst_mod、comvert_mod、infotrac 等由 MARS 直接转发或 USE;dynetat0、inigeom 被 MARS phymars/nogcm.F90、newstart.F、start2archive.F 等调用链使用。
目录内容
| 分组 |
代表文件 |
作用 |
| 运行状态模块 |
control_mod.F90, comconst_mod.F90, comvert_mod.F90, ener_mod.F90, serre_mod.F90 |
保存控制变量、物理常量、垂直坐标、能量诊断和工作状态。 |
| 初始化 |
dynetat0.F90, iniacademic.F90, iniconst.F90, inigeom.F, inidissip.F90, disvert*.F* |
读取或构造初态、常量、几何、耗散和垂直离散。 |
| restart/I/O |
dynredem.F90, dynredem_mod.F90, grilles_gcm_netcdf_sub.F90, inithist.F, writehist.F, initdynav.F90 |
写 restart、网格 NetCDF、history/dynav 输出。 |
| 输送 |
advn.F, advx/y/z.F, advxp/yp/zp.F, ppm3d.F, prather.F, pentes_ini.F, limx/y/z.F |
tracer 或质量相关输送格式和 slope limiter。 |
| 差分算子 |
grad*.F, diverg*.F, divgrad*.F, rotat*.F, laplacien*.F, nxgrad*.F |
动力方程中的梯度、散度、旋度、拉普拉斯等算子。 |
| 质量压力能量 |
massdair.F, massbar*.F90, pression.F90, pbar.F, psextbar.F, geopot.F, exner*.F90 |
压力、气柱质量、位势和 Exner 函数处理。 |
| 网格函数 |
fxy.F, fxysinus.F, fxhyp_m.F90, fyhyp_m.F90, coordij.F |
zoom 和经纬网格映射辅助。 |
与其他目录的关系
| 相关目录 |
关系 |
dyn3d/ |
串行入口和主循环调用本目录的初始化、几何、输送和算子。 |
dyn3dpar/ |
并行动力复用许多 common 状态和算子,也有 _p 版本配合 halo/decomposition。 |
dynphy_lonlat/ |
动力状态通过 lon-lat 接口进入物理侧;几何数组为接口映射提供基础。 |
LMDZ.MARS\libf\phymars\dyn1d |
直接转发多个 common 模块和 include 文件。 |
关键文件
典型流程
conf_gcm 设置 control_mod、logic_mod 和耗散/网格控制变量。
infotrac_init 读取 tracer 元数据,入口据此分配 tracer 数组。
dynetat0 或 iniacademic 生成初始 ucov/vcov/teta/q/masse/ps/phis/time_0。
iniconst、inigeom、inifilr 准备常量、几何和滤波数据。
leapfrog/leapfrog_nogcm 调用 pressure、mass、operator、advection、diagnostic 和 restart helper 推进时间。
复现要点
- 维度来自
dimensions.h 和 paramet.h,几何数组主要在 comgeom2.h 中共享。
dynetat0 读入的 start 控制数组会写入 comconst_mod、comvert_mod、temps_mod、serre_mod 等状态。
inigeom 会按 fxyhypb/ysinus 选择不同网格映射分支,复现时必须同时记录 zoom 参数。
待确认
- 各
adv* 和 ppm3d/prather 文件在 Mars 具体 tracer 配置下的启用条件需由后续输送页面补充。
defrun.F 是否仍被某些旧工具链调用,当前源码内未发现 COMMON/MARS 主链调用。
相关页面