lwxb.F

路径

LMDZ.MARS\libf\phymars\lwxb.F

所属目录 / 模块

libf\phymars

文件定位

lwxb.F 定义 lwxb_mod 模块,提供长波 LTE 辐射主流程中的边界交换系数构造例程 lwxb。它不计算 Planck 函数,也不重新累计 CO2 或气溶胶光学量;这些输入由 lwu 准备。lwxb 的职责是把 co2_u/co2_up/aer_t 按三类边界路径重组后反复调用 lwtt,再用相邻边界透过率差分写入 yomlw_h::xi 中与地表、空间有关的净交换率。

源码注释把本例程定位为 “transmission function and exchange coefficients for boundaries”,并在矩阵图中只标出地面 0、空间 nlaylte+1 与各大气层 1:nlaylte 之间的条目。因此本页只覆盖边界相关 xi,不把远距离层间交换 lwxd 或相邻层交换 lwxn 的职责并入。

定义的符号

符号 类型 行号 作用
lwxb_mod module 1 封装长波边界交换系数构造例程。
lwxb subroutine 7 计算地面-层、层-空间、地面-空间三类边界透过率差分,并写入共享净交换率表 xi

依赖的模块

use 模块 only 列表 用途 待确认
dimradmars_mod ndlo2, nuco2, ndlon, nflev 提供输入数组和局部工作数组的水平、谱带、垂直维度上限。
yomlw_h xi, nlaylte 读取 LTE 长波有效层数,并把边界交换系数写入共享 xi
lwtt_mod lwtt 由 CO2 吸收路径 zu/zup 计算每个 CO2 谱带的透过率。

调用的关键例程

被调用例程 所在模块 / 文件 调用位置 作用
lwtt lwtt_mod / lwtt.F 95, 116, 146 分别计算层界面到空间、层界面到地面、经地面反射后到空间三类 CO2 透过率。

输入

输入 来源 类型/维度 单位 含义
ig0 lwmain integer grid offset 当前向量块在全局 xi 第一维中的偏移,写入时使用 ig0+jl
kdlon lwmain integer column 当前向量块内有效水平列数,循环范围为 1:kdlon
kflev lwmain integer layer 接口数组的垂直层数参数;主要循环边界由 nlaylte 决定。
emis lwmain 传入的 emis_gaz real(ndlo2) - 地表发射率。lwmain 会在 CO2 冰足够厚时把用于气体计算的发射率设为 1.
aer_t lwu real(ndlo2,nuco2,kflev+1) - CO2 谱带上的累计气溶胶吸收透过率。
co2_u lwu real(ndlo2,nuco2,kflev+1) 吸收路径 从顶到底累计的 CO2 吸收量。
co2_up lwu real(ndlo2,nuco2,kflev+1) 压力缩放吸收路径 带压力效应的累计 CO2 吸收量。

输出

输出 去向 类型/维度 单位 含义
xi(ig0+jl,ja,jk,nlaylte+1) 与对称项 yomlw_h,后续由 lwflux / lwi 读取 shared array - jk 层与空间边界的 CO2 带净交换率。
xi(ig0+jl,ja,0,jk) 与对称项 yomlw_h shared array - 地面与第 jk 层之间的净交换率,乘以地表发射率。
xi(ig0+jl,ja,0,nlaylte+1) 与对称项 yomlw_h shared array - 地面与空间边界之间的净交换率,源码注释说明地面能量收支中当前使用 sigma T4,该项不直接用于地面 budget。

共享状态与副作用

lwxb 唯一的持久副作用是写入 yomlw_h::xi 的边界相关条目。它不读写文件,不分配内存,不打印诊断,也不修改输入数组。写入时所有边界交换率都同时填充互易项,例如 xi(...,jk,nlaylte+1)xi(...,nlaylte+1,jk) 使用相同值。

核心逻辑

  1. jk=1:nlaylte+1 构造层界面到空间的直接路径:zu=co2_u(:,:,jk)zup=co2_up(:,:,jk),气溶胶项直接取 aer_t(:,:,jk);调用 lwtt 后得到 trans(:,:,space,jk)=zt_co2*aer_t
  2. 对同一组边界构造层界面到地面的直接路径:用底部边界 1 与当前边界 jk 的累计差 co2_u(:,:,1)-co2_u(:,:,jk)co2_up(:,:,1)-co2_up(:,:,jk),气溶胶项用 aer_t(:,:,1)/aer_t(:,:,jk);调用 lwtt 后得到 trans(:,:,ground,jk)
  3. 构造经地面反射后再到空间的路径:CO2 路径写成 2*co2_u(:,:,1)-co2_u(:,:,jk),气溶胶路径写成 aer_t(:,:,1)^2/aer_t(:,:,jk),并保存为 trans_emis(:,:,jk)
  4. 对每个真实大气层 jk=1:nlaylte,层-空间交换率取相邻边界透过率差 trans(space,jk+1)-trans(space,jk),再叠加反射路径差分 trans_emis(jk)-trans_emis(jk+1) 乘以 (1-emis)
  5. 地面-层交换率取 trans(ground,jk)-trans(ground,jk+1),并乘以 emis 后写入 xi(0,jk) 和互易项。
  6. 地面-空间交换率取 trans(ground,nlaylte+1),乘以 emis 后写入 xi(0,nlaylte+1) 和互易项。

伪代码

for boundary jk = 1 to nlaylte+1:
  zu  = co2_u(:,:,jk)
  zup = co2_up(:,:,jk)
  zt_aer = aer_t(:,:,jk)
  zt_co2 = lwtt(zu, zup)
  trans(space,jk) = zt_co2 * zt_aer

for boundary jk = 1 to nlaylte+1:
  zu  = co2_u(:,:,1)  - co2_u(:,:,jk)
  zup = co2_up(:,:,1) - co2_up(:,:,jk)
  zt_aer = aer_t(:,:,1) / aer_t(:,:,jk)
  zt_co2 = lwtt(zu, zup)
  trans(ground,jk) = zt_co2 * zt_aer

for boundary jk = 1 to nlaylte+1:
  zu  = 2 * co2_u(:,:,1)  - co2_u(:,:,jk)
  zup = 2 * co2_up(:,:,1) - co2_up(:,:,jk)
  zt_aer = aer_t(:,:,1) * aer_t(:,:,1) / aer_t(:,:,jk)
  zt_co2 = lwtt(zu, zup)
  trans_emis(jk) = zt_co2 * zt_aer

for layer jk = 1 to nlaylte:
  ksi_space = trans(space,jk+1) - trans(space,jk)
  ksi_emis = trans_emis(jk) - trans_emis(jk+1)
  xi(layer,space) = ksi_space + ksi_emis * (1 - emis)
  xi(space,layer) = xi(layer,space)

  ksi_ground = trans(ground,jk) - trans(ground,jk+1)
  xi(ground,layer) = ksi_ground * emis
  xi(layer,ground) = xi(ground,layer)

xi(ground,space) = trans(ground,nlaylte+1) * emis
xi(space,ground) = xi(ground,space)

参与的主题流程

主题 参与方式
辐射计算 在长波 LTE 主流程中负责 lwmain 的边界传输函数阶段,为后续 lwfluxlwi 提供地面/空间相关 xi 条目。
phymars 核心物理模块目录 属于 libf\phymars 长波辐射辅助文件组。

写法特点

复现要点

待确认

相关页面