XIOS 输出配置体系

路径

LMDZ.MARS\deftank\xios\iodef.xml                 (29 行, 根入口)
LMDZ.MARS\deftank\xios\context_pcm_physics.xml   (94 行, 上下文)
LMDZ.MARS\deftank\xios\field_def_physics.xml     (1344 行, 变量定义)
LMDZ.MARS\deftank\xios\file_def_physics.xml      (239 行, 输出文件)

运行时 4 个文件必须同时存在于工作目录(源码依据:deftank/README:31-33)。

类型

输出配置——定义 GCM 物理过程的所有可通过 XIOS 输出的变量、输出文件格式和时间策略。

作用

源码依据(field_def_physics.xml:1-4 注释):

Definition of all existing variables that can be outputed from Martian physics

这四个 XML 文件是 LMDZ.MARS GCM 通过 XIOS 库(eXtensible Input/Output Server)将物理诊断量写入 NetCDF 文件的唯一配置入口。它们控制:

  1. 哪些变量可被输出field_def_physics.xml 定义所有可用 field)。
  2. 变量写入哪些文件file_def_physics.xml 组合 field 成 output file)。
  3. 输出频率和聚合方式(instantaneous / average / minimum / maximum)。
  4. 空间轴和网格定义context_pcm_physics.xml 定义 dom_glo、altitude、presnivs 等)。
  5. XIOS 运行时参数iodef.xml 控制 buffer、server 模式、日志级别)。

4 个文件的关系

iodef.xml (根入口, XIOS context)
  ├── context id="xios"         ← buffer/server/verbosity 参数
  └── context id="LMDZ" (src="./context_pcm_physics.xml")
       ├── domain_definition     ← dom_glo 2D rectilinear
       ├── axis_definition       ← altitude, presnivs, soil_layers, interlayer, ...
       ├── scalar_definition
       ├── grid_definition       ← grid_3d, grid_soil, grid_2d, scalarpoint, ...
       ├── field_definition (src="./field_def_physics.xml")   ← 所有可用变量
       └── file_definition  (src="./file_def_physics.xml")    ← 输出文件组合

关键字段

iodef.xml(XIOS 运行时参数)

字段 示例值 含义 影响
print_file true 是否将 XIOS 自身日志写入独立文件 XIOS 调试
buffer_size 85000000 输出缓冲区大小(字节) 内存占用/性能
buffer_server_factor_size 2 服务端缓冲倍数 detached server 模式
using_server false 是否使用 detached server/client 模式 MPI 拓扑
info_level 100 XIOS 日志级别(0=无, 100=详细) 调试输出

源码依据:iodef.xml:6-23

context_pcm_physics.xml(空间轴与网格)

轴/网格 单位 含义 设置位置
altitude km 模型层伪高度(由 z2sig.def 决定) 代码中 wxios_add_vaxis
presnivs Pa 层中点气压 代码中 xios_set_axis_attr
interlayer km 界面层高度(= altitude 层数 +1) 代码
soil_layers m 土壤层深度 代码
subslope 亚格点坡度分类 代码
controle_axe 控制向量(n_glo=100) 静态
dom_glo 全球 2D rectilinear 域 静态
grid_3d / grid_2d / grid_soil / scalarpoint 组合网格 切换 axis id 可改输出轴为 presnivs

源码依据:context_pcm_physics.xml:6-86;轴值在代码中由 xios_output_mod.F90:55-66xios_set_axis_attr 调用设置。

复现要点:context_pcm_physics.xml:46-50grid_3d 默认使用 altitude 轴;若改为 presnivs(注释行已预留),所有 3D 输出将变为气压坐标。

field_def_physics.xml(变量定义)

所有变量按 4 个 field_group 组织(源码依据:XML 结构):

field_group grid_ref 变量数 主要主题
fields_0D scalarpoint ~50 Ls、逃逸通量(H/H₂/D)、示踪物全球质量(化学 + 离子)、CO₂ 守恒
fields_2D dom_glo ~250 地表(ps/tsurf/albedo/emis)、辐射通量、尘埃循环、水循环、CO₂ 循环、热参数、亚表层示踪、坡度变体(slope01-07)
fields_3D dom_glo + altitude ~350 温度/风/密度/气压、加热率(dtrad/sw/lw/q15um/nir/uv/cond)、所有示踪物(CO₂/H₂O/化学/离子)的 mass/vmr/num、尘埃/风暴/山顶尘埃参数、水云、CO₂ 凝结
fields_soil dom_glo + soil_layers ~50 土壤温度(含 7 个 slope 变体)、热惯性、水密度、亚表层水汽饱和、吸附水、扩散系数

变量定义通用属性(源码依据:field_def_physics.xml:6-8):

<field_definition prec="4" freq_op="1ts" enabled="true">

重复 field id 现象:XML 中存在多个重复 id(如 mass_o2plus/mass_coplus 在第 106、112-116 行重复;h2o_ice_s 第 481-486 行;IRtoVIScoef 第 336-341 行;rdsdustN 第 1128-1133 行)。推断:XIOS 可能用最后一次定义覆盖,或是历史合并冲突遗留。

file_def_physics.xml(输出文件)

6 个预定义输出文件,仅 File 1 默认启用(源码依据:各 <file enabled=...> 属性):

文件 id output_freq 操作 状态 主要用途
1 histins 12ts instant enabled 标准瞬时输出(每 12 物理时间步)
2 diurnalave 1d average disabled 日平均气象场
3 outdaily4pem 1d average disabled 亚表层冰(PEM)日平均(无坡度)
4 outyearly4pem 1y average + minimum disabled PEM 年平均 + CO₂/水冰年最小(无坡度)
5 outdaily4pem_s 1d average disabled PEM 日平均(含 7 坡度)
6 outyearly4pem_s 1y average + minimum disabled PEM 年统计(含 7 坡度)

File 1 (histins) 输出的变量(源码依据:file_def_physics.xml:10-52):

类别 变量
0D Ls
2D area(once), ps, tsurf, co2ice, fluxsurf_dn_sw(as ISR), fluxtop_lw(as OLR)
3D temp, u, v, dustq, dustN, h2o_vap, h2o_ice
soil soiltemp(as tsoil), inertiedat

Field 引用别名<field field_ref="fluxsurf_dn_sw" name="ISR" /> 允许输出时用 ISR 替代原 field id,方便后处理。

操作类型

被读取的位置

读取例程 文件 说明
XIOS 库自身 外部库(LMDZ.COMMON 通过 USE xios 链接) 运行时解析 iodef.xml
initialize_xios_output libf/phymars/xios_output_mod.F90:19 初始化轴、域、日历、关闭定义阶段
send_xios_field libf/phymars/xios_output_mod.F90:12 发送 0D/1D/2D/3D 场到 XIOS
write_output libf/phymars/write_output_mod.F90:28+ 通过 xios_is_active_field 检查变量是否在某个 file_def 中被引用,再决定是否发送
finalize_xios_output libf/phymars/xios_output_mod.F90:155 关闭 XIOS 上下文

源码依据(write_output_mod.F90:46-49 注释): "only send the field to xios if the user asked for it" — 这意味着仅在 field_def 中定义但未被任何 file_def 引用的变量不会被实际计算/发送,有性能优化作用。

影响的计算流程

主题 影响
尘埃循环 dustq/dustN/dustliftday/rds_lapserate 等字段覆盖尘埃全生命周期诊断
水循环 h2o_vap/h2o_ice/watercap/flux_ssice 等字段覆盖水汽/冰/亚表层水诊断
CO₂ 循环 co2ice/perennial_co2ice/co2condens_pdtc 等字段
辐射计算 fluxsurf_lw/sw/fluxtop_lw/sw/dtrad/sw_htrt/lw_htrt
化学/离子 c_co/c_o3/num_co2plus 等 ~70 个列密度和数密度字段
重力波 nonoro_u_epflux_tot/du_nonoro_gwd 等非地形重力波诊断
亚表层冰 fields_soil 组覆盖土壤温度/水密度/扩散/吸附

复现要求

已核验边界与外部依赖风险

相关页面