util 后处理工具目录

路径

LMDZ.MARS\util

职责

util 存放一组离线工具程序,用于处理 LMDZ.MARS GCM 产生的 NetCDF 输出,例如 diagfi.ncstats.ncconcat.ncXhistins.ncstartfi.ncstart_archive.nc。这些工具不参与 GCM 主积分,而是在模拟完成后完成拼接、坐标重映射、观测抽样、垂直坐标转换、列积分、诊断变量生成和初始场格式转换。

源码依据:util/README 明确说明本目录包含处理 LMD Mars GCM 输出文件的 utilities,并指出一个工具的输出通常还可以继续交给另一个工具处理。

跨工具串联顺序见 util-toolchain 主题

目录内容

子目录/文件 类型 作用
compile shell 脚本 编译多数 .F90 工具,需用户配置 NETCDF_HOME、编译器和编译选项。aeroptical 会额外编译 aeropt_mod.F90
concatnc.F90 / concatnc.def 程序 + 输入样例 拼接连续 GCM 输出,生成 concat.nc,可选择变量并控制 sol/ls/adls 时间轴。
zrecast.F90 / zrecast.*.def 程序 + 输入样例 把混合垂直坐标输出转换到压力、areoid 高度、本地地表高度或距行星中心半径坐标。
localtime.F90 / localtime.def 程序 + 输入样例 将变量重分布到指定本地时刻,输出 *_LT.nc
lslin.F90 / lslin.def 程序 + 输入样例 将时间轴插值或平均到线性的太阳经度 Ls 坐标,可用于 GrADS 或观测分箱比较。
solzenangle.F90 / solzenangle.def 程序 + 输入样例 按指定太阳天顶角反解晨侧/昏侧本地真太阳时,并将 3D/4D 变量插值到该几何条件。
hrecast.F90 / hrecast.def 程序 + 输入样例 用格盒面积交叠权重将输出场重分配到新的规则经纬度水平网格。
extract.F90 / extract.*.def 程序 + 输入样例 从已 zrecast 的文件中按点或廓线抽取四维变量,输出 ASCII .dat
aeroptical.F90 / aeropt_mod.F90 / aeroptical.def 程序 + 模块 + 输入样例 基于气溶胶质量混合比、有效半径、空气密度和光学性质表计算气溶胶消光/吸收不透明度。
gencol.F90 / gencol.def 程序 + 输入样例 根据质量混合比、体积混合比或浓度计算柱密度,输出 *_col.nc
check_co2cycle.F90 / check_co2cycle.def 程序 + 输入样例 将 GCM 地表压力插值到 Viking 1/2 和 InSight 位置,计算 CO2 冰等效压力,并做日平均与谐波重建。
extractcolumnfor1D.F90 命令行程序 从 3D/4D 输出的指定经纬度与时间索引抽取垂直列,生成 profile_* 文件供 testphys1d 使用。
expandstartfi.F90 命令行程序 startfi.ncphysical_points 一维物理列展开到经纬度网格,便于可视化。
streamfunction.F90 程序 diagfistatsconcat 类文件计算全时段平均的纬向流函数、角动量和纬向平均风/温度/密度诊断。
simu_MCS.F90 / simu_MCS.def 程序 + 输入样例 将 GCM 场按 MRO/MCS 观测网格和分箱方式抽样,用于与 MCS 温度、尘埃、水冰廓线比较。
startarchive2icosa/ 子目录 将 LMDZ start_archive.nc 转成 icosa_lmdz.exe 可用的 start_icosa.ncstartfi.nc。见 startarchive2icosa
xvik/fit_Iceinertia_MONSicedepth.F 子目录程序 基于四组 xvik 输出和 VL1 压力曲线拟合冰热惯量、冰深系数和总 CO2 inventory。

与其他目录的关系

相关目录 关系
LMDZ.MARS\libf\phymars phymars 运行产生诊断输出;util 读取这些 NetCDF 文件进行离线分析。
LMDZ.MARS\deftank deftank 中的运行脚本和配置决定输出变量、垂直坐标和示踪剂;这些设置直接影响 util 能否找到所需变量。
LMDZ.MARS\datadir aeroptical 需要气溶胶光学性质 ASCII 表,示例输入把这些文件放在 datadir 类目录。
LMDZ.MARS\startfiles expandstartfistartarchive2icosa 处理物理初始场或 archive 初始场。
LMDZ.MARS\libf\dynphy_lonlat\phymars start2archivestart_archive 类输出可作为 startarchive2icosa 的输入。

推断:util 是连接“模式输出”和“科学诊断/观测比较/新初始场”的离线层;它不改变模式物理过程本身,但会决定后续图像、观测对比和再启动文件的坐标与变量契约。

关键文件

文件 原因
README 提供工具职责、输入输出文件名、典型命令和可串联关系,是目录级说明的主要文档依据。
compile 说明所有主工具的编译前提:NetCDF Fortran 库、编译器、库路径和运行时 LD_LIBRARY_PATH
zrecast.F90 README 明确称其对可发表科学图像是必要步骤;源码中也列出压力、高度、地表高度和半径坐标四类输出。
concatnc.F90 后处理链常见第一步,把多段 diagficoncatstats 类文件按 Time 维拼成 concat.nc
localtime.F90 / solzenangle.F90 / simu_MCS.F90 负责把模型输出变换到观测相关采样坐标。
aeroptical.F90 / aeropt_mod.F90 将模式示踪剂、有效半径和外部光学表转换成可比较的不透明度变量。
startarchive2icosa/README 说明从 start_archive.nc 到 DYNAMICO/ICOSA 初始文件的完整流程和硬编码风险。

典型流程

主题级串联见 util-toolchain;本节保留目录页中的源码近邻说明。

1. 常规输出整理链

  1. GCM 输出多个 diagfi*.ncstats*.nc
  2. concatnc.e < concatnc.def 拼接变量与时间轴,生成 concat.nc
  3. 对需要垂直物理坐标的变量运行 zrecast.e < zrecast.auto.defzrecast.e < zrecast.manual.def
  4. 视分析目标继续运行:

源码依据:util/README 给出的示例命令包括 concatnc.e < concatnc.defzrecast.e < zrecast.defextract.e < extract.points.def

2. 观测比较链

  1. 对 Viking/InSight 地表压力比较,使用 check_co2cycle.e < check_co2cycle.def 读取 diagfi.ncconcat.ncXhistins.nc,输出站点压力、全球 CO2 库存、日平均和谐波重建文件。
  2. 对 MCS 比较,使用 simu_MCS.e < simu_MCS.def 读取 GCM 文件和 MCS 分箱文件。源码注释说明它按 MCS 的经纬度、高度、Ls、昼夜与本地时分箱抽样 GCM 变量。
  3. 对任意观测点或廓线比较,先 zrecast 到压力或几何高度坐标,再用 extractlon lat alt Ls LT 上插值。

复现风险:这些比较链依赖输入文件坐标、时间覆盖和变量命名。simu_MCS.F90 的开头注释明确要求 GCM 文件覆盖完整观测时段,并且与 MCS 文件使用同类高度坐标。

3. 气溶胶与柱量诊断链

  1. aeroptical.e < aeroptical.def 读取 GCM 文件中的气溶胶质量混合比、有效半径和 rho,再读取光学性质 ASCII 表,生成 *_OPAext.nc*_OPAabs.nc
  2. 如果需要柱积分光学厚度,在 aeroptical.def 中选择 yes
  3. gencol.e < gencol.def 可对质量混合比、体积混合比或浓度变量计算柱密度,输出 *_col.nc

源码依据:aeroptical.F90 使用 use aeropt_modaeropt_mod.F90read_optpropfile 从 ASCII 光学性质文件读入 wvlradiusdynQextomeg

4. 初始场与 1D 输入链

  1. expandstartfi.e [infile.nc] [outfile.nc]startfi.nc 的物理列展开成经纬度网格,主要用于绘图检查。
  2. extractcolumnfor1D.e -i # -j # -l # -v list infile 从 3D/4D 输出抽取某个水平格点和时刻的变量廓线,生成 profile_* 文件。
  3. startarchive2icosa/ 读取 start_archive_nc4.ncstart_icosa_ref.ncstartphy_icosa_ref.ncsurface_nc4.nciodef.xml,输出 start_icosa_prefinalize.ncstartfi_prefinalize.nc,再由 icosa_finalize.bash 生成 start_icosa.ncstartfi.nc

待确认:extractcolumnfor1D 生成的 profile_*testphys1d 配置字段之间的完整映射尚需结合 dyn1d 页面追踪。

复现要点

待确认