turb_mod.F90

路径

LMDZ.MARS\libf\phymars\turb_mod.F90

所属目录 / 模块

libf/phymars

文件定位

turb_mod.F90phymars 中湍流、边界层和热羽流路径共享的状态数组模块。它本身不计算湍流闭合,也不读取配置文件;它只声明并按当前 ngrid/nlayer 分配 TKE、混合长度、摩擦速度、自由对流速度、热通量诊断和 sensible heat flux 等数组,供 phys_state_var_init_mod.F90 统一初始化,再由 restart、1D 初始化、垂直扩散、Yamada4、热羽流接口和 surface-layer/PBL 诊断路径读写。

复现时应把本文件视为“共享缓存和生命周期入口”,而不是湍流主求解器。实际 TKE 或交换系数演化在 vdif_kc.Fyamada4.Fvdifc_mod.Fcalltherm_interface_mod.F90pbl_parameters_mod.F90vdif_cd_mod.F90 等文件中完成;turb_mod 负责保证这些过程在相同维度下访问同一批 module-level 数组。

定义的符号

符号 类型 行号 作用
turb_mod module 1 保存湍流和 PBL 共享状态数组,并提供分配/释放例程。
q2 saved allocatable real array 4 界面层 TKE,维度为 (ngrid,nlayer+1)
l0 saved allocatable real array 5 每列混合长度/湍流长度尺度缓存,维度为 (ngrid)
ustar saved allocatable real array 6 每列摩擦速度缓存,维度为 (ngrid)
wstar saved allocatable real array 7 每列自由对流速度尺度,主要由热羽流/边界层路径反馈。
tstar saved allocatable real array 8 每列温度尺度缓存。
hfmax_th saved allocatable real array 9 热羽流/扩散合成后的最大热通量诊断缓存。
zmax_th saved allocatable real array 10 热羽流最大高度诊断缓存。
sensibFlux saved allocatable real array 11 surface-layer sensible heat flux 缓存。
turb_resolved logical module variable 12 显式解析湍流标志;源码注释说明主要供 LES 使用,GCM/mesoscale 默认 .false.
ini_turb_mod subroutine 20 ngrid,nlayer 分配全部共享数组。
end_turb_mod subroutine 35 若数组已分配,则逐个释放。

依赖的模块

use 模块 only 列表 用途 待确认
- 本文件没有 use 语句。 -

调用的关键例程

被调用例程 所在模块 / 文件 调用位置 作用
- - ini_turb_modend_turb_mod 只执行 allocate/deallocate

被调用位置

调用方 文件 调用位置 作用
phys_state_var_init phys_state_var_init_mod.F90 通过 use turb_mod, only: ini_turb_mod,end_turb_mod 并在共享数组初始化序列中调用 在物理初始化阶段释放旧湍流数组并按当前网格重新分配。
init_testphys1d dyn1d/init_testphys1d_mod.F90 use turb_mod, only: q2 1D 初始化路径把 q2 置零。
testphys1d dyn1d/testphys1d.F90 use turb_mod, only: q2 1D 主循环把 TKE 状态传入 physiq
phyetat0 phyetat0_mod.F90 restart 读取路径 startfi.nc 恢复 q2,并按可选字段恢复 wstar
physdem1 phyredem.F90 restart 写出路径 写出 q2,并在 calltherm 开启时写出 wstar
vdifc / vdif_kc / yamada4 vdifc_mod.Fvdif_kc.Fyamada4.F 垂直扩散和湍流闭合路径 读写 q2l0ustarwstarsensibFlux 等湍流/PBL 状态。
calltherm_interface calltherm_interface_mod.F90 热羽流接口 读取 q2/sensibFlux,更新或反馈 wstar/hfmax_th/zmax_th 相关诊断。
pbl_parameters / vdif_cd pbl_parameters_mod.F90vdif_cd_mod.F90 surface-layer 与 PBL 参数路径 使用 turb_resolvedwstar 相关量判断/修正近地层参数。

输入

输入 来源 类型 / 维度 单位 含义
ngrid phys_state_var_init integer scalar - 当前物理列数。
nlayer phys_state_var_init integer scalar - 当前大气垂直层数。

输出

输出 去向 类型 / 维度 单位 含义
q2 湍流闭合、restart、1D/3D physiq 路径 real (ngrid,nlayer+1) model units 界面层 TKE 状态,垂直维度比层中心多 1。
l0 Yamada4/混合长度路径 real (ngrid) m 或方案内部尺度 每列混合长度缓存。
ustar, tstar surface-layer/PBL 路径 real (ngrid) m/s, K-like 摩擦速度和温度尺度缓存。
wstar 热羽流、surface-layer、restart real (ngrid) m/s 自由对流速度尺度,常带有一步反馈含义。
hfmax_th, zmax_th 热羽流/PBL 诊断 real (ngrid) mixed 最大热通量与热羽流高度诊断缓存。
sensibFlux surface-layer 与热羽流接口 real (ngrid) W/m2 地表感热通量缓存。
turb_resolved PBL/LES 条件判断 logical scalar - 标记湍流是否已显式解析。

共享状态与副作用

核心逻辑

  1. 接收当前物理网格列数 ngrid 和大气层数 nlayer
  2. 分配 q2(ngrid,nlayer+1),保留界面层 TKE 的 nlayer+1 维度。
  3. 分配 l0/ustar/wstar/tstar/hfmax_th/zmax_th/sensibFlux(ngrid)
  4. 释放阶段逐个检查数组是否已分配,并释放对应缓存。
  5. 不设置任何数组默认值,也不触发实际湍流、热羽流或 surface-layer 计算。

伪代码

ini_turb_mod(ngrid, nlayer)
  allocate q2(ngrid, nlayer + 1)
  allocate l0(ngrid), wstar(ngrid), ustar(ngrid), tstar(ngrid)
  allocate hfmax_th(ngrid), zmax_th(ngrid), sensibFlux(ngrid)

end_turb_mod()
  for each turb_mod array:
    if allocated(array):
      deallocate(array)

参与的主题流程

主题 参与方式
物理状态初始化 phys_state_var_init_mod 调用 end_turb_mod/ini_turb_mod,把湍流共享数组纳入统一生命周期。
垂直扩散与 TKE vdifcvdif_kcyamada4 等路径读写 q2l0 和 near-surface 湍流量。
热羽流反馈 calltherm_interface_mod 使用 q2/sensibFlux 并更新 wstar/hfmax_th/zmax_th 相关诊断。
restart 兼容 phyetat0_mod 恢复 q2/wstarphyredem 写出 q2/wstar,使 PBL/TKE 状态跨运行延续。
1D 测试物理 dyn1d 初始化路径显式设置 q2=0.,随后把它传入 physiq

写法特点

复现要点

待确认

相关页面