util toolchain
页面定位
本页把 LMDZ.MARS/util 下已经完成的工具页串成离线工作流。单个工具的逐行逻辑仍见 util 目录页 和各文件页;本页关注工具之间的输入输出顺序、变量契约和复现风险。
util 工具不参与 GCM 主积分。它们读取 diagfi.nc、stats.nc、concat.nc、Xhistins.nc、startfi.nc、start_archive.nc 等文件,把模式输出转换为可画图、可观测对比、可柱积分或可再启动的中间产物。
总览
| 工作流 | 起点 | 典型工具链 | 结果 |
|---|---|---|---|
| 常规输出整理 | 多段 diagfi*.nc、stats*.nc 或 Xhistins.nc |
concatnc -> zrecast -> localtime / lslin / solzenangle / extract | 连续时间轴、物理垂直坐标、固定本地时或固定太阳天顶角输出。 |
| 观测比较 | GCM 输出 + 观测分箱或站点位置 | check_co2cycle、simu_MCS、extract | Viking/InSight 地表压力、MCS 分箱场、点值或廓线 ASCII。 |
| 气溶胶和柱量诊断 | GCM 4D tracer、rho、有效半径、光学表 |
aeroptical + aeropt_mod、gencol | 气溶胶消光/吸收不透明度、可选光学厚度、柱密度文件。 |
| 初始场和 1D 输入 | startfi.nc、start_archive.nc 或 3D/4D 输出 |
expandstartfi、extractcolumnfor1D、startarchive2icosa | 展开的经纬网格初始场、profile_* 1D 输入、ICOSA/DYNAMICO 初始文件。 |
| 派生动力诊断 | diagfi、stats 或 concat 类文件 |
streamfunction | 纬向流函数、角动量和纬向平均风/温度/密度。 |
常规输出整理链
1. 拼接时间轴
concatnc 是常见第一步。它把连续模拟段或分段输出按时间维合并为 concat.nc,并可选择变量、输出 sol、ls 或 adls 类时间轴。
复现要点:
- 输入文件必须共享兼容的空间维度和变量定义。
- 自动化运行时保留实际使用的
concatnc.def,因为变量选择和时间轴选项来自标准输入。 - 后续工具通常假设拼接后的时间轴连续;缺段会传导到本地时、Ls 或 MCS 分箱插值结果。
2. 转换垂直坐标
zrecast 把混合坐标输出转换到压力、areoid 高度、本地地表高度或距行星中心半径坐标。对科学图像、点值抽取和观测廓线比较,这一步通常比直接使用混合层更可复现。
输入契约:
| 必需信息 | 来源 |
|---|---|
地表压力 ps |
输入文件或辅助文件。 |
温度 temp |
输入文件,用于静力或高度转换。 |
垂直坐标 aps/bps 或 sigma |
输入文件。 |
地表位势或高度 phisinit |
输入文件,或按工具回退规则从 diagfi.nc / phisinit.nc 查找。 |
3. 采样到分析坐标
转换后可按目标选择后续工具:
| 目标 | 工具 | 说明 |
|---|---|---|
| 固定本地时 | localtime | 把变量插值到指定 LT,输出 *_LT.nc。 |
| 线性太阳经度 | lslin | 插值或平均到固定 Ls 步长,适合季节分箱。 |
| 固定太阳天顶角 | solzenangle | 反解晨侧/昏侧本地时并插值,输出晨/昏文件。 |
| 点值或廓线 ASCII | extract | 从 zrecast 后文件中按 lon lat alt Ls LT 抽取。 |
顺序建议:先 concatnc,再 zrecast,最后做 LT/Ls/SZA/点位采样。若先按 LT 或 Ls 重排,再改变垂直坐标,会让缺测处理和插值顺序更难复现。
观测比较链
CO2 cycle 站点压力
check_co2cycle 读取 GCM 地表压力、CO2 冰库存和站点高度信息,把模型场插值到 Viking 1/2 与 InSight 位置,输出站点压力、全球平均地表压力、CO2 冰等效压力、日平均和谐波重建。
适用场景:
- 快速检查 CO2 cycle 是否给出合理的年周期地表压力。
- 比较不同运行配置下 CO2 inventory、极冠凝结和站点压力相位。
MCS 分箱模拟
simu_MCS 是 MRO/MCS observer simulator。它读取 MCS 分箱观测文件和 GCM 输出,把 GCM 温度、尘埃或水冰变量按 MCS 的经纬度、高度、Ls、昼夜与本地时分箱重采样。
关键契约:
- GCM 文件必须覆盖 MCS Ls bin 对应的 sol 区间。
- MCS 与 GCM 的 altitude 坐标类型必须一致,源码按 altitude
units判断压力坐标或高度坐标。 - 尘埃和水冰不透明度计算依赖
rho以及dso/dsodust/dustq/h2o_ice等变量。 - 昼夜两遍会分别使用 d* 和 n* 观测变量。
点位或廓线比较
extract 适合小规模观测点或站点廓线对比。推荐先用 zrecast 把文件转为压力或高度坐标,再按观测点的 lon lat alt Ls LT 抽取 ASCII。
气溶胶和柱量诊断链
aeroptical 与 aeropt_mod 读取气溶胶质量混合比、有效半径、空气密度和 ASCII 光学性质表,计算消光或吸收不透明度。若配置选择输出柱积分,还会生成光学厚度类结果。
gencol 则从质量混合比、体积混合比或浓度变量计算柱密度,适合把 tracer 三维场压缩成二维柱量对比产品。
常见组合:
- 对 dust、水冰或 CO2 冰相关 tracer 用 aeroptical 得到层不透明度或柱光学厚度。
- 对化学或气溶胶变量用 gencol 得到柱密度。
- 再用 localtime、lslin 或外部绘图脚本做统一采样和可视化。
待确认:不同工具都可对时间或垂直维做插值,组合时应固定顺序并记录 .def 文件,避免同一变量经历不可追踪的多次插值。
初始场和 1D 输入链
| 目标 | 工具 | 复现要点 |
|---|---|---|
检查 startfi.nc 空间分布 |
expandstartfi | 把 physical_points 一维列展开到规则经纬网格,便于可视化。 |
生成 1D profile_* |
extractcolumnfor1D | 从 3D/4D 输出抽取指定水平格点和时间索引的垂直列。 |
| 转为 ICOSA/DYNAMICO 初始场 | startarchive2icosa | 读取 start_archive_nc4.nc、参考文件和 XIOS 配置,生成 finalize 前后的 ICOSA 初始文件。 |
这些工具直接影响后续再启动或 1D 复现实验。建议把输入文件名、格点索引、时间索引、变量列表和生成文件一起归档。
失败模式
| 现象 | 常见原因 | 排查入口 |
|---|---|---|
工具直接 stop |
NetCDF 变量/维度缺失,或标准输入顺序错误 | 各工具页的输入契约与 stdout 提示。 |
| 输出全缺测或局部缺测 | 时间覆盖不足、坐标越界、插值角点含 missing value | extract、simu_MCS、localtime。 |
| 垂直坐标转换失败 | 缺 ps/temp/aps/bps/phisinit 或文件命名不符合回退规则 |
zrecast。 |
| 气溶胶不透明度缺失 | 缺 rho、有效半径、目标 tracer 或光学性质表 |
aeroptical、aeropt_mod。 |
| 观测比较相位不一致 | Ls-sol 换算、LT 换算或 stats 周期延拓假设不一致 | simu_MCS、lslin。 |