comtherm_h.F90

路径

LMDZ.MARS\libf\phymars\comtherm_h.F90

所属目录/模块

libf\phymars

文件定位

comtherm_h.F90 定义 comtherm_h,集中保存 Martian thermal plume model 的编译期控制量和调参常数。它本身不执行热羽流求解,也不读取运行时配置;calltherm_interface_mod.F90 读取这里的子步长数、tracer/TKE 输送开关,thermcell_main_mars.F90 读取这里的卷入、脱离、下沉气流、速度方程和混合层底部形状参数。

复现上,这个文件是热羽流方案的“常数入口”:同一个 calltherm=.true. 运行,若是否定义 MESOSCALE 或这些参数值不同,热羽流子步长、质量通量结构、温度廓线形状、tracer 输送范围和诊断输出都会不同。

定义的符号

符号 类型 行号 作用
comtherm_h module 17 Martian thermal plume model 控制参数模块
nsplit_thermals integer parameter 31 / 37 热羽流模型子步长数;MESOSCALE 编译时为 4,普通 GCM 路径为 10
r_aspect_thermals real parameter 48 控制混合层底部温度廓线形状;值越小越接近 convective-adjustment 型廓线
qtransport_thermals logical parameter 54 是否在热羽流路径中输送 tracer;当前源码默认 .true.
dtke_thermals logical parameter 61 是否在热羽流路径中输送 TKE;源码注释标明仍属实验用途,当前默认 .false.
thermverbose logical parameter 66 是否输出热羽流内部修正和诊断日志;当前默认 .false.
ad real parameter 73 脱离率调参常数,源码注释对应论文中的 D_2
bd real parameter 74 脱离率调参常数,源码注释对应论文中的 D_1
ae real parameter 76 卷入率调参常数,源码注释对应论文中的 E_1
be real parameter 77 卷入率调参常数,源码注释对应论文中的 E_2
fdfu real parameter 79 downdraft/updraft mass flux ratio 的下限参数
omega real parameter 81 下沉气流和速度方程相关的调参常数
a1 real parameter 83 垂直速度方程系数,源码注释对应论文中的 a
b1 real parameter 84 垂直速度方程系数,源码注释对应论文中的 b
a1inv real module variable 86 逆温层中使用的 a1 系数;源码给默认值 1
b1inv real module variable 87 逆温层中使用的 b1 系数;源码给默认值 0.0001

依赖的模块

use 模块 only 列表 用途 待确认
- 本模块不 use 其他模块 -

调用的关键例程

被调用例程 所在模块/文件 调用位置 作用
- - 本模块只声明参数和模块变量,不调用例程

输入

输入 来源 类型/维度 单位 含义
MESOSCALE 编译预处理宏 compile-time macro - 控制 nsplit_thermals 采用 mesoscale 默认值 4 还是 GCM 默认值 10
96 physical timesteps/day 约定 源码注释 运行配置约束 timestep/day GCM 默认 nsplit_thermals=10 的推荐背景;若少于 96 个物理步/日,源码注释给出未启用的 nsplit_thermals=35 建议
Colaïtis et al. 2013 参数化 源码注释和常数值 文献参数 - ad/bd/ae/be/fdfu/omega/a1/b1 的物理含义和段落引用来源

输出

输出 去向 类型/维度 单位 含义
nsplit_thermals calltherm_interface_mod.F90 integer scalar - 把物理时间步切成热羽流子步长;用于 zdt=ptimestep/nsplit_thermals 和时间平均因子
qtransport_thermals calltherm_interface_mod.F90 logical scalar - 控制是否准备 pq_therm、调用非 CO2 tracer 输送、返回 tracer tendency
dtke_thermals calltherm_interface_mod.F90 logical scalar - 控制是否把界面 TKE 转成层中心 TKE 并调用 thermcell_dqup 输送
r_aspect_thermals thermcell_main_mars.F90 real scalar - 参与 mixed-layer bottom 温度廓线形状计算
ad/bd thermcell_main_mars.F90 real scalars - 控制 detrainment 随归一化高度/状态变化的经验公式
ae/be thermcell_main_mars.F90 real scalars - 控制 entrainment 随浮力和垂直速度变化的经验公式
fdfu/omega/a1/b1/a1inv/b1inv thermcell_main_mars.F90 real scalars - 控制下沉气流比例、速度方程和逆温层速度方程
thermverbose thermcell_main_mars.F90 logical scalar - 控制热羽流内部修正计数、mass flux 修正等日志输出

共享状态与副作用

核心逻辑

  1. 载入模块时进入 implicit none,不依赖其他模块。
  2. 通过 #ifdef MESOSCALE 选择 nsplit_thermals
    • MESOSCALE 路径:物理时间步小于约 200 s,默认只需 4 个热羽流子步长。
    • MESOSCALE 路径:GCM 默认 10 个子步长,源码注释建议 96 physical timesteps/day 且每步调用辐射时使用。
  3. 固定 r_aspect_thermals=1.,供 thermcell_main_mars 调整混合层底部温度廓线。
  4. 固定 tracer 输送开启、TKE 输送关闭、verbose 关闭。
  5. 固定 Colaïtis et al. 2013 热羽流参数:脱离率 ad/bd、卷入率 ae/be、下沉气流 fdfu/omega、速度方程 a1/b1
  6. 给逆温层速度方程变量 a1inv/b1inv 默认值;下游 thermcell_main_mars 在逆温层分支读取它们。

伪代码

module comtherm_h:
    if compiled with MESOSCALE:
        nsplit_thermals = 4
    else:
        nsplit_thermals = 10

    r_aspect_thermals = 1
    qtransport_thermals = true
    dtke_thermals = false
    thermverbose = false

    set detrainment parameters:
        ad = 0.0004
        bd = -0.6697
    set entrainment parameters:
        ae = 0.03683
        be = 0.631631
    set downdraft parameters:
        fdfu = -0.8
        omega = -0.03
    set vertical velocity coefficients:
        a1 = 1
        b1 = 0.0001
        a1inv = 1
        b1inv = 0.0001

参与的主题流程

主题 参与方式
热羽流 / 边界层对流 calltherm_interfacensplit_thermals 分割物理时间步,再调用 thermcell_main_marsthermcell_dqup
tracer 输送 qtransport_thermals=.true. 时,热羽流接口准备 tracer 输入并对非 CO2 tracer 执行质量通量输送
TKE 输送实验路径 dtke_thermals=.false. 默认关闭;若源码改为真,接口会对 q2 做层中心转换并输送
热羽流主体公式 thermcell_main_mars 读取卷入/脱离、下沉气流、速度方程和 r_aspect_thermals 常数
调试诊断 thermverbose 控制 thermcell_main_mars 中若干修正统计和调试输出分支

写法特点

复现要点

待确认

相关页面