dyn1d/logic_mod.F90
路径
LMDZ.MARS\libf\phymars\dyn1d\logic_mod.F90
文件定位
dyn1d/logic_mod.F90 在当前源码树中不是独立实现,而是一行相对路径:
../../../../LMDZ.COMMON/libf/dyn3d/logic_mod.F90
它把 1D testphys1d 构建路径中的 logic_mod 解析到公共动力逻辑状态模块。目标模块本身只声明逻辑开关和少量整型标志,不包含初始化例程;这些变量通常由 3D conf_gcm、时间步循环或 1D 初始化路径赋值。
定义的符号
| 符号 | 类型 | 目标行号 | 作用 |
|---|---|---|---|
logic_mod.F90 |
path stub | dyn1d line 1 | 指向 LMDZ.COMMON/libf/dyn3d/logic_mod.F90。 |
logic_mod |
module | common line 1 | 保存动力核心的逻辑状态。 |
hybrid |
logical | common line 29 | 为真时使用 hybrid 垂直坐标;为假时使用 sigma 坐标。当前 dyn1d 初始化直接使用此变量。 |
iflag_phys, iflag_trac |
integer | common lines 34-35 | 公共动力物理包和 tracer 调用类型标志;当前 dyn1d 目录未直接使用。 |
目标模块状态清单
| 变量 | 类型 | 源码注释或用途 |
|---|---|---|
purmats |
logical | 为真表示纯 Matsuno 时间步,为假表示 Matsuno-Leapfrog。 |
forward, leapf |
logical | 标记 Matsuno forward 阶段和 leapfrog 步。 |
apphys, apdiss, apdelq |
logical | 标记当前步是否调用物理、耗散或 tracer/delq 相关处理。 |
statcl, conser, saison, ecripar |
logical | 统计、守恒、季节和并行输出相关状态;具体语义在调用方中体现。 |
fxyhypb, ysinus |
logical | 纬向网格离散函数选择。 |
read_start |
logical | 是否读取 start.nc 初始化动力场。 |
ok_guide |
logical | 是否启用 nudging。 |
ok_strato |
logical | 平流层/顶层 sponge 和耗散配置相关开关。 |
tidal |
logical | Titan 潮汐力开关。 |
ok_gradsfile, ok_limit, ok_etat0, read_orop |
logical | GrADS 输出、边界文件、初始状态和次网格地形参数读取开关。 |
hybrid |
logical | 垂直坐标选择,当前 1D 路径使用。 |
moyzon_mu, moyzon_ch |
logical | Titan 纬向平均输出相关状态。 |
dyn1d 使用路径
当前 LMDZ.MARS/libf/phymars/dyn1d 中只发现一个直接 use logic_mod:
use logic_mod, only: hybridinit_testphys1d_mod.F90 中的 1D 初始化流程会:
- 设
hybrid = .true.。 - 通过
getin("hybrid",hybrid)允许配置覆盖。 - 打印
hybrid当前值。 - 调用 disvert_noterre,由公共垂直离散例程读取同一
logic_mod::hybrid并选择 hybrid 或 sigma 坐标。
因此在 1D testphys 路径里,本文件最重要的可复现影响是垂直坐标分支;其他 logic_mod 变量主要服务公共 3D 动力核心。
赋值和读取关系
| 变量 | 赋值位置 | 读取/影响 |
|---|---|---|
hybrid |
init_testphys1d_mod 中默认 .true. 并读取 hybrid 配置键;公共 disvert_noterre 也有默认和 getin('hybrid') 读取。 |
disvert_noterre 用它决定是否把 esasig.def/z2sig.def 中的 sigma 位置转换成 hybrid ap/bp/aps/bps。 |
read_start, ok_guide, ok_strato, iflag_phys 等 |
公共 3D conf_gcm.F90 和动力循环路径。 |
3D/parallel 动力核心、disvert.F90、inidissip.F90、sortvarc.F 等公共路径。当前 dyn1d 目录未直接读取。 |
与 Mars 物理开关的边界
不要把本页的 logic_mod 与 Mars 物理侧 callkeys_mod 混淆。water、photochem、callthermos、callsoil、diurnal、season 等物理过程开关定义在 callkeys_mod.F90,不是这里。init_testphys1d_mod.F90 同时 use logic_mod, only: hybrid 和 use callkeys_mod, only: water, photochem, callthermos,两个模块承担不同职责。
复现要点
- dyn1d 本地文件只是路径 stub;实际变量清单必须以
LMDZ.COMMON/libf/dyn3d/logic_mod.F90为准。 logic_mod没有默认初始化语句。除hybrid在 1D 初始化里显式赋值外,其他变量若在 1D 路径中被新增使用,需要同时确认赋值来源。hybrid配置会影响plev/play的构造,进而影响 profile 插值、压力层和后续physiq输入。
待确认
- Windows 工作树把 dyn1d 入口呈现为一行路径文本;原始类 Unix 工作树中它可能是符号链接。
- 1D 路径中
hybrid被init_testphys1d_mod和disvert_noterre两处读取配置,是否有意保留重复读取未在源码注释中说明。
相关页面
- dyn1d/index.md - dyn1d 子目录索引。
- init_testphys1d_mod - 1D 初始化中设置
logic_mod::hybrid。 - disvert_noterre - 使用
hybrid构造垂直坐标。 - testphys1d 配置 - 1D 配置入口。
- z2sig 配置 - 垂直坐标配置背景。