yoegwd_h.F90

路径

LMDZ.MARS\libf\phymars\yoegwd_h.F90

所属目录 / 模块

libf/phymars

文件定位

yoegwd_h.F90 定义 yoegwd_h 模块,是地形重力波拖曳链的共享调参状态容器。它本身不执行计算,也不读取配置文件;所有变量都在模块内以 save 或模块变量形式保存,并通过 OpenMP THREADPRIVATE 声明成为每个线程私有的地形 GW 参数副本。实际数值由 sugwdcalldrag_noro 首调用时写入,随后被 orosetupgwstress_modgwprofil_modorodrag_mod 读取。

定义的符号

符号 类型 行号 作用
yoegwd_h module 1 地形重力波拖曳参数共享模块。
GFRCRIT saved threadprivate real 7, 10 低层流 / Froude 相关临界参数;由 SUGWD 写为 1.0,供 OROSETUP 判据读取。
GRCRIT saved threadprivate real 8, 10 Richardson 数临界参数;由 SUGWD 写为 0.25,供 OROSETUPGWPROFIL 使用。
GVCRIT saved threadprivate real 9, 10 临界风速阈值;由 SUGWD 写为 0.0,在 GWSTRESS 中出现在当前注释掉的截断判据里。
GKDRAG saved threadprivate real 11, 14 地形 GW 底层应力 drag 系数;由 SUGWD 写为 0.1
GKDRAGL saved threadprivate real 12, 14 GKDRAG 的派生系数;由 SUGWD 写为 4.*GKDRAG
GHMAX saved threadprivate real 13, 14 最大地形高度相关阈值;由 SUGWD 写为 10000.,本文件只声明。
GRAHILO saved threadprivate real 15, 18 高低层相关经验系数;由 SUGWD 写为 1.
GSIGCR saved threadprivate real 16, 18 OROSETUP 查找低层流高度的 sigma 阈值;由 SUGWD 写为 0.80
GSSEC saved threadprivate real 17, 18 Brunt-Vaisala 频率平方的安全下限;由 SUGWD 写为 1.E-12
GTSEC saved threadprivate real 19, 22 stress / 次网格地形各向异性的安全阈值;由 SUGWD 写为 1.E-07
GVSEC saved threadprivate real 20, 22 风速范数和风切变计算的安全下限;由 SUGWD 写为 0.10
GKWAKE saved threadprivate real 21, 22 阻塞层 wake drag 经验系数;由 SUGWD 写为 1.0,由 ORODRAG 读取。
NKTOPG threadprivate integer 23, 24 地形高度搜索允许到达的顶部层索引;由 SUGWD 扫描 sigtest 后写入。

依赖的模块

use 模块 only 列表 用途 待确认
- 本文件只声明共享变量,不 use 其他模块。 -

调用的关键例程

被调用例程 所在模块 / 文件 调用位置 作用
- - 本文件没有可执行语句。

输入

输入 来源 类型/维度 单位 含义
SUGWD 写入的参数值 sugwd.F90 行 45-76 scalar real / integer 依变量而定 本模块变量的唯一已核验初始化来源。

输出

输出 去向 类型/维度 单位 含义
GFRCRIT, GRCRIT, GSIGCR, GSSEC, GTSEC, GVSEC, NKTOPG orosetup.F90 module variables 阈值 / 层索引 低层流、稳定度、风速保护和地形搜索层限制。
GKDRAG, GTSEC, GVCRIT gwstress_mod.F90 module variables drag 系数 / 阈值 底层重力波应力公式和截断判据。
GKDRAG, GRCRIT, GSSEC, GTSEC gwprofil_mod.F90 module variables drag 系数 / 阈值 应力廓线重算、波 Richardson 数破碎判据和小 stress 保护。
GKWAKE orodrag_mod.F90 module variable 经验系数 阻塞层 wake drag 方程的系数。

共享状态与副作用

yoegwd_h 的全部变量都是共享模块状态,且都带有 OpenMP THREADPRIVATE 语义。源码没有提供显式初始化例程或默认值;正常路径依赖 calldrag_noro_mod.F90 首调用时先调用 sugwd,再进入 ORODRAG/OROSETUP/GWSTRESS/GWPROFIL 链。复现时不能只检查本文件声明,还必须确认 SUGWD 已经在同一线程中执行过,否则这些 threadprivate 变量可能保留未定义或旧值。

核心逻辑

  1. 声明 12 个 real,save 地形 GW 参数,分成四组 THREADPRIVATE
  2. 声明 1 个 integer 层索引 NKTOPG,同样设为 THREADPRIVATE;它不是 real,save 参数。
  3. 不执行任何计算;参数写入由 sugwd.F90::SUGWD 完成,下游例程直接 use yoegwd_h, only: ... 读取。

伪代码

module yoegwd_h:
    declare saved real tuning constants for orographic GW drag
    mark each group as OpenMP threadprivate
    declare integer NKTOPG
    mark NKTOPG as OpenMP threadprivate

runtime expectation:
    SUGWD initializes these variables before the orographic GW chain reads them

参与的主题流程

主题 参与方式
地形重力波 / 次网格地形拖曳 保存 SUGWD 初始化的调参常量和安全阈值,供 OROSETUP 预处理、GWSTRESS 应力初始化、GWPROFIL 应力廓线重算和 ORODRAG wake drag 使用。

写法特点

复现要点

待确认

相关页面