aeronomars 高层大气模块目录
路径
LMDZ.MARS\libf\aeronomars
职责
aeronomars 是 LMDZ.MARS 的高层大气模块目录,处理 80km 以上火星大气物理过程。该目录包含光化学、热层(thermosphere)、电离层(ionosphere)、分子扩散等高层大气现象的模拟。
目录内容
共 32 个文件,按功能分类如下:
1. 光化学
| 文件 |
作用 |
photochemistry_mod.F90 |
主光化学积分器;calchim 逐列调用,计算在线/离线光解、可选离子光电离、反应速率和隐式矩阵积分并写回 zycol |
photolysis_mod.F90 |
在线光解初始化和共享谱表模块;建立 nw=162 低分辨率波长网格,读取太阳通量、截面、量子产额和反照率,供 photolysis_online 消费 |
photolysis_online.F |
在线光解率计算模块;photolysis_online 消费 photolysis_mod 共享谱表,逐波长做两流辐射传输(Toon 1989 + 伪球面修正),累加 15 个光解率 v_phot;由 photochemistry_mod 在 jonline=.true. 时调用 |
photolysis.F90 |
离线光解查找表插值器;消费 chemistrydata_mod::jphot,按温度、SZA、CO2 柱、O3 柱和尘埃 5 维插值得基础 v_phot |
calchim_mod.F90 |
化学调度入口;firstcall 识别化学 tracer,选择在线/离线光解初始化,逐列调用 photochemistry、perosat、可选 chemthermos/deposition 并回写 dqchim |
chemthermos.F90 |
热层化学主例程;.not.unichim 时由 calchim_mod 逐列调用,校验 C/O/H/O3/N/ion tracer,构造数密度矩阵,调用 jthermcalc_e107 与 paramfoto_compact 并写回 zycol |
chemistrydata.F90 |
光解查找表数据模块;read_phototable 从 datadir 读取 jmars.20140930 表并广播,供 photolysis 插值 |
chemthermos_readini.F |
读取 chemthermos_reactionrates.def 的 61 反应 Arrhenius 参数到 param_v4_h::rcoef;由 calchim_mod firstcall 调用 |
perosat.F |
H2O2 饱和/凝结后处理;光化学后将超饱和 H2O2 向下层转移,底层超出量写入地表通量 |
paramfoto_compact.F |
热层光化学/离子化学积分器;消费 jthermcalc_e107 光吸收率、E107 分支比和 rcoef 反应速率,更新 chemthermos 的 rm 数密度矩阵 |
2. 热层(Thermosphere)
3. 电离层(Ionosphere)
| 文件 |
作用 |
iono_h.F90 |
电离层共享状态:18 个 *_eq 标志 + 27 个 tau* 反应系数,allocate_param_iono 分配,temp_elect 算电子温度 |
4. 分子扩散
| 文件 |
作用 |
moldiff.F |
原版(legacy)14 物种分子扩散模块(死代码,无调用方);Dickinson & Ridley 1972 α 矩阵 + LU + 三对角,含 Jeans 逃逸和 O 质量守恒;已被 moldiff_red/moldiff_MPF 完全取代 |
moldiff_red.F |
简化版 16 物种分子扩散;二元 dij 简化公式逐物种隐式三对角 + Jeans H/H₂/D 逃逸;thermosphere_mod 在 moldiff_scheme==1(非默认)下调用 |
moldiff_MPF.F90 |
MPF 16 物种分子扩散;Wilke 多组分扩散 + Krasnopolsky 涡流扩散 + Jeans H/H₂/D 逃逸 + 可选质量守恒修正;thermosphere_mod 在 moldiff_scheme==2(默认)下调用 |
moldiffcoeff.F |
14 物种二元分子扩散系数矩阵 dij(Nair 94,sqrt(mmol) 缩放);每次调用覆写 coeffs.dat;由 moldiff 调用 |
moldiffcoeff_red.F |
简化分子扩散系数 dij(Nair 94 变体);gcmind 由调用方传入,coeffs.dat 默认不写;由 moldiff_red/moldiff_MPF 调用 |
molvis.F |
分子黏性速度扩散;molvis_mod 按 conc_mod::Akknew/cpnew/rnew 把温度依赖热导率系数换算为黏性系数,用隐式三对角求解 u/v 风速 tendency,由 thermosphere_mod 在 callmolvis 下调用 |
5. 加热与传导
| 文件 |
作用 |
conduction.F |
分子热传导;conduction_mod 用隐式三对角(Thomas)按 conc_mod::Akknew/cpnew/rnew 求解垂直热传导倾向 zdtconduc,由 thermosphere_mod 在 callconduct 下调用 |
deposition.F |
干沉降(甲烷);当前成分更新被注释,但 vd/loss 仍按阻力相似法计算,6 小时测试赋值是注释行;calchim_mod 在 depos 开关下调用 |
intrplf.F |
一维线性插值(端点常数外推,支持升/降序);inichim_newstart 插值初始成分 |
6. 参数与数据
| 文件 |
作用 |
param_read.F |
旧版 EUV param_v5 参数读取;master 从 datadir/EUVDAT/param_v5 载入柱积分、光吸收、解离/电离效率和太阳通量修正表并广播 |
param_read_e107.F |
当前热层初始化使用的 E107 参数读取;读取 EUVDAT/param_v6、fit_js_e107.dat、e107_MY*.dat 和 Schunk & Nagy 分支比文件 |
param_v4_h.F90 |
热层 EUV/E107、反应速率、光解输出和产损数组共享状态模块 |
surfacearea.F |
气溶胶表面积计算模块;surfacearea 按微物理/简单云两种方案计算尘/冰颗粒总表面积密度 surfdust/surfice(m2/m3),由 physiq_mod 在 photochem 路径中、calchim 之前调用 |
types_asis.F90 |
ASIS 光化学反应索引类型;定义 z3spec/z4spec 和线程私有 indice_phot/indice_3/indice_4,供 photochemistry_mod 装配隐式矩阵 |
7. 初始化
| 文件 |
作用 |
inichim_newstart.F90 |
newstart/testphys1d 化学初始场构造;按 traceur.def tracer 名重建 igcm_*/mmol,读取 atmosfera_LMD_* 廓线并用 intrplf 插值到 GCM 层 |
关键模块
| 模块名 |
所在文件 |
作用 |
photochemistry_mod |
photochemistry_mod.F90 |
主光化学积分器;包装 photochemistry 及反应索引、速率、矩阵和 GCM/化学物种映射辅助例程 |
calchim_mod |
calchim_mod.F90 |
化学调度、化学倾向缓存与 ini/end_calchim_mod 分配释放 |
photolysis_mod |
photolysis_mod.F90 |
在线光解初始化和共享光谱数据模块;保存 nphot/wl/f/xs*/yield*/albedo 等 THREADPRIVATE 状态 |
photolysis_online_mod |
photolysis_online.F |
在线光解率计算模块;包含主例程和 12 个内部子例程,两流辐射传输累加 15 个光解率 |
thermosphere_mod |
thermosphere_mod.F |
热层物理过程总调度;EUV 加热 → 热传导 → 分子黏性 → 分子扩散 |
euvheat_mod |
euvheat.F90 |
EUV 加热模块 |
chemthermos_mod |
chemthermos.F90 |
热层化学主例程;包装 chemthermos,缓存 tracer 索引和热层物种槽位 |
inichim_newstart_mod |
inichim_newstart.F90 |
newstart/testphys1d 的化学 tracer 初始场构造 |
moldiff_mod |
moldiff.F |
原版 14 物种分子扩散(死代码,已被 moldiff_red/moldiff_MPF 取代) |
moldiff_MPF_mod |
moldiff_MPF.F90 |
MPF 16 物种分子扩散;Wilke 扩散 + 涡流扩散 + Jeans 逃逸 + 可选质量守恒修正 |
moldiff_red_mod |
moldiff_red.F90 |
简化版 16 物种分子扩散;二元 dij 逐物种三对角 + Jeans 逃逸 |
molvis_mod |
molvis.F |
分子黏性速度扩散 |
param_read_mod |
param_read.F |
EUVDAT/param_v5 参数表读取与 param_v4_h 广播初始化 |
param_read_e107_mod |
param_read_e107.F |
EUVDAT/param_v6 与 E107 太阳活动表读取;physiq_mod 在 callthermos 初始化分支调用 |
param_v4_h |
param_v4_h.F90 |
热层共享状态模块;定义 ninter/nabs/freccen/jfotsout/rcoef 和产损缓存,提供 fill_data_thermos/allocate_param_thermos |
paramfoto_compact_mod |
paramfoto_compact.F |
热层光化学/离子化学积分与 phdisrate 光解/电离率转换 |
surfacearea_mod |
surfacearea.F |
气溶胶表面积计算;按微物理/简单云两种方案求尘/冰颗粒总表面积密度 |
types_asis |
types_asis.F90 |
ASIS 反应索引类型与共享数组模块;photochemistry_mod::indice 分配填充,fill_matrix 消费 |
iono_h |
iono_h.F90 |
电离层头文件/模块 |
与其他目录的关系
| 相关目录 |
关系 |
../phymars/ |
phymars 调用 aeronomars 处理高层大气;共享 NLTE 模块 |
../../deftank/ |
读取 callphys.def 配置(MCD 配置开启) |
../../datadir/ |
读取化学参数数据 |
调用关系
aeronomars 模块主要通过 phymars/physiq_mod.F 间接进入:
physiq_mod.F 在 photochem 分支中先调用 surfacearea,再调用 calchim;calchim_mod.F90 负责在线/离线光解、photochemistry、可选 chemthermos 和 deposition。
physiq_mod.F 在 callthermos 分支中调用 thermosphere;thermosphere_mod.F 再按 calleuv、callconduct、callmolvis、callmoldiff 分别调用 EUV 加热、热传导、分子黏性和分子扩散。
- 分子扩散默认
moldiff_scheme=2(MPF 方案),可由 getin_p("moldiff_scheme", ...) 改为 legacy 方案。
源码入口依据:physiq_mod.F:2208-2223、physiq_mod.F:2280-2288、calchim_mod.F90:765-915、thermosphere_mod.F:67-122。
典型运行流程
初始化:
时间循环中:
- 光化学计算(光解、化学反应)
- 电离层计算(电离、复合)
- 热层加热(EUV 吸收、NLTE 冷却)
- 分子扩散(向上扩散)
复现要点
- 需要 MCD5 或 MCD6 配置(callphys.def 中开启化学和热层)
- 需要化学参数数据文件
- 热层计算通常需要 73 层垂直网格(可达 ~250km)
- 光化学依赖太阳辐射和大气成分
细节入口