phymars 核心物理模块目录

路径

LMDZ.MARS\libf\phymars

职责

phymars 是 LMDZ.MARS 的核心物理模块目录,包含火星大气物理过程的全部实现。该目录主要负责 80km 以下大气层的物理计算,包括辐射、尘埃、水循环、CO2 循环、云、边界层、对流、重力波等过程。

目录内容

共 164 个文件(含子目录 dyn1d),按功能分类如下:

1. 主入口

文件 作用
physiq_mod.F 物理主入口,包含 physiq() 子例程;按源码顺序调度 firstcall/restart、辐射、尘埃、PBL、热羽流、对流、水循环、CO2 循环、化学、热层、地表/土壤和诊断输出

2. 辐射过程

文件 作用
callradite_mod.F 辐射调用入口,调度气溶胶光学准备、长波 lwmain 和短波 swmain
lwmain_mod.F 长波 LTE 辐射主程序;组织 Planck 预处理、CO2/aerosol 吸收量、交换率缓存刷新、通量汇总和半隐式冷却率修正
swmain_mod.F 短波辐射主程序;按 swrtype 调度 Fouquart/Toon 两太阳谱段 solver,缩放上下行短波通量并计算 dtsw
lwxb.F, lwxd.F, lwxn.F 长波辐射计算;lwxb.F 负责地面/空间边界交换系数,lwxd.F 负责远距离层间交换系数,lwxn.F 负责相邻层子层积分交换系数
lwb.F, lwdiff.F, lwflux.F, lwi.F, lwtt.F, lwu.F, yomlw_h.F90 长波辐射辅助;Planck 函数、散射通量、通量/冷却率、半隐式修正、透过率近似、吸收量准备和长波共享缓存
swr_toon.F, swr_fouquart.F, swrayleigh.F 短波辐射算法;Fouquart 连续散射、Toon two-stream 和 Rayleigh 柱光学厚度辅助
aeropacity_mod.F 气溶胶不透明度;逐种气溶胶逐层算可见光光学厚度
aeroptproperties.F 气溶胶光学属性;尺寸分布积分得散射参数
blendrad.F LTE/NLTE 辐射加热率混合
updatereffrad_mod.F 更新辐射使用的粒子有效半径和有效方差
aerave.F, suaer.F90 气溶胶光学属性带平均和查找表加载

3. 尘埃循环

文件 作用
dust_param_mod.F90 尘埃循环配置开关与缩放状态枢纽
dust_scaling_mod.F90 尘埃光学厚度缩放(三模式)
dust_windstress_lift.F90 风应力起尘源项(White 1979)
dustdevil.F90 尘卷风起尘参数化(Renno 1998)
dust_coagulation_mod.F90 尘埃凝并
compute_dtau_mod.F90 尘埃地表注入调度(dtau→dustliftday)
read_dust_scenario_mod.F90 读取并插值 dust_*.nc 尘埃场景,向地表注入和辐射缩放路径提供目标柱厚度
dust_rad_adjust_mod.F90 尘埃辐射调整(GCM v6 仅辐射缩放)
rocketduststorm_mod.F90 突发沙尘暴
calcstormfract_mod.F90 沙尘暴分数计算
newsedim_mod.F 沉降计算

4. 水循环

文件 作用
watercloud_mod.F 水云计算
watersat_mod.F90 水饱和计算
tcondwater.F90 水凝结
waterice_tifeedback_mod.F90 水冰热惯量反馈
improvedclouds_mod.F90 改进的云参数化
simpleclouds_mod.F 简化云方案
sig_h2o.F90 水冰-空气表面张力线性公式;供 nuclea 的临界胚胎半径/能垒和 improvedclouds 的 Kelvin 饱和修正使用。
hdo_surfex_mod.F HDO 地表-大气通量计算;基于 H2O 通量和同位素分馏,由 vdifc 调用

5. CO2 循环

文件 作用
co2condens_mod.F CO2 凝结
co2sat.F CO2 饱和
co2snow.F CO2 雪
co2cloud_mod.F90 CO2 云
improvedco2clouds_mod.F90 改进的 CO2 云
tcondco2.F90 CO2 凝结温度
nucleaco2.F90 CO2 成核
massflowrateco2.F90 CO2 质量流率
density_co2_ice.F90 CO2 冰密度

6. 边界层与湍流

文件 作用
turb_mod.F90 湍流/PBL 共享状态模块;保存 q2ustar/wstar/tstar、热羽流诊断和感热通量缓存,并提供分配/释放入口
yamada4.F Mars 版 Mellor-Yamada 湍流闭合;更新 q2/km/kn/kqvdifc 垂直扩散使用
lmdz_atke_exchange_coeff.F90 ATKE 1.5 阶湍流闭合方案核心模块;计算湍流 Km/Kh 交换系数和 TKE 演化,支持多种数值格式和混合长度参数化
lmdz_atke_turbulence_ini.F90 ATKE 湍流初始化与参数共享模块;读取 iflag_atkeatke_* 配置键,派生稳定度函数常数、混合长度和 TKE 扩散参数
lmdz_call_atke.F90 ATKE 调用接口模块;协调核心计算和可选的显式风切变预测,支持前向-后向时间步进
vdifc_mod.F, vdif_kc.F, vdif_cd_mod.F90 垂直扩散主流程、K 系数和地表层交换系数;vdifc_mod.F 还耦合尘埃注入、H2O/HDO 地表交换与坡面/地下冰通量

7. 重力波拖曳

文件 作用
sugwd.F90 地形重力波参数初始化层;根据半层 sigma 坐标写入 yoegwd_h 调参常量和安全阈值
yoegwd_h.F90 地形重力波拖曳共享调参状态;保存 SUGWD 写入的 drag 系数、Richardson 阈值、安全下限和 NKTOPG
gwprofil_mod.F90 地形重力波 stress profile 计算;按临界层、波破碎判据和阻塞层插值重算 ZTAU
gwstress_mod.F90 重力波应力
orodrag_mod.F90 地形重力波 / 次网格地形拖曳核心;调用 OROSETUPGWSTRESSGWPROFIL 得到 ZTAU,再计算 U/V/T tendency
orosetup.F90 地形重力波拖曳预处理;计算 IKNU/IKENVH/IKCRITH/ICRIT 层索引、低层风、BV/ZRHO/ZVPH、地形方向组合量和阻塞层 ZZDEP
calldrag_noro_mod.F90 地形重力波/次网格地形拖曳调用
drag_noro_mod.F90 地形重力波/次网格地形拖曳的 ORODRAG 包装层;翻转垂直层序、构造 zgeom 并返回每步增量
nonoro_gwd_mix_mod.F90 非地形重力波诱导混合方案;在 calllott_nonorocalljliu_gwimix 为真时追加温度、纬向风和 tracer 混合 tendency
nonoro_gwd_ran_mod.F90 非地形重力波随机拖曳方案;在 calllott_nonoro 分支内构造离散随机 GW、推进 EP flux 并返回 U/V 动量拖曳 tendency

8. 对流

文件 作用
convadj.F 干对流调整;按 calladjphysiq 中混合不稳定层段并输出风、焓和 tracer tendency
calltherm_interface_mod.F90 热羽流模型与 physiq 的接口层,负责子步长调度、热羽流 tendency 单位转换和 wstar 反馈
thermcell_main_mars.F90 热羽流主求解器;在子步长内计算热羽流高度、质量通量、温度/CO2 演化和诊断通量
thermcell_dqup.F90 热羽流质量通量已知后的被动变量上升输送算子
call_dayperi.F 1D/testphys 轨道近日点日期换算

9. 示踪剂系统

文件 作用
tracer_mod.F90 示踪剂主模块
initracer.F90 tracer 名称识别、igcm_* 索引和物性初始化
parse_tracer_file.F90 新格式 tracer.def 解析接口
parse_traceur_file.F90 旧格式 traceur.def 解析接口
tracer_mass_fixer_dyn_mod.F90 示踪剂质量修正

10. 初始化

文件 作用
phyetat0_mod.F90 物理状态初始化;读取 startfi.nc 或 no-startfi 缺省路径,恢复地表、土壤、坡面、tracer、古气候和 restart 记忆状态
phyredem.F90 物理 start/restart 写出;写控制表、网格、地表、土壤、tracer、尘埃、古气候和质量修正状态
phys_state_var_init_mod.F90 物理状态变量初始化;读取 startfi.ncnslope 维度,初始化常数/时间状态,并按 ngrid/nlayer/nq/nslope 分配共享物理数组
iniwrite.F 传统 diagfi / diagmicrofi NetCDF 初始化:定义坐标、垂直层、控制参数、土壤深度、网格面积和地表位势
iniwritesoil.F90 土壤初始化写入
iostart.F90 物理重启文件 NetCDF I/O 核心模块;提供 startfi.nc 读取和 restartfi.nc 写入的统一接口,支持并行环境下的数据分发和重排
surfini_mod.F90 水冰帽初始化;按 icelocationmode 从 surface.nc、预定义表、经纬度、startfi 或热惯量生成 watercaptag/dryness
surfdat_h.F90 地表共享状态模块;保存反照率、地形统计、水冰帽、坡面地表和山顶地形数组,并提供分配/释放例程

11. 输出与诊断

文件 作用
writediagfi.F 传统 diagfi.nc 诊断写入后端;按采样间隔追加 0D/1D/2D/3D 变量
writediagmicrofi.F 微物理子步 diagmicrofi.nc 诊断写入后端;在 Time 外增加 microtime 维度
wstats_mod.F90 统计日 stats.nc 生成模块;累加 12 个日内时刻的均值和标准差
check_fields.F90 physiq 步首/步尾可选场检查;检查温度、风、表面压力和 tracer 的 NaN/越界值
writediagsoil.F90 土壤诊断
xios_output_mod.F90 XIOS 输出封装;初始化 XIOS 轴/domain/calendar 并发送 0D/1D/2D/3D 字段
write_output_mod.F90 通用输出封装;按类型/维度分派到 writediagfiwritediagsoil 和可选 XIOS

12. NLTE(非局部热力学平衡)

文件 作用
nltecool.F nltemodel=0/1 的 CO2 15 微米 NLTE cool-to-space 冷却率模块;使用内置 escape function / VMR 表或动态 tracer 成分,直接输出 K/s
nlte_calc.F NLTE 光学厚度、escape probability 和 Curtis-matrix 系数计算;为 nlte_tcool_mod.F 生成 c110/vc110/c121/vc121/taustar*
nlte_aux.F NLTE 辅助例程集合;读取/恢复历史谱线表,提供温度/高度/多维查表、Voigt 等效线宽、escape probability 归一化、LU 求解和平滑工具
nlte_commons_h.F90 NLTE 15 微米 CO2 共享状态模块;保存谱线常数、查表、主网格/CTS 网格剖面、Curtis matrices、escape probability、碰撞率和历史谱线缓存
nlte_paramdef_h.F90 NLTE 15 微米 CO2 编译期参数定义;保存网格维度、压力边界、谱带/同位素数量、辐射常数、波数表和同位素混合比
nlte_setup.F NLTE 15 微米 CO2 运行时表初始化;读取 NLTEDAT 谱线、Tstar/VC、历史谱线表并计算温度相关碰撞速率
nlte_tcool_mod.F nltemodel=2 的 CO2 15 微米 NLTE 快速冷却率模块;构造 NLTE/CTS 网格、求解 CZA 耦合矩阵、拼接 CTS 顶层冷却率并回插到 GCM 网格
nlteparams_h.F90 LTE/NLTE 辐射倾向过渡参数;定义 ptrans=0.1 Pazw=0.5pminte=0.4*ptranszwi=2/zw,供 blendradnlthermeq 使用
nlthermeq.F LTE/NLTE 过渡层选择器;用 pminte 和当前层压强剖面计算 yomlw_h::nlaylte,限制 LTE 辐射覆盖层数

13. 配置与公共模块

文件 作用
conf_phys.F 物理配置入口;读取 callphys.def/radia.def,设置 callkeys_mod、尘埃/水/CO2/热层开关,分配气溶胶 scatterer 名称并执行依赖校验
callkeys_mod.F90 物理包运行时开关与共享参数模块;保存辐射、尘埃、水循环、CO2 云、PBL 和高层大气分支开关
def_var.F90 NetCDF 变量定义辅助例程;用 NF_FLOAT 创建变量并写 title/units 属性,供 diagfi、微物理诊断、土壤诊断和 archive 输出首次定义变量时调用
dimphy.F90 本地物理网格维度共享状态;保存 klon/klev/klevp1/klevm1,由 Init_dimphy 初始化并声明为 OpenMP threadprivate
conc_mod.F90 大气混合物热力学属性缓存;保存 mmean/Akknew/cpnew/rnew,由初始化填常数背景并在 photochemcallthermos 路径中按 tracer 组成更新
comcstfi_h.F90 公共物理常数;保存 rad/g/r/cpp/rcp/mugaz/omeg/pi
comgeomfi_h.F90 公共几何三角函数缓存;保存 sinlat/coslat/sinlon/coslon,由初始化路径从物理网格经纬度填充
comm_wrf.F90 MESOSCALE/WRF 风格输出缓存;保存 HR_SW/HR_LW/TAU_DUST/RDUST/MTOT/ICETOT 等诊断数组
comsoil_h.F90 公共土壤
comtherm_h.F90 热羽流模型编译期参数和调参常数;定义 nsplit_thermals、tracer/TKE 输送开关、卷入/脱离/下沉气流/速度方程常数,供 calltherm_interfacethermcell_main_mars 读取
comsaison_h.F90 公共季节和太阳几何共享状态;保存 dist_sol/declin/zls/mu0/fract/local_time,由 physiq 每步写入后供辐射、尘暴、山顶尘流和尘埃注入读取
datafile_mod.F90 运行时外部数据目录共享模块;保存 datadir 默认路径并由 callphys.def 覆盖,供 CO2 云、极冠反照率、尘埃场景、辐射、化学和初始化读表路径使用
comslope_mod.F90 斜坡
planete_h.F90 行星轨道和湍流下限共享状态;保存 aphelie/periheli/year_day/peri_day/obliquit,由 iniorbit 派生 e_elips/p_elips/lsperi,供 solarlongorbite 使用
planetwide_mod.F90 全行星最大值、最小值和求和规约工具;并行路径通过 gather、master intrinsic 规约和 bcast 得到跨物理网格一致的标量结果。
time_phylmdz_mod.F90 物理时间共享状态模块;保存 daysec/dtphys/steps_per_sol、运行起止日和诊断/restart 调度标量。
turb_mod.F90 湍流/PBL 共享状态模块;保存界面层 TKE、surface-layer 速度/温度尺度和热羽流反馈诊断数组。
dimradmars_mod.F90 辐射维度、气溶胶 scatterer 和光学查找表共享状态
yoegwd_h.F90, yomlw_h.F90 GWD/LW 头文件;yoegwd_h 保存地形 GW 链共享调参变量,yomlw_h 保存长波 LTE 辐射共享系数和交换率缓存

14. 土壤与表面

文件 作用
soil.F 土壤模型
soil_settings.F 土壤设置
soilwater.F90 土壤水
albedocaps.F90 极冠反照率
geticecover.F90 Titus/TES CO2 季节极冠覆盖掩膜;tituscap 分支中由 physiq 调用并写入 qsurf_tmp(:,igcm_co2)

15. 轨道与太阳

文件 作用
orbite.F 轨道几何换算;physiqcallrad 分支用 zls 调用它,计算 dist_soldeclin,供太阳角、辐射通量缩放、近红外 CO2 和坡面/热层路径使用
solang.F 日变化太阳角计算;按经纬度三角缓存、太阳赤纬和时角写出每格点 mu0 与 0/1 日照标志 fract
solarlong.F 火星日期到太阳经度转换;读取 planete_h 轨道参数,用 Kepler 方程 Newton 解得到 Ls

16. 其他物理

文件 作用
nirdata.F90, nirco2abs.F 近红外 CO2 吸收;nirdata.F90 读取并保存 NLTE 修正表,nirco2abs.F 计算近红外 CO2 加热率
growthrate.F 水冰晶增长阻力和水汽扩散系数;improvedclouds 用其输出 res 进入隐式冰增长/升华公式
nuclea.F 水冰异质成核率;improvedclouds 用它按水汽分压、饱和比和尘核 bin 计算 rate,再把尘埃转入 CCN
microphys_h.F90 水冰/CO2 微物理共享常数和线程私有半径网格头文件;定义 nbin_cldnbinco2_cld、分子常数、接触参数和 rad_cld/rad_cldco2
pbl_parameters_mod.F90 PBL 参数
topmons_mod.F90 顶层单体
paleoclimate_mod 古气候/lag-layer 共享状态模块;保存 paleoclimatelag_layerinclude_waterbuoyancy 开关,以及地下冰深度、扩散系数和地下冰交互总通量数组
flusv.F, cvmgt.F, mucorr.F 辅助计算;flusv.F 是长波红外散射通量求解器,cvmgt.F 是实数条件选择函数,mucorr.F 在非日变化分支计算等效太阳角和日照比例
interp_line.F 通用线性插值工具;在有序源数据点之间进行线性插值
tabfi.F 物理控制表读取和默认常数初始化;读取 controle 数组、写入公共物理/轨道/地表参数,并可串行交互修改

17. dyn1d 子目录

1D 测试模型相关文件,见 dyn1d/index.md。已建页面:

文件 作用
dyn1d/abort_gcm.F 指向 LMDZ.COMMON/libf/dyn3d/abort_gcm.F 的中止例程路径 stub,供 1D 初始化路径调用 abort_gcm
dyn1d/comconst_mod.F90 指向 LMDZ.COMMON/libf/dyn3d_common/comconst_mod.F90 的动力常数模块路径 stub;目标模块保存维度、时间步、行星常数、耗散和顶层 sponge 参数。
dyn1d/comvert_mod.F90 指向 LMDZ.COMMON/libf/dyn3d_common/comvert_mod.F90 的垂直坐标模块路径 stub;保存 ap/bp/aps/bps、参考压力和伪高度,供 1D 压力层构造。
dyn1d/control_mod.F90 指向 LMDZ.COMMON/libf/dyn3d_common/control_mod.F90 的公共动力控制状态 stub;保存 3D GCM 日期、步频、输出和模式开关,当前 1D 主程序不直接读取。
dyn1d/disvert_noterre.F 指向 LMDZ.COMMON/libf/dyn3d_common/disvert_noterre.F 的非地球垂直离散例程 stub;读取 esasig.defz2sig.def 生成 hybrid/sigma 压力坐标系数。
dyn1d/ener_mod.F90 指向 LMDZ.COMMON/libf/dyn3d_common/ener_mod.F90 的公共动力能量诊断状态 stub;保存质量、能量、涡度/熵、角动量和 RMS 诊断量。
dyn1d/infotrac.F90 指向 LMDZ.COMMON/libf/dyn3d_common/infotrac.F90 的 tracer 元数据模块 stub;dyn1d 初始化用它保存 traceur.def 读取出的 tracer 名和父子关系。
dyn1d/init_testphys1d_mod.F90 1D testphys1d 初始化主例程;串联配置、traceur.def、restart/profile、垂直坐标、几何、坡面、地表、土壤、tracer 和水控制状态。
dyn1d/logic_mod.F90 指向 LMDZ.COMMON/libf/dyn3d/logic_mod.F90 的动力逻辑状态 stub;当前 1D 初始化用 hybrid 选择垂直坐标。
dyn1d/mod_const_mpi.F90 指向 LMDZ.COMMON/libf/dyn3dpar/mod_const_mpi.F90 的并行常量 stub;COMM_LMDZ 在 XIOS 分支传给 1D physics distribution 初始化。
dyn1d/mod_interface_dyn_phys.F90 指向 LMDZ.COMMON/libf/dynphy_lonlat/mod_interface_dyn_phys.F90 的动力-物理接口 stub;并行分支建立物理列到动力网格 (i,j) 的映射。
dyn1d/parallel_lmdz.F90 指向 LMDZ.COMMON/libf/dyn3dpar/parallel_lmdz.F90 的并行运行时 stub;testphys1d 调用 init_parallel 初始化 rank/线程状态。
dyn1d/profile_temp_mod.F90 1D 温度廓线构造模块;提供常温、Savidjari、Lindner、逆温、Seiff、Gaussian 和 profile_temp 文件读取分支。
dyn1d/read_profile_mod.F90 1D tracer profile 读取模块;读取 profile_<tracer> 的 surface-first 廓线格式,并处理 CO2/HDO/dust 缺文件默认值。
dyn1d/serre_mod.F90 指向 LMDZ.COMMON/libf/dyn3d_common/serre_mod.F90 的公共动力 zoom/水平网格状态 stub;保存 clon/clat/grossismx/grossismy/dzoomx/dzoomy/taux/tauy 等参数。
dyn1d/testphys1d.F90 1D 单柱物理测试主程序;检查 run.def/start 文件、调用初始化、写 startfi.nc、逐步调用 physiq 并推进风、温度、表压和 tracer。
dyn1d/writerestart1D_mod.F90 1D 文本 restart 写出模块;将表压、tracer、风和温度按 start1D.txt 兼容顺序写入 restart1D.txt

与其他目录的关系

相关目录 关系
../aeronomars/ 调用光化学、热层过程
../dynphy_lonlat/ 被物理调用接口调用
../../deftank/ 读取 callphys.def 配置
../../datadir/ 读取辐射、尘埃等数据

关键文件

文件 原因
physiq_mod.F 物理主入口,physiq() 是核心调度例程;见 physiq_mod
callradite_mod.F 辐射计算入口
dust_param_mod.F90 尘埃循环配置开关与缩放状态枢纽,见 dust_param_mod
watercloud_mod.F 水云计算
co2condens_mod.F CO2 凝结
tracer_mod.F90 示踪剂系统
turb_mod.F90 湍流/PBL 共享状态

典型物理调用链

physiq()  (physiq_mod.F)
├── callradite()         辐射
│   ├── lwmain()         长波
│   └── swmain()         短波
├── 尘埃lifting          dust_param_mod
├── 水循环               watercloud_mod / watersat_mod
├── CO2循环              co2condens_mod / co2cloud_mod
├── 湍流                 turb_mod / lmdz_call_atke
├── 重力波               sugwd_mod
├── 对流                 convadj_mod / thermcell_main_mars
├── 边界层               vdif_kc / vdifc_mod
└── NLTE                 nltecool (80km以上)

复现要点

细节入口