lwtt.F

路径

LMDZ.MARS\libf\phymars\lwtt.F

所属目录 / 模块

libf\phymars

文件定位

lwtt.F 定义 lwtt_mod 模块,提供长波 LTE 辐射中 CO2 15 微米带透过率的底层计算例程 lwtt。它不直接访问层温、压力或气溶胶光学厚度;这些上游准备工作由 lwu.F 生成累计 CO2 吸收量 co2_u/co2_up 和气溶胶透过率 aer_t,再由 lwxd.Flwxn.Flwxb.F 按远距离层、相邻层和边界交换几何构造 u/up 增量后调用 lwtt

本例程的职责很窄:对每个 CO2 谱带和水平列,把吸收量 u 与压力缩放吸收量 up 合成为 Voigt/Doppler 近似下的等效吸收量 ueq,再用 yomlw_h 中的 Padé 系数 ga/gb 通过 Horner 算法求有理函数 tr=xn/xd。输出 tr 随后与调用方已经准备好的气溶胶透过率相乘,进入净交换率 xi 的差分组合。

定义的符号

符号 类型 行号 作用
lwtt_mod module 1 封装长波 CO2 带透过率计算例程。
lwtt subroutine 7 用 CO2 吸收量和压力缩放吸收量计算每个谱带的长波透过率 tr

依赖的模块

use 模块 only 列表 用途 待确认
dimradmars_mod ndlon, ndlo2 提供调用参数和局部工作数组的水平维度上限。
yomlw_h ga, gb, cst_voigt 提供 Padé 分子/分母系数和 Voigt 等效吸收量修正系数。

调用的关键例程

被调用例程 所在模块 / 文件 调用位置 作用
- - lwtt 只做本地数组计算,不调用其他用户例程。

输入

输入 来源 类型/维度 单位 含义
kdlon lwxd/lwxn/lwxb integer column 当前向量化处理的水平列数,循环范围为 1:kdlon
u 调用方由 co2_u 差分或子层累加构造 real(ndlo2,nu) 吸收量 CO2 路径吸收量。lwtt 本身不换算单位,只按数值进入幂函数。
up 调用方由 co2_up 差分或子层累加构造 real(ndlo2,nu) 压力缩放吸收量 压力效应修正后的 CO2 吸收量;源码用 sqrt(up)
nu 调用方传入,当前调用均为 nuco2 integer band count 需要计算的 CO2 谱带数。

输出

输出 去向 类型/维度 单位 含义
tr lwxd/lwxn/lwxbzt_co2 real(ndlo2,nu) - CO2 15 微米带透过率,调用方会再乘以气溶胶透过率并组合为 xi

共享状态与副作用

lwtt.F 不定义保存型模块变量,不读写文件,不打印诊断,也不修改 yomlw_h 的共享表。它只读取 gagbcst_voigt 和维度常量,副作用限于写入调用方传入的 tr 数组。

核心逻辑

  1. 按谱带 ja=1:nu 和水平列 jl=1:kdlon 双循环处理所有输入路径。
  2. 计算等效吸收量: ueq = sqrt(up) + cst_voigt(1,ja) * u ** cst_voigt(2,ja)
  3. 用 Horner 形式计算 Padé 分子: xn = ga(1) + ueq * (ga(2) + ueq * ga(3))
  4. 用 Horner 形式计算 Padé 分母: xd = gb(1) + ueq * (gb(2) + ueq * (gb(3) + ueq))
  5. 输出透过率 tr = xn / xd

伪代码

for each CO2 band ja:
  for each active column jl:
    ueq = sqrt(up(jl,ja)) + cst_voigt(1,ja) * u(jl,ja) ** cst_voigt(2,ja)

    numerator = ga(1,ja) + ueq * (ga(2,ja) + ueq * ga(3,ja))
    denominator = gb(1,ja) + ueq * (gb(2,ja) + ueq * (gb(3,ja) + ueq))

    tr(jl,ja) = numerator / denominator

参与的主题流程

主题 参与方式
辐射计算 为长波 LTE CO2 带内净交换率提供基础透过率;被 lwxdlwxnlwxb 反复调用。
phymars 核心物理模块目录 属于 libf\phymars 的长波辐射辅助文件。

写法特点

复现要点

待确认

相关页面