NetCDF95 wrapper 组页

输入范围

LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\netcdf95.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\simple.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\nf95_def_var_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\nf95_get_var_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\nf95_put_var_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\nf95_gw_var_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\nf95_get_att_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\nf95_put_att_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\new_unit_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\handle_err_m.F90

文件定位

netcdf95.F90 是聚合模块,use 各个 nf95_* 模块和 simple 模块,向调用方暴露更 Fortran-95 风格的 NetCDF API。handle_err_m 是统一错误处理;new_unit_m 是查找空闲 Fortran unit 的小工具。

Mars 运行参与度:条件经过。COMMON guide/nudging 代码使用 netcdf95 定义和写出 nudging 系数;COMMON dynredem/dynredem_p 也用 nf95_put_var 写部分 restart 元数据。Mars archive utilities 主要仍直接使用 netcdf.inc/NF_*,不直接进入本页 wrapper 错误处理链;边界见 Mars utility NetCDF 和 COMMON helper 边界

例程和模块

文件 行数 主要符号 作用
netcdf95.F90 17 module netcdf95 聚合 nf95_def_var/get_var/put_var/gw_var/att/simple/handle_err
simple.F90 361 nf95_open, nf95_create, nf95_def_dim, nf95_inq_varid, nf95_close 对常用 nf90_* 文件、维度、变量、attribute 查询做可选错误码包装。
nf95_def_var_m.F90 102 nf95_def_var generic scalar、oneDim、ManyDims 变量定义。
nf95_get_var_m.F90 391 nf95_get_var generic scalar 到 5D,real/int,不同 kind 读取。
nf95_put_var_m.F90 335 nf95_put_var generic scalar 到 4D,real/int 写入。
nf95_gw_var_m.F90 336 nf95_gw_var generic get-or-write helper,若变量不存在则定义再写。
nf95_get_att_m.F90 105 nf95_get_att generic text 和 integer attribute 读取。
nf95_put_att_m.F90 67 nf95_put_att generic text 和 integer attribute 写入。
handle_err_m.F90 46 handle_err 打印 NetCDF 错误,可关闭文件,然后 abort_physic
new_unit_m.F90 25 new_unit unit=0 开始用 INQUIRE 查找存在且未打开的 Fortran unit。

错误处理约定

所有 wrapper 基本遵循同一模式:

  1. 调用底层 nf90_*,把返回值保存为本地 ncerr_not_opt
  2. 如果调用方传入可选 ncerr,只回填错误码,不中止。
  3. 如果未传 ncerr,调用 handle_err
  4. handle_errncerr /= nf90_noerr 时打印上下文和 nf90_strerror;若传入 ncid,先尝试 nf90_close(ncid);最后调用 abort_physic("NetCDF95 handle_err","",1)

复现要点

待确认

相关页面