辐射计算主题

主题目标

辐射计算是 LMDZ.MARS 物理包的核心过程之一,负责计算火星大气中的长波(热红外)和短波(太阳辐射)辐射传输过程。该主题的目标是:

  1. 计算大气层的辐射加热率和冷却率
  2. 计算地表和大气顶的辐射通量
  3. 处理气溶胶(尘埃、水冰、CO2冰)的散射和吸收
  4. 为大气动力学提供辐射强迫

源码依据callradite_mod.F 注释说明 "Subroutine designed to call the main canonic radiative transfer subroutine 'lwmain' et 'swmain' to compute radiative heating and cooling rate and radiative fluxes to the surface."

入口

辐射计算的主入口是 callradite() 子例程,位于 libf/phymars/callradite_mod.F

调用位置:在 physiq_mod.Fphysiq() 主物理例程中被调用。

源码依据callradite_mod.F 第 7-15 行定义了子例程接口。

参与文件

核心文件

文件 职责
callradite_mod.F 辐射计算主入口,调度气溶胶光学准备、长波和短波辐射
lwmain_mod.F 长波 LTE 辐射主程序;调度 Planck、吸收量、交换率、通量和半隐式冷却率修正
swmain_mod.F 短波辐射主程序;对两太阳谱段调用 Fouquart 或 Toon solver,输出短波加热率和上下行短波通量
aeropacity_mod.F 气溶胶光学厚度计算
aeroptproperties.F 气溶胶光学属性计算
updatereffrad_mod.F 更新气溶胶粒径分布
suaer.F90 加载光学属性查找表

长波辐射辅助文件

文件 职责
lwb.F 普朗克函数计算
lwu.F 吸收物质量计算
lwxd.F 远距离传输函数
lwxn.F 邻近层传输函数
lwxb.F 边界层传输函数
lwflux.F 辐射通量和冷却率计算
lwi.F 半隐式格式计算

短波辐射辅助文件

文件 职责
swr_fouquart.F Fouquart 短波辐射算法
swr_toon.F Toon 短波辐射算法
swrayleigh.F 瑞利散射计算

配置和维度文件

文件 职责
dimradmars_mod.F90 辐射计算维度定义
yomlw_h.F90 长波辐射共享系数、nlayltexi 交换率缓存
callkeys_mod.F90 物理过程开关;提供 callradrayleighswrtypedustrefircallnirco2callnlte 等辐射相关控制量

主调用链

callradite()  (callradite_mod.F)
├── updatereffrad()      更新气溶胶粒径分布
│   ├── updaterdust()    更新尘埃粒径
│   ├── updaterice_micro() 更新水冰粒径
│   └── updaterice_microco2() 更新CO2冰粒径
├── aeroptproperties()   计算3D散射参数
├── aeropacity()         计算气溶胶光学厚度
├── lwmain()             长波辐射主程序
│   ├── lwb()            普朗克函数
│   ├── lwu()            吸收物质量
│   ├── lwxd()           远距离传输函数
│   ├── lwxn()           邻近层传输函数
│   ├── lwxb()           边界层传输函数
│   ├── lwflux()         通量和冷却率
│   └── lwi()            半隐式格式
└── swmain()             短波辐射主程序
    ├── swr_fouquart()   Fouquart算法
    └── swr_toon()       Toon算法

状态变量

输入变量

变量 类型 维度 单位 含义
icount INTEGER 标量 - 物理调用计数器
ngrid INTEGER 标量 - 水平网格点数
nlayer INTEGER 标量 - 垂直层数
nq INTEGER 标量 - 示踪剂数量
ls REAL 标量 rad 太阳经度(Ls)
zday REAL 标量 sol 日期(自Ls=0起的火星日)
pq REAL (ngrid,nlayer,nq) kg/kg 示踪剂混合比
albedo REAL (ngrid,2) - 地表反照率(两个太阳波段)
emis REAL (ngrid) - 地表发射率
mu0 REAL (ngrid) - 太阳天顶角余弦
pplev REAL (ngrid,nlayer+1) Pa 层边界压力
pplay REAL (ngrid,nlayer) Pa 层中点压力
pt REAL (ngrid,nlayer) K 大气温度
tsurf REAL (ngrid) K 地表温度
fract REAL (ngrid) - 时间间隔的白天分数
dist_sol REAL 标量 AU 火星-太阳距离

输出变量

变量 类型 维度 单位 含义
dtlw REAL (ngrid,nlayer) K/s 长波加热率
dtsw REAL (ngrid,nlayer) K/s 短波加热率
fluxsurf_lw REAL (ngrid) W/m² 地表向下长波通量
fluxsurf_dn_sw REAL (ngrid,2) W/m² 地表向下短波通量
fluxsurf_up_sw REAL (ngrid,2) W/m² 地表向上短波通量
fluxtop_lw REAL (ngrid) W/m² 大气顶向上长波通量
fluxtop_dn_sw REAL (ngrid,2) W/m² 大气顶向下短波通量
fluxtop_up_sw REAL (ngrid,2) W/m² 大气顶向上短波通量
tau REAL (ngrid,naerkind) - 各类气溶胶的可见光光学厚度
aerosol REAL (ngrid,nlayer,naerkind) - 各层各类气溶胶的光学厚度

内部变量

变量 类型 维度 单位 含义
reffrad REAL (ngrid,nlayer,naerkind) m 气溶胶有效半径
nueffrad REAL (ngrid,nlayer,naerkind) - 气溶胶有效方差
QVISsQREF3d REAL (ngrid,nlayer,nsun,naerkind) - 可见光消光效率比
omegaVIS3d REAL (ngrid,nlayer,nsun,naerkind) - 可见光单次散射反照率
gVIS3d REAL (ngrid,nlayer,nsun,naerkind) - 可见光不对称因子
QIRsQREF3d REAL (ngrid,nlayer,nir,naerkind) - 红外消光效率比
omegaIR3d REAL (ngrid,nlayer,nir,naerkind) - 红外单次散射反照率
gIR3d REAL (ngrid,nlayer,nir,naerkind) - 红外不对称因子

配置开关

callphys.def 中的关键配置

开关 默认值 作用
naerkind - 气溶胶种类数量
tauvis - 可见光光学厚度(场景模式)
iaervar - 尘埃光学厚度变化模式
swrtype 1 短波辐射算法选择(1=Fouquart, 2=Toon)
ilwb 1 边界层传输函数更新频率
ilwd 1 远距离传输函数更新频率
ilwn 1 邻近层传输函数更新频率
water .true. 是否包含水循环
activice .true. 是否激活水冰
co2clouds .false. 是否包含CO2云
rdstorm .false. 是否包含沙尘暴
topflows .false. 是否包含地形尘埃

dimradmars_mod 中的维度配置

参数 含义
ndomainsz 子域大小(用于内存优化)
nflev 辐射计算的有效层数
nsun 太阳光谱区间数(通常为2)
nir 红外光谱区间数(通常为4)
naerkind 气溶胶种类数

数据依赖

外部数据

数据 文件位置 作用
光学属性查找表 datadir/ 气溶胶的散射和吸收属性
尘埃场景数据 datadir/ 尘埃光学厚度的时间变化
初始状态 startfiles/ 初始尘埃和冰晶分布

模块依赖

模块 作用
tracer_mod 示踪剂定义和索引
comcstfi_h 物理常数(g, cpp等)
time_phylmdz_mod 时间相关参数
geometry_mod 网格几何信息

计算阶段

阶段 1:初始化(firstcall)

  1. 识别气溶胶种类(尘埃、水冰、CO2冰)
  2. 加载光学属性查找表(SUAER
  3. 设置维度参数

阶段 2:气溶胶粒径更新

  1. 调用 updatereffrad() 更新各类气溶胶的粒径分布
  2. 尘埃:根据质量和数量混合比计算几何平均半径
  3. 水冰:根据微物理方案或典型值计算
  4. CO2冰:根据微物理方案计算

阶段 3:光学属性计算

  1. 调用 aeroptproperties() 计算3D散射参数
  2. 使用对数正态分布和高斯-勒让德积分
  3. 计算可见光和红外的消光效率、单次散射反照率、不对称因子

阶段 4:光学厚度计算

  1. 调用 aeropacity() 计算各层各类气溶胶的光学厚度
  2. 处理尘埃场景(Viking、MGS、TES等)
  3. 处理沙尘暴和地形尘埃
  4. 计算尘埃缩放系数

阶段 5:长波辐射计算

  1. 计算普朗克函数(lwb
  2. 计算吸收物质量(lwu
  3. 计算传输函数(lwxdlwxnlwxb
  4. 计算冷却率和通量(lwflux
  5. 应用半隐式格式(lwi

阶段 6:短波辐射计算

  1. 计算火星太阳常数
  2. 循环两个太阳光谱区间
  3. 调用 Fouquart 或 Toon 算法
  4. 计算加热率

阶段 7:输出整理

  1. 将子域结果合并到全局数组
  2. 设置高层大气(nlaylte以上)的加热率为零
  3. 输出诊断信息

与其他主题的耦合

与尘埃循环的耦合

源码依据callradite_mod.F 使用 dust_param_mod 中的 doubleqactivesubmicron 开关。

与水循环的耦合

源码依据callradite_mod.F 使用 callkeys_mod 中的 wateractivice 开关。

与CO2循环的耦合

源码依据callradite_mod.F 使用 callkeys_mod 中的 co2cloudsactiveco2ice 开关。

与边界层的耦合

与动力核心的耦合

输出结果

直接输出

  1. 长波加热率dtlw):K/s,用于大气温度演化
  2. 短波加热率dtsw):K/s,用于大气温度演化
  3. 地表通量:用于地表能量平衡
  4. 大气顶通量:用于行星能量收支

诊断输出

  1. 气溶胶光学厚度tau):用于与观测比较
  2. 气溶胶粒径rdustricericeco2):用于微物理诊断
  3. 密度缩放光学厚度dsodust):用于与TES观测比较

伪代码总览

SUBROUTINE callradite(...)
  ! 1. 初始化(firstcall)
  IF (firstcall) THEN
    ! 识别气溶胶种类
    ! 加载光学属性查找表
    CALL SUAER
  END IF

  ! 2. 更新气溶胶粒径分布
  CALL updatereffrad(...)

  ! 3. 计算3D散射参数
  CALL aeroptproperties(...)

  ! 4. 计算光学厚度
  CALL aeropacity(...)

  ! 5. 子域循环
  DO jd = 1, ndomain
    ! 分割输入变量

    ! 6. 长波辐射计算
    CALL lwmain(...)

    ! 7. 短波辐射计算
    cste_mars = flux_1AU / (dist_sol * dist_sol)
    CALL swmain(...)

    ! 8. 合并输出变量
  END DO

  ! 9. 设置高层大气加热率为零
  IF (nlayer > nlaylte) THEN
    dtlw(:, nlaylte+1:nlayer) = 0.
    dtsw(:, nlaylte+1:nlayer) = 0.
  END IF
END SUBROUTINE

复现检查点

必须保留的逻辑

  1. 气溶胶种类识别:必须正确匹配 callphys.def 中的 naerkindname_iaer
  2. 光学属性查找表:必须使用正确的查找表文件
  3. 子域分割:必须正确处理 ndomainsz 维度
  4. LTE层限制:必须使用 nlaylte 限制辐射计算范围

关键公式

  1. 火星太阳常数cste_mars = flux_1AU / (dist_sol * dist_sol)
  2. 光学厚度计算aerosol = 0.75 * QREFvis / (rho * reffrad) * mass * dp / g
  3. 加热率计算PHEAT = gcp * ZDFNET / PDP

验证检查点

  1. 光学厚度合理性待确认:典型值 0.1-5.0(可见光)需补充观测、文档或测试依据
  2. 加热率量级待确认:长波 ~1 K/solar day、短波 ~1-10 K/solar day 的量级需补充源码、文档或测试依据
  3. 能量守恒待确认:大气顶入射短波、反射短波、向上长波与地表吸收的闭合检查需数值验证

相关模块

待确认