infotrac 父子 tracer 与 isotope 表
输入范围
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dyn3d_common\infotrac.F90
Mars 运行参与度:条件经过。Mars 常规 tracer 配置必经父子表构造;isotope 表只在 traceur.def 中存在水同位素命名和对应 tracer family 时启用。
父子 tracer 约定
traceur.def 读取后的 tnom_transp(iq) 决定 family 关系:
| carrier | 结果 |
|---|---|
air |
当前 tracer 是父 tracer,iqpere(iq)=0,nqperes 加 1 |
| 某个已定义 tracer 名 | 当前 tracer 是子 tracer,iqpere(iq) 指向该父 tracer |
| 找不到匹配父 tracer | abort,提示 Un traceur est orphelin |
构造直接子关系后,源码还沿 iqpere 向上回溯,累计每个父 tracer 的全部后代:
nqfils(ipere):直接子 tracer 数。nqdesc(ipere):直接和间接后代总数。nqdesc_tot:所有父子/后代关系总数。iqfils(:,ipere):先记录直接子,再被后代累计逻辑重写/扩展为后代表。
advection 约束
family tracer 会被输送内核用来保持比例或 carrier 关系,因此初始化阶段强制:
| 对象 | 允许 scheme |
|---|---|
| 子 tracer | iadv=10 |
| 有子 tracer 的父 tracer | iadv=10 或 iadv=14 |
如果子 tracer 使用其他 scheme,或父 tracer 不在 10/14 内,infotrac_init 直接 abort。
isotope 识别
infotrac_isoinit(tnom_0,nqtrue) 在父子表之后执行。它使用固定 isotope 名:
eau, HDO, O18, O17, HTO
扫描范围是 iq=nqo+1,nqtot,即跳过水相本身。识别有两类:
| 类型 | 条件 | 写入 |
|---|---|---|
| isotope tracer | 名称等于 水相名_isotope名 |
iso_num/iso_indnum/phase_num |
| isotope 子 tracer | 当前 tracer 有父 tracer,且父 tracer 名等于 水相名_isotope名 |
iso_num/iso_indnum/zone_num/phase_num |
一致性检查
若某 isotope 在第一个 phase 中出现一次,源码要求:
- 所有 phase 都有同样的 isotope 数。
- 所有 phase 的 isotope 子 tracer 数相同。
- 不同 isotope 的
ntraceurs_zone一致。 - 如果 phase 1 的某 isotope 计数既不是 0 也不是 1,则 abort。
这些检查通过后:
niso是启用的 isotope 种数。ntraceurs_zone是每个 isotope 的子 tracer zone 数。ntraciso=niso*(ntraceurs_zone+1)。ok_isotopes表示是否有 isotope。ok_isotrac表示是否有 isotope 子 tracer zone。
运行开关和映射表
当 ok_isotopes=.true. 时,infotrac_isoinit 通过 getin 读取:
| 开关 | 默认 | 作用 |
|---|---|---|
ok_iso_verif |
.false. |
下游 advtrac/vlspltgen_p 可据此调用 isotope 检查 |
ok_init_iso |
.false. |
isotope 初值相关控制,具体物理含义待后续确认 |
随后填表:
iqiso(ntraciso,nqo):从 isotope/zone/phase 组合映射回 tracer 序号。index_trac(ntraceurs_zone,niso):从 zone 和 isotope 序号给出iqiso的行索引。tnat和alpha_ideal保存自然丰度/理想分馏常数类默认值。
下游使用
- advtrac 串并行对照 在
ok_iso_verif为真时调用 isotope 检查。 - vlspltgen_p 使用 family 表在并行 Van Leer 分裂输送中处理父子 tracer。
dyn3d/vlspltqs.F、dyn3dpar/vlsplt_p.F等也通过nqfils/nqdesc/iqfils保持饱和/比例输送路径的一致性。
复现要点
tnom_transp中的父 tracer 必须已经出现在 tracer 列表中,否则会被判为孤儿。- isotope 名称识别是字符串规则,不是配置表查找;水相名、下划线和 isotope 后缀必须匹配。
ok_iso_verif不是自动随 isotope 开启而开启;它需要getin配置。
相关页面
待确认
tnat/alpha_ideal的单位和 Mars isotope 物理解释需要物理包页面补充。iqfils在直接子表和后代表之间复用的最终语义,应在 Van Leer family transport 重点页/细节页中再验证。