IOIPSL getin 系统组页

输入范围

LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\ioipsl_getincom.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\ioipsl_stringop.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\ioipsl_errioipsl.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\phy_common\ioipsl_getin_p_mod.F90

文件定位

ioipsl_getincom.F90 是无 IOIPSL 或本地 fallback 的 getin 实现,负责读取 .def 风格键值文件、保存 key 表、解析标量和数组。ioipsl_getin_p_mod.F90 位于 phy_common,把 getin 包装成并行安全的 getin_p:root 读取后广播到所有 MPI/OMP 参与者。

Mars 运行参与度:必经/条件经过。Mars 物理配置大量调用 getin_p;Mars 1D 和部分初始化工具直接调用 getindatareadnc.F 也直接用 getin("datadir") 定位 surface.nc;该输入链见 Mars utility NetCDF 和 COMMON helper 边界。当编译使用 IOIPSL 时,getin_p 调 IOIPSL 的 getin;否则调本页的 ioipsl_getincom:getin

主要接口

文件 行数 主要符号 作用
ioipsl_getincom.F90 1980 getin, getin_dump 标量/1D/2D integer/real/character/logical 配置读取和 dump;主文件页见 ioipsl_getincom
ioipsl_stringop.F90 243 字符串操作 helper 支撑 key/value 文本清洗、大小写和分隔处理。
ioipsl_errioipsl.F90 219 ipslerr 等错误级别处理 根据错误级别打印 warning/error/fatal。
phy_common/ioipsl_getin_p_mod.F90 184 getin_p generic root 上调用 getin,随后 bcast 标量或数组。

getin fallback 流程

  1. 首次调用触发 getin_read,分配文本、key 表和 typed memory。
  2. getin_readdef 逐个打开配置文件,跳过空行和注释,读取 key = value
  3. getin_decrypt 判断 key 类型,把 integer/real/character/logical 值放入对应存储区。
  4. getin_checkcohe 检查重复 key,源码注释和消息显示保留最后值。
  5. getin* specific procedure 按调用方变量类型和维度回填;找不到 key 时保持调用方默认值。
  6. getin_dump 可输出已读数据库,用于 abort 时或调试时复现配置来源。

getin_p 并行约定

Mars 侧典型使用位置

待确认

相关页面