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)=0nqperes 加 1
某个已定义 tracer 名 当前 tracer 是子 tracer,iqpere(iq) 指向该父 tracer
找不到匹配父 tracer abort,提示 Un traceur est orphelin

构造直接子关系后,源码还沿 iqpere 向上回溯,累计每个父 tracer 的全部后代:

advection 约束

family tracer 会被输送内核用来保持比例或 carrier 关系,因此初始化阶段强制:

对象 允许 scheme
子 tracer iadv=10
有子 tracer 的父 tracer iadv=10iadv=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 中出现一次,源码要求:

  1. 所有 phase 都有同样的 isotope 数。
  2. 所有 phase 的 isotope 子 tracer 数相同。
  3. 不同 isotope 的 ntraceurs_zone 一致。
  4. 如果 phase 1 的某 isotope 计数既不是 0 也不是 1,则 abort。

这些检查通过后:

运行开关和映射表

ok_isotopes=.true. 时,infotrac_isoinit 通过 getin 读取:

开关 默认 作用
ok_iso_verif .false. 下游 advtrac/vlspltgen_p 可据此调用 isotope 检查
ok_init_iso .false. isotope 初值相关控制,具体物理含义待后续确认

随后填表:

下游使用

复现要点

相关页面

待确认