yomlw_h.F90

路径

LMDZ.MARS\libf\phymars\yomlw_h.F90

所属目录 / 模块

libf/phymars

文件定位

yomlw_h.F90 定义模块 yomlw_h,是长波 LTE 辐射链的共享状态和系数表模块。它不直接计算通量或冷却率,而是保存 Planck 多项式系数 xp、CO2 吸收温度依赖系数 at/bt、Padé 透过率系数 ga/gb、Voigt 修正常数 cst_voigt、LTE 计算层数 nlaylte,以及长波净交换率缓存 xi/xi_ground/xi_emis

初始化由 phys_state_var_init_mod 调用 end_yomlw_h 后再调用 ini_yomlw_h(ngrid) 完成。ini_yomlw_h 依据 dimradmars_mod::nuco2/nflev 和传入的水平列数分配长波交换率数组,并把旧 sulw.F 中的固定系数移入 F90 模块状态。下游 lwb/lwu/lwtt/lwflux/lwi/lwxd/lwxn/lwxb 读取或写入这些表,短波和 NLTE 混合路径也读取 nlaylte 来限定 LTE 层范围。

定义的符号

符号 类型 行号 作用
yomlw_h module 1 长波辐射共享状态与系数表模块。
at, bt saved real arrays 6-7 CO2 吸收量温度依赖修正系数,供 lwu 使用。
tref saved real scalar 8 吸收温度依赖参考温度,默认 200.0 K
xp(6,nir) saved real array 9 每个红外谱带的 Planck 函数五次多项式系数,供 lwb 使用。
tstand saved real scalar 10 Planck 多项式的参考温度,默认 200.0 K
ga, gb saved real arrays 11-12 CO2 长波透过率 Padé 近似的分子/分母系数,供 lwtt 使用。
cst_voigt saved real array 13 Voigt 等效吸收量修正常数,供 lwtt 使用。
gcp saved real scalar 14 g/cpp,由 callradite 写入,供长波/短波辐射使用。
nlaylte saved integer scalar 20 LTE 辐射计算层数,由 nlthermeq 写入。
xi saved allocatable real array 22 CO2 15 微米带净交换率主缓存,维度为 (ngrid,nuco2,0:nflev+1,0:nflev+1)
xi_ground saved allocatable real array 23 地面相邻层交换修正缓存,维度为 (ngrid,nuco2)
xi_emis saved allocatable real array 24 发射/邻近层相关交换缓存,维度为 (ngrid,nuco2,nflev-1)
ini_yomlw_h subroutine 31 分配交换率数组并初始化 Planck、吸收、Padé 和 Voigt 系数。
end_yomlw_h subroutine 85 释放 xi/xi_ground/xi_emis

依赖的模块

use 模块 only 列表 用途 待确认
dimradmars_mod nir, nabsmx, npademx 模块声明阶段确定 xp/ga/gb/cst_voigt 的谱带和系数维度。
dimradmars_mod nuco2, nflev ini_yomlw_h 内分配 CO2 谱带交换率数组和垂直层范围。

调用的关键例程

被调用例程 所在模块 / 文件 调用位置 作用
- - 本文件内部只做分配、释放和常数表赋值,不调用用户例程。

输入

输入 来源 类型/维度 单位 含义
ngrid phys_state_var_init_mod 调用 ini_yomlw_h 的实参 integer scalar grid columns 当前物理网格水平列数,决定 xixi_groundxi_emis 的第一维。
nir dimradmars_mod integer parameter spectral band count 红外谱带数,决定 xp 第二维。
nuco2 dimradmars_mod integer parameter CO2 band count CO2 15 微米带计算的谱带数,决定 xi 系列数组第二维。
nflev dimradmars_mod integer saved scalar vertical layers 辐射有效层数,决定 xi 系列数组垂直维度。
npademx, nabsmx dimradmars_mod integer parameters coefficient dimensions Padé/吸收系数表的最大维度。

输出

输出 去向 类型/维度 单位 含义
xp lwb real(6,nir) Planck polynomial units 红外谱带 Planck 函数多项式系数。
at, bt, tref lwu real arrays/scalar mixed 吸收量温度修正系数和参考温度。
ga, gb, cst_voigt lwtt real arrays mixed CO2 透过率 Padé 近似和 Voigt 等效吸收量常数。
xi lwxd/lwxn/lwxb 写入,lwflux/lwi/lwmain 读取 real(ngrid,nuco2,0:nflev+1,0:nflev+1) exchange-rate-like 长波 CO2 净交换率矩阵缓存。
xi_ground lwxn 写入,lwflux/lwxn 路径读取 real(ngrid,nuco2) exchange-rate-like 地面相邻层交换修正。
xi_emis lwxd 写入,lwxn 读取 real(ngrid,nuco2,nflev-1) exchange-rate-like 近邻/发射相关交换修正缓存。

共享状态与副作用

核心逻辑

  1. ini_yomlw_h(ngrid)dimradmars_mod 导入 nuco2/nflev
  2. (ngrid,nuco2,0:nflev+1,0:nflev+1) 分配 xi,按 (ngrid,nuco2) 分配 xi_ground,按 (ngrid,nuco2,nflev-1) 分配 xi_emis
  3. xi 全部置零。源码注释说明这一步过去在 lwmainfirstcall 初始化中完成。
  4. reshape 填入 xp(6,nir),作为 lwb 的 Planck 函数多项式系数。
  5. reshape 填入 at(2,2)bt(2,2),作为 lwu 的吸收量温度依赖系数。
  6. 填入 ga(1:4,1:2)gb(1:4,1:2),作为 lwtt 的 Padé 透过率系数。
  7. reshape 填入 cst_voigt(2,2),作为 lwtt 的 Voigt 等效吸收量修正常数。
  8. end_yomlw_h 分别检查三个可分配数组是否已分配,若已分配则释放。

伪代码

ini_yomlw_h(ngrid):
    import nuco2, nflev from dimradmars_mod

    allocate xi(ngrid, nuco2, 0:nflev+1, 0:nflev+1)
    allocate xi_ground(ngrid, nuco2)
    allocate xi_emis(ngrid, nuco2, nflev-1)
    xi = 0

    xp = fixed Planck polynomial table from old sulw path
    at, bt = fixed absorber temperature-dependence tables
    ga, gb = fixed Pade coefficient tables
    cst_voigt = fixed Voigt correction table

end_yomlw_h:
    deallocate xi, xi_ground, xi_emis if allocated

参与的主题流程

主题 参与方式
辐射计算 提供长波 LTE 链的共享系数和净交换率缓存;lwb/lwu/lwtt/lwflux/lwi/lwxd/lwxn/lwxb 直接依赖本模块状态。
高层大气 / NLTE nlayltenlthermeq 计算,用于 LTE 与 NLTE 辐射层范围衔接。
物理状态初始化 通过 end_yomlw_h + ini_yomlw_h(ngrid) 管理长波数组生命周期。

写法特点

复现要点

待确认

相关页面