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: hybrid

init_testphys1d_mod.F90 中的 1D 初始化流程会:

  1. hybrid = .true.
  2. 通过 getin("hybrid",hybrid) 允许配置覆盖。
  3. 打印 hybrid 当前值。
  4. 调用 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.F90inidissip.F90sortvarc.F 等公共路径。当前 dyn1d 目录未直接读取。

与 Mars 物理开关的边界

不要把本页的 logic_mod 与 Mars 物理侧 callkeys_mod 混淆。waterphotochemcallthermoscallsoildiurnalseason 等物理过程开关定义在 callkeys_mod.F90,不是这里。init_testphys1d_mod.F90 同时 use logic_mod, only: hybriduse callkeys_mod, only: water, photochem, callthermos,两个模块承担不同职责。

复现要点

  1. dyn1d 本地文件只是路径 stub;实际变量清单必须以 LMDZ.COMMON/libf/dyn3d/logic_mod.F90 为准。
  2. logic_mod 没有默认初始化语句。除 hybrid 在 1D 初始化里显式赋值外,其他变量若在 1D 路径中被新增使用,需要同时确认赋值来源。
  3. hybrid 配置会影响 plev/play 的构造,进而影响 profile 插值、压力层和后续 physiq 输入。

待确认

相关页面