dust_scaling_mod.F90
路径
LMDZ.MARS\libf\phymars\dust_scaling_mod.F90
所属目录/模块
libf\phymars
文件定位
该文件定义尘埃缩放模块 dust_scaling_mod(110 行),导出唯一例程 compute_dustscaling,由 aeropacity(行 865)在算完各层尘埃光学厚度后调用。它的职责是根据缩放模式 dustscaling_mode 计算缩放因子并就地调整辐射用的尘埃光学厚度 aerosol:
dustscaling_mode==0(freedust):不重缩放,tauscaling=1,aerosol 乘 1(实质不变,仅取下限保护)。
dustscaling_mode==1(GCM v5.3):用尘埃 tracer 算的柱厚度 taudust 把 aerosol 重缩放,使其对应规定场景柱厚度 tau_pref_scenario,缩放因子 tauscaling。
dustscaling_mode==2(GCM v6):调 compute_dust_rad_adjust 得仅辐射用的 dust_rad_adjust(每时间步只算一次),用它缩放 aerosol,不改尘埃质量缩放因子。
本模块是连接 aeropacity(光学厚度)、dust_param_mod(模式开关)、dust_rad_adjust_mod(v6 调整)的尘埃缩放枢纽。
定义的符号
| 符号 |
类型 |
行号 |
作用 |
dust_scaling_mod |
module |
1 |
尘埃缩放模块 |
compute_dustscaling |
subroutine |
7 |
按 dustscaling_mode 计算缩放因子并就地缩放 aerosol |
依赖的模块
| use 模块 |
only 列表 |
用途 |
待确认 |
dust_param_mod |
dustscaling_mode, odpref |
缩放模式开关、参考气压 610 Pa |
否 |
dust_rad_adjust_mod |
compute_dust_rad_adjust |
mode==2 计算辐射调整系数 |
否 |
dimradmars_mod |
iaerdust |
尘埃气溶胶在 aerosol 第三维的索引表 |
否 |
调用的关键例程
| 被调用例程 |
所在模块/文件 |
调用位置 |
作用 |
compute_dust_rad_adjust |
dust_rad_adjust_mod |
行 79(仅 mode==2 且 zday/=zday_prev_call) |
计算 dust_rad_adjust |
输入
| 输入 |
来源 |
类型/维度 |
单位 |
含义 |
ngrid, nlayer, naerkind, naerdust |
aeropacity |
integer scalar |
- |
格点数、层数、气溶胶总数、尘埃气溶胶数 |
zday |
aeropacity |
real scalar |
sol |
日期(用于 mode==2 每步只调一次判断) |
pplev(ngrid,nlayer+1) |
aeropacity |
real |
Pa |
层界面气压(取 pplev(:,1) 表压缩放) |
tau_pref_scenario(ngrid) |
aeropacity |
real |
- |
规定场景在 610 Pa 的尘埃柱厚度 |
IRtoVIScoef(ngrid) |
aeropacity |
real |
- |
场景 IR→VIS 换算系数(传给 compute_dust_rad_adjust) |
输出
| 输出 |
去向 |
类型/维度 |
单位 |
含义 |
tauscaling(ngrid) |
aeropacity→后续物理 |
real (OUT) |
- |
尘埃质量/数量缩放因子(mode!=1 时为 1) |
dust_rad_adjust(ngrid) |
aeropacity |
real (INOUT) |
- |
尘埃辐射调整系数(mode==2 由 compute_dust_rad_adjust 更新) |
aerosol(ngrid,nlayer,naerkind) |
aeropacity→辐射传输 |
real (INOUT) |
- |
就地缩放尘埃气溶胶层光学厚度(下限 1e-20) |
共享状态与副作用
- 例程内
SAVE+THREADPRIVATE:zday_prev_call(行 37-38,初值 -666.),用于保证 mode==2 下 compute_dust_rad_adjust 每时间步只调用一次。
- 就地修改
aerosol(缩放尘埃分量)与 dust_rad_adjust(mode==2)、tauscaling。
- 不读写文件、无日志输出(除被调例程的 firstcall 提示)。
- 本模块无 module 级变量。
核心逻辑
- 设 tauscaling(行 42-45):
dustscaling_mode!=1 时 tauscaling=1(freedust/v6 不用质量缩放)。
- 算 taudust(行 47-67):
mode==1:累加所有尘埃气溶胶(naerdust 个)逐层 aerosol(:,:,iaerdust(iaer)) 得柱厚度。
mode==2:只累加背景尘埃 iaerdust(1)。
- 算缩放因子(行 69-86):
mode==1:tauscaling=tau_pref_scenario*pplev(:,1)/odpref/taudust。
mode==2:若 zday/=zday_prev_call 则调 compute_dust_rad_adjust;更新 zday_prev_call=zday。
- 缩放 aerosol(行 88-107):
mode<=1 用 tauscaling,mode==2 用 dust_rad_adjust,均 max(1e-20, aerosol*因子)。
伪代码
if dustscaling_mode != 1: tauscaling = 1
# 柱厚度
if mode==1: taudust = Σ_iaer Σ_l aerosol(:,l,iaerdust(iaer)) # 全部尘埃
elif mode==2: taudust = Σ_l aerosol(:,l,iaerdust(1)) # 仅背景尘埃
# 缩放因子
if mode==1: tauscaling = tau_pref_scenario*pplev(:,1)/odpref/taudust
elif mode==2:
if zday != zday_prev_call:
compute_dust_rad_adjust(..., taudust, IRtoVIScoef, dust_rad_adjust)
zday_prev_call = zday
# 缩放 aerosol
if mode<=1: aerosol(:,:,iaerdust) = max(1e-20, aerosol * tauscaling)
else: aerosol(:,:,iaerdust) = max(1e-20, aerosol * dust_rad_adjust)
参与的主题流程
| 主题 |
参与方式 |
| 尘埃循环 |
实现三种尘埃缩放模式(freedust/GCM v5.3 tauscaling/GCM v6 dust_rad_adjust),把 GCM 尘埃光学厚度对齐到观测场景 |
| 辐射 |
缩放后的 aerosol 直接喂给辐射传输 |
写法特点
- 自由格式 Fortran 90(
.F90),模块只含一个例程、无 module 级变量。
zday_prev_call 用 SAVE+哨兵初值 -666. 实现“每时间步只调一次” compute_dust_rad_adjust。
- 下限保护
max(1e-20, ...) 防缩放后光学厚度为 0 或负。
mode<=1 分支同时覆盖 freedust(tauscaling=1,缩放无效果)与 v5.3(真实缩放),合并处理。
mode==1 用全部尘埃算 taudust,mode==2 只用背景尘埃 iaerdust(1)——两模式柱厚度口径不同。
复现要点
dustscaling_mode 来自 dust_param_mod(conf_phys 写入):0=freedust、1=GCM v5.3、2=GCM v6。
mode==1 缩放公式:tauscaling=tau_pref_scenario*pplev(:,1)/odpref/taudust,odpref=610。
mode==2 下 compute_dust_rad_adjust 每时间步只调一次(zday/=zday_prev_call 守卫);aeropacity 在一个辐射步内会多次调用 compute_dustscaling(clearatm/nohmons/clearsky 拆分),此守卫避免重复计算。
taudust 口径:mode==1 全尘埃、mode==2 仅 iaerdust(1) 背景尘埃。
- 缩放就地作用于
aerosol(:,:,iaerdust(:)),下限 1e-20。
待确认
- 无显著证据缺口。三模式分支、
taudust 口径差异、zday_prev_call 守卫、调用链(aeropacity→本例程→compute_dust_rad_adjust)均已核验。
相关页面