swr_toon.F
路径
LMDZ.MARS\libf\phymars\swr_toon.F
所属目录 / 模块
libf/phymars
文件定位
swr_toon.F 定义 Toon 短波连续散射方案。swmain_mod.F 在 swrtype=2 时调用 SWR_TOON。该例程与 Fouquart 路径共享 aerosol 光学量合成、cvmgt 归一化保护和可选 swrayleigh Rayleigh 合并,但后续不走 Fouquart 多层反射/透过率递推,而是逐列调用内部 GFLUXV,用 delta-Eddington 修正和 Meador-Weaver two-stream 形式求解上下短波通量。
定义的符号
| 符号 |
类型 |
行号 |
作用 |
swr_toon_mod |
module |
1 |
封装 Toon 短波散射例程和内部 two-stream 求解器。 |
SWR_TOON |
subroutine |
7 |
合成层光学参数,并调用 GFLUXV 得到谱段上下通量。 |
GFLUXV |
subroutine |
218 |
对单列层光学量求解上下可见光通量。 |
依赖的模块
| use 模块 |
only 列表 |
用途 |
待确认 |
dimradmars_mod |
sunfr, ndlo2, nsun, nflev, ndlon, naerkind |
数组维度和谱段太阳能量份额。 |
- |
yomlw_h |
nlaylte |
辐射垂直层数。 |
- |
callkeys_mod |
rayleigh |
控制是否合入 Rayleigh 散射。 |
- |
swrayleigh_mod |
swrayleigh |
计算 Rayleigh 柱光学厚度。 |
- |
cvmgt_mod |
cvmgt |
aerosol 光学量归一化除零保护。 |
- |
调用的关键例程
| 被调用例程 |
所在模块 / 文件 |
调用位置 |
作用 |
cvmgt |
cvmgt.F |
行 140-143 |
ZPIZAZ 或 ZTAUAZ 为零时给默认散射参数。 |
swrayleigh |
swrayleigh.F |
行 152 |
计算 Rayleigh 柱光学厚度。 |
GFLUXV |
本文件 |
行 186-189 |
对单列求解 two-stream 上下通量。 |
DSOLVER |
本文件内部后续例程 |
GFLUXV 内 |
求解三对角线性系统。 |
输入
| 输入 |
来源 |
类型 / 维度 |
单位 |
含义 |
KDLON, KFLEV, KNU |
swmain_mod.F |
integer |
- |
当前列数、层数和太阳谱段编号。 |
aerosol, QVISsQREF3d, omegaVIS3d, gVIS3d |
光学表 / aerosol 场 |
arrays |
mixed |
aerosol 光学厚度、谱段比例、单散射反照率和不对称因子。 |
albedo, PDSIG, PPSOL, PRMU, PSEC |
swmain_mod.F |
arrays |
mixed |
地表反照率、sigma 层厚、地表压、太阳天顶角余弦及其倒数。 |
输出
| 输出 |
去向 |
类型 / 维度 |
单位 |
含义 |
PFD |
swmain_mod.F |
real (NDLO2,KFLEV+1) |
normalized flux |
谱段向下短波通量。 |
PFU |
swmain_mod.F |
real (NDLO2,KFLEV+1) |
normalized flux |
谱段向上短波通量。 |
共享状态与副作用
本例程不写 module 状态,也不做文件 I/O。GFLUXV 使用自动数组 2*NAYER,替代旧固定 NL=201 写法以避免垂直层数过多时越界。
核心逻辑
- 按层、列和 aerosol 种类累加谱段光学厚度、散射光学厚度和不对称因子贡献。
- 用
cvmgt 归一化 ZCGAZ 和 ZPIZAZ。
- 若
rayleigh 开启,调用 swrayleigh,按 PDSIG 把 Rayleigh 光学厚度合入层散射参数。
- 对每个水平列,把层序翻转为
GFLUXV 需要的自顶向下数组 DTDEL/WDEL/CDEL。
GFLUXV 执行 delta function 修正、delta-Eddington 系数计算、三对角系统求解,并输出 FP/FM。
- 用顶层向下通量
FM(1) 归一化,把 FP/FM 转回 PFU/PFD,并乘谱段太阳份额 sunfr(KNU)。
伪代码
build total aerosol optical properties
if rayleigh:
add Rayleigh optical depth into layer optical properties
for each column:
reverse layer order into DTDEL, WDEL, CDEL
call GFLUXV(...)
normalize by top downward flux
write PFU/PFD for all interfaces
参与的主题流程
| 主题 |
参与方式 |
| 短波辐射 |
swmain_mod 在 swrtype=2 时调用本例程。 |
| aerosol 辐射 |
各 aerosol 种类的可见光光学性质决定层 two-stream 输入。 |
| Rayleigh 散射 |
rayleigh 开关控制是否加入气体散射。 |
写法特点
SWR_TOON 是固定格式 Fortran,内部还包含 GFLUXV 和线性系统求解辅助例程。
GFLUXV 使用 REAL*8 中间变量提高线性求解稳定性。
- 源码注释明确
UBAR0 == 0 不被算法接受;上游需保证太阳天顶角修正后的 PRMU 有效。
复现要点
swrtype=2 才使用本文件;swrtype=1 走 swr_fouquart。
rayleigh、sunfr、aerosol 光学表和 albedo 必须一致。
- 归一化使用
norm=FM(1),源码中对 norm<=0 的检查被注释掉。
待确认
DSOLVER 的边界条件和矩阵系数建议在后续 routine 级页面中逐式拆解。
相关页面