defrun.F

路径

LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dyn3d_common\defrun.F

所属目录/模块

LMDZ.COMMON\libf\dyn3d_common

文件定位

defrun.F 定义旧式 SUBROUTINE defrun(tapedef, etatinit, clesphy0),从固定格式 gcm.def 顺序读取运行参数和物理开关,写入 control_modlogic_modserre_mod 以及 clesphy0。文件头部源码注释明确写着“似乎不再使用,因此未为行星使用更新”。当前串行入口实际调用 conf_gcm

Mars 运行参与度

接口兼容:源码注释称本例程似乎不再使用;COMMON/MARS 主链搜索未发现对 defrun 的直接调用。保留为旧式 gcm.def 顺序读取逻辑说明。

定义的符号

符号 类型 行号 作用
defrun subroutine 6 gcm.def 读取旧式运行控制参数和物理键。

依赖的模块

use 模块 only 列表 用途 待确认
control_mod - dayref/anneeref/nday/day_step/iperiod/... 等控制变量。 -
logic_mod purmats, iflag_phys, fxyhypb, ysinus 写或比较主逻辑开关和网格函数分支。 -
serre_mod clon, clat, grossismx, grossismy, dzoomx, dzoomy, alphax, alphay, taux, tauy 写或比较 zoom 参数。 -

调用的关键例程

被调用例程 所在模块/文件 调用位置 作用
ABORT_gcm dyn3d/abort_gcm.F 373, 379, 385, 391 zoom 参数与 start 文件不一致时退出。
OPEN, READ, WRITE, CLOSE Fortran I/O 多处 打开 gcm.def 并按固定顺序读取/打印。
STOP Fortran 运行时 多处 遇到不一致或非法 zoom 参数时停止。

输入

输入 来源 类型/维度 单位 含义
tapedef 调用参数 integer - 作为打开 gcm.def 的 Fortran unit。
etatinit 调用参数 logical - 控制是初始化 zoom 参数还是与已有 start 参数比较。
gcm.def 当前运行目录 固定顺序文本 多种 旧式运行配置文件。

输出

输出 去向 类型/维度 单位 含义
clesphy0(20) 调用方数组 real(20) - 旧物理开关编码数组。
control_mod 变量 module 全局 多种 多种 日期、步数、输出、耗散和旧物理开关。
logic_mod 变量 module 全局 logical/integer - purmats/iflag_phys/fxyhypb/ysinus
serre_mod 变量 module 全局 real/logical 度或无量纲 zoom 参数和 alphax/alphay

共享状态与副作用

例程打开 gcm.def,向 unit 6 打印读取结果,写多个 module 全局变量;不一致时可能 STOPABORT_gcm。由于输入是严格顺序读取,gcm.def 行顺序错误会造成后续字段整体错位。

核心逻辑

  1. 打开 gcm.def
  2. 按固定顺序读取 dayref/anneeref/nday/day_step/iperiod/...、耗散、物理开关等。
  3. cycle_diurne/soil_model/new_oliq/ok_orodr/ok_orolf/ok_limitvrai 等旧物理开关编码进 clesphy0
  4. etatinit=.false.,继续读取 zoom 参数,并与已经从 start 文件读出的 clon/clat/grossismx/grossismy/fxyhypb/dzoomx/dzoomy/taux/tauy/ysinus 比较。
  5. etatinit=.true.,直接从文件读取并设置 zoom 参数。
  6. 检查 grossismx/grossismy>=1,计算 alphax=1-1/grossismxalphay=1-1/grossismy
  7. 关闭文件返回。

伪代码

open gcm.def on unit tapedef
read fixed-order run parameters into control_mod and logic_mod
build clesphy0 from old physical switches
if not etatinit:
    read zoom values and compare with current start-file state
    abort on mismatch
else:
    read zoom values into serre_mod
validate grossismx/grossismy and compute alphax/alphay
close gcm.def

参与的主题流程

主题 参与方式
dynamics configuration 旧式配置读取;现代入口由 conf_gcm 取代。
grid initialization 读取或校验 fxyhypb/ysinus 和 zoom 参数,为 inigeom 提供状态。

写法特点

固定格式 Fortran,使用 #include 头文件和顺序 READ。文件顶部的醒目注释是重要证据:此例程“似乎不再使用”,且未为行星使用更新。

复现要点

待确认

相关页面