readTracFiles_mod.f90
源码路径:LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\readTracFiles_mod.f90。 Mars 运行参与度:条件经过;Mars tracer 配置、同位素和多相 tracer 可通过该 parser 层进入 COMMON。
文件定位
大型 tracer 描述文件解析器会把旧式 traceur.def、新式多 section tracer.def、以及 tracer_<component>.def 统一整理成 trac_type 数组,并补全 parent/generation、phase、metadata key、同位素族和兼容命名。
公开对象
| 类别 | 符号 | 作用 |
|---|---|---|
| tracer 类型 | trac_type, tracers |
保存 name、component、parent、type、phase、generation、children/descendants、physics flag、isotope 索引。 |
| 主入口 | testTracersFiles, readTracersFiles |
检测并读取 tracer 文件。 |
| 关系处理 | setGeneration, indexUpdate |
计算 parent/child/descendant 和索引。 |
| key 数据库 | keys_type, addKey, delKey, getKey, getKeysDBase, setKeysDBase |
管理 key/value metadata。 |
| phase | old_phases, known_phases, phases_names, phases_sep, nphases |
phase 识别和 suffix。 |
| isotope | isot_type, processIsotopes, isoSelect, isoFamilies |
isotope family、zone、phase、tagging tracer 和 iq 映射。 |
输入模式
| 模式 | 文件 | 位置 | 行为 |
|---|---|---|---|
| old | traceur.def |
324 | 旧格式。 |
| new multi-section | tracer.def |
325 | 单文件多 section。 |
| component files | tracer_*.def |
319, 335 | 每个 component 一个文件。 |
第 183 行注释列出的核心 key:parent、phases、hadv、vadv、type。
处理流程
testTracersFiles()
-> fType = 1/2/3
readTracersFiles()
-> old traceur.def: 逐行 removeComment/parse,处理 H2O/HNO3 兼容
-> new tracer.def 或 tracer_<component>.def: feedDBase
-> checkTracers: parent/orphan/generation/phase 检查
-> expand phases
-> sort + indexUpdate
-> processIsotopes
关键位置:第 218-279 行处理 old 文件,第 279 行处理 new multi-section,第 431 行调用 removeComment,第 631-661 行检查未知 phase,第 720-786 行展开 phases。
兼容命名
H2O 旧名到新名:eau -> H216O、HDO -> HDO、O18 -> H218O、O17 -> H217O、HTO -> HTO。 REPROBUS HNO3:HNO3_g -> HNO3、HNO3 -> HNO3tot。
复现要点
- 先确认实际存在的 tracer 文件模式。
- 比较 tracer 顺序时必须在
indexUpdate后比较。 - phase 报错时确认
known_phases='glsbfc'。 - start/restart 兼容问题优先查 H2O isotope 和 HNO3 映射。