libf 核心源码目录
路径
LMDZ.MARS\libf
职责
libf 是 LMDZ.MARS 的核心 Fortran 源码目录,包含火星大气物理过程的全部实现。该目录不包含完整的 GCM 动力核心,而是作为物理包供其他框架(如 LMDZ 动力框架)调用。
源码依据:README 说明 libf 包含 "Fortran source code of the Mars physics package"。
目录内容
| 子目录/文件 | 类型 | 作用 | 文件数 |
|---|---|---|---|
| phymars/ | 目录 | 核心物理模块:辐射、尘埃、水循环、CO2、云、边界层、重力波等 | 164 |
| aeronomars/ | 目录 | 高层大气模块:光化学、热层、电离层、分子扩散 | 32 |
| dynphy_lonlat/ | 目录 | 动力-物理耦合与初始化 | 21 个文件(集中在 phymars/ 子目录) |
子目录详解
phymars/ - 核心物理模块
包含火星大气物理过程的实现,是最重要的目录。按功能分类:
| 类别 | 关键文件 | 作用 |
|---|---|---|
| 主入口 | physiq_mod.F | 物理过程主调度模块,入口例程 physiq() |
| 辐射 | callradite_mod.F, lwmain_mod.F, swmain_mod.F | 短波和长波辐射计算 |
| 尘埃 | dust_param_mod.F90, dust_scaling_mod.F90, dust_windstress_lift.F90, dustdevil.F90 | 尘埃 lifting、传输、沉降 |
| 水循环 | watercloud_mod.F, watersat_mod.F90, tcondwater.F90 | 水蒸气、云、凝结 |
| CO2 循环 | co2condens, co2-saturation helpers, co2snow.F, co2cloud_mod.F90 | CO2 凝结、升华、云 |
| 光化学 | calchim_mod.F90, photochemistry_mod.F90 | 大气化学(可能通过 aeronomars 调用) |
| 边界层/湍流 | turb_mod.F90, lmdz_atke_turbulence_ini.F90, lmdz_call_atke.F90 | 湍流混合、ATKE 方案 |
| 重力波 | sugwd.F90, gwprofil_mod.F90, gwstress_mod.F90 | 重力波拖曳 |
| 对流 | convadj_mod.F, thermcell_main_mars.F90 | 对流调整、热对流 |
| 示踪剂 | tracer_mod.F90, initracer.F90 | 示踪剂管理 |
| 初始化 | phyetat0_mod.F90, phyredem.F90, phys_state_var_init_mod.F90 | 物理状态初始化 |
| 输出 | writediagfi.F, xios_output_mod.F90, write_output_mod.F90 | 诊断输出 |
aeronomars/ - 高层大气模块
处理 80km 以上高层大气物理过程:
| 类别 | 关键文件 | 作用 |
|---|---|---|
| 光化学 | photochemistry_mod.F90, photolysis_mod.F90, photolysis_online.F | 光化学反应和光解 |
| 热层 | nltecool_mod.F, nlte_calc.F, nlte_aux.F | 非局部热力学平衡(NLTE)冷却 |
| 电离层 | iono_h.F90, euvheat.F90 | 电离层加热、光电子 |
| 分子扩散 | moldiff.F, moldiff_red.F, moldiffcoeff.F | 分子扩散 |
| 化学 | chemthermos.F90, deposition.F | 化学和沉积过程 |
dynphy_lonlat/ - 动力-物理耦合
负责物理过程与动力核心的耦合:
| 文件 | 作用 |
|---|---|
| callphysiq_mod.F90 | 物理过程调用接口 |
| iniphysiq_mod.F90 | 物理初始化 |
| ini_archive.F | 初始场处理 |
| defrun_new.F | 运行参数定义 |
| nogcm.F90 | 独立物理模式(无 GCM 动力核心) |
| leapfrog_noro1.F | 时间积分方案 |
| start2archive.F | 初始场格式转换 |
推断:dynphy_lonlat 中的代码负责将 phymars 中的物理过程与 lon-lat 网格的动力核心连接起来。
与其他目录的关系
| 相关目录 | 关系 |
|---|---|
../deftank/ |
提供配置文件,被 libf 中的参数读取模块使用 |
../datadir/ |
提供运行时查表数据(辐射数据、化学参数等) |
../util/ |
处理 libf 产生的输出数据 |
关键文件
| 文件 | 原因 |
|---|---|
| phymars/physiq_mod.F | 物理主入口,physiq() 是核心调度例程 |
| phymars/callradite_mod.F | 辐射计算入口 |
| phymars/watercloud_mod.F | 水云计算入口 |
| phymars/dust_param_mod.F90 | 尘埃参数化入口 |
| phymars/tracer_mod.F90 | 示踪剂系统 |
| aeronomars/photochemistry_mod.F90 | 光化学模块 |
| phymars/nltecool_mod.F | 热层 NLTE 冷却 |
典型运行流程
物理过程在主循环中被调用,基本流程:
初始化阶段:
- 读取配置参数
- 初始化辐射数据
- 初始化尘埃、水、CO2 等示踪剂
每时间步:
- 调用
physiq()主入口 - 辐射计算 (
callradite) - 尘埃 lifting 和传输
- 水循环(凝结、蒸发、云形成)
- CO2 循环(凝结、升华)
- 边界层/湍流混合
- 重力波拖曳
- 对流调整
- 示踪剂输运
- 调用
输出阶段:
- 诊断变量输出
- XIOS NetCDF 输出
复现要点
- 需要外部动力框架(如 LMDZ 通用动力核心)提供时间步进和网格
- 需要配置
callphys.def开启/关闭各物理过程 - 需要辐射数据文件(存在于 datadir 中)
- 不同配置级别(GCM5/GCM6/MCD5/MCD6)对应不同的物理模块组合
细节入口
本页只做 libf/ 目录总览;调用链、耦合方式和配置开关已拆到更细页面维护:
- 物理主调度见 physiq_mod,水循环和 CO2 循环的关键调用点见 physiq-water-cycle-callpoints.md 与 physiq-co2-cycle-callpoints.md。
dynphy_lonlat到phymars的 3D 耦合入口是call_physiq调用physiq,初始化入口是iniphysiq;对应页面见 callphysiq_mod、iniphysiq_mod。- 1D 模式入口是
testphys1d,初始化由init_testphys1d完成,随后每步直接调用physiq;对应页面见 testphys1d 和 init_testphys1d_mod。 - 配置读取和开关影响见 config-system.md、co2-cycle-config.md、water-cycle-config.md、testphys1d-config.md。