dyn1d/abort_gcm.F
路径
LMDZ.MARS\libf\phymars\dyn1d\abort_gcm.F
文件定位
dyn1d/abort_gcm.F 在当前源码树中不是独立实现,而是一行相对路径:
../../../../LMDZ.COMMON/libf/dyn3d/abort_gcm.F
它把 1D testphys 编译路径中的 abort_gcm 符号解析到 LMDZ.COMMON/libf/dyn3d/abort_gcm.F 的公共中止例程。
定义的符号
| 符号 | 类型 | 行号 | 作用 |
|---|---|---|---|
abort_gcm.F |
path stub | 1 | 指向 LMDZ.COMMON/libf/dyn3d/abort_gcm.F。 |
abort_gcm |
subroutine | common target line 6 | 打印调用模块、原因和严重级别,关闭 XIOS/IOIPSL 相关输出,并停止程序。 |
公共实现摘要
目标文件 LMDZ.COMMON\libf\dyn3d\abort_gcm.F 定义 abort_gcm(modname, message, ierr)。
| 输入 | 类型 | 含义 |
|---|---|---|
modname |
character | 调用方名称。 |
message |
character | 中止原因。 |
ierr |
integer | 严重级别;0 表示正常停止,非零表示错误停止。 |
公共实现会按编译宏关闭可选 XIOS/IOIPSL 输出,调用 getin_dump,向 lunout 写入中止位置和原因,最后 ierr==0 时 stop,否则 stop 1。
dyn1d 调用关系
| 调用方 | 行号 | 调用 | 作用 |
|---|---|---|---|
init_testphys1d_mod.F90 |
246 | call abort_gcm('infotrac_init','Un traceur est orphelin',1) |
infotrac_init 路径发现孤儿 tracer 时中止。 |
同一 dyn1d 初始化文件还在 280 行调用 abort_physic(...);该符号不是本文件定义的 abort_gcm,需要在对应文件页中继续追踪。
输入输出和副作用
| 项目 | 说明 |
|---|---|
| 文件 I/O | dyn1d stub 本身无 I/O;公共实现按编译宏关闭 XIOS、IOIPSL 历史和 restart 文件。 |
| 全局状态 | 依赖 iniprint.h 中的 lunout。 |
| 配置输出 | 调用 getin_dump,用于记录已读取的配置键。 |
| 程序控制 | 最终执行 stop 或 stop 1,不会返回调用方。 |
复现要点
- 若构建系统不保留这个路径 stub 或等价符号链接,dyn1d 中的
call abort_gcm(...)会在链接阶段缺符号。 - 公共实现的行为受
CPP_XIOS、CPP_IOIPSL和iniprint.h影响。 abort_gcm没有模块接口,调用方依赖外部过程名匹配。
待确认
- 当前 Windows 工作树把链接文件呈现为一行路径文本;在原始类 Unix 工作树中它可能是符号链接。
abort_physic与abort_gcm的关系需要在init_testphys1d_mod.F90页面中继续追踪。
相关页面
- dyn1d/index.md - dyn1d 子目录索引。
- init_testphys1d_mod.F90 -
abort_gcm调用方。 - vlz_fi - 已记录
abort_physic通过公共 abort 文件解析的调用关系。