尘埃循环主题

主题目标

尘埃循环是 LMDZ.MARS 物理包中影响最广的过程之一。火星大气尘埃决定了大气的辐射加热/冷却,进而驱动温度、环流和其他循环。本主题串联尘埃从"注入大气—被风/对流输运—改变粒径分布—产生光学厚度—被辐射模块使用—沉降回地表"的完整流程,目标是说明:

  1. 尘埃示踪剂(质量、数量、暴尘、地形尘)如何在大气中被抬升、注入与沉降。
  2. 尘埃粒径分布如何由二阶矩(质量+数量)方案计算。
  3. 尘埃光学厚度如何计算,并如何被缩放以匹配观测尘暴场景(dust scenario)。
  4. 尘埃如何与辐射主题耦合。

源码依据dust_param_mod.F90 第 1 行注释 "This module contains flags and saved variables for the dust cycle"。

入口

尘埃循环没有单一入口,而是分散在 physiq() 主物理例程(physiq_mod.F)的多个阶段中按顺序调用。

入口例程 文件 调用阶段 说明
aeropacity() aeropacity_mod.F 辐射前(经 callradite 计算尘埃光学厚度并缩放
compute_dustscaling() dust_scaling_mod.F90 aeropacity 计算/应用 tauscalingdust_rad_adjust
updatereffrad() updatereffrad_mod.F 辐射前(经 callradite 更新尘埃粒径 rdust
compute_dtau() compute_dtau_mod.F90 物理 3.4 节 计算地表尘埃注入率 dustliftday
dust_windstress_lift() dust_windstress_lift.F90 vdifc 风应力抬升尘埃
dustdevil() dustdevil.F90 物理尘卷风段 尘卷风抬升尘埃
rocketduststorm() rocketduststorm_mod.F90 物理 3.x 节 火箭式尘暴垂直输运
topmons() topmons_mod.F90 物理 3.x 节 地形(山顶)尘流输运
callsedim() callsedim_mod.F 沉降段 尘埃与水冰重力沉降

源码依据physiq_mod.F 第 21-99、1379-1530、2107-2135 行的 use/CALL 语句。

参与文件

文件 参与阶段 作用
dust_param_mod.F90 全局状态 尘埃循环的开关与保存变量(activedoubleqliftingfreedusttauscalingdustscaling_modedust_rad_adjustodpref 等)
dust_windstress_lift.F90 抬升 风应力抬升(White 1979/Marticorena 公式)
dustdevil.F90 抬升 尘卷风抬升(Renno et al. 1998)
compute_dtau_mod.F90 抬升/注入 由 GCM 与场景的光学厚度差计算注入率 dustliftday
read_dust_scenario_mod.F90 数据读取 读取并时空插值观测尘暴场景文件 dust_*.nc
updaterad.F90 粒径 updaterdust 等:由质量/数量混合比算几何平均半径
updatereffrad_mod.F 粒径 rdust 转换为辐射用有效半径 reffrad
aeropacity_mod.F 光学厚度 计算各层各类尘埃的可见光/红外光学厚度,输出 dsodusttau_pref_gcm
dust_scaling_mod.F90 缩放 把 GCM 尘埃光学厚度缩放到匹配场景
dust_rad_adjust_mod.F90 缩放 GCM v6 风格:仅对辐射传输做缩放(dust_rad_adjust
rocketduststorm_mod.F90 输运 火箭式尘暴:辐射加热驱动暴尘垂直抬升
topmons_mod.F90 输运 地形尘流:山顶之上的次网格尘埃抬升
dust_coagulation_mod.F90 微物理 尘埃凝并(可选)
callsedim_mod.F 沉降 重力沉降

rocketduststormtopmonsdust_coagulation 的内部数值方案已由对应文件页覆盖;本主题只保留跨模块调用链、配置门控和复现检查点。

尘埃示踪剂

尘埃以一组示踪剂(tracer)形式存在,具体哪些被激活取决于配置开关。

示踪剂 索引变量 启用条件 含义
尘埃质量 igcm_dust_mass dustbin>=1 背景尘埃质量混合比 (kg/kg)
尘埃数量 igcm_dust_number doubleq 背景尘埃数量混合比 (kg⁻¹)
亚微米尘 igcm_dust_submicron submicron 次级(亚微米)尘埃分布
暴尘质量/数量 igcm_stormdust_mass / igcm_stormdust_number rdstorm 火箭式尘暴尘埃
地形尘质量/数量 igcm_topdust_mass / igcm_topdust_number topflows 山顶尘流尘埃

源码依据tracer_mod 中定义的 igcm_* 索引;updatereffrad_mod.F 第 13-23 行、aeropacity_mod.F 第 20-23 行的 use tracer_mod

配置开关

开关 文件/默认值 作用
dustbin conf_phys.F L472 默认 0 传输的尘埃 bin 数量;>0 才传输尘埃
active L477 默认 .false. 尘埃是否辐射活跃(仅 dustbin>0 时有意义)
doubleq L492 默认 .false. 是否使用 2 阶矩(质量+数量)方案,需 dustbin>=2
submicron L496 默认 .false. 是否加入亚微米尘埃分布
lifting L518 默认 .false. 是否从地表抬升尘埃
callddevil L689 默认 .false. 是否启用尘卷风抬升参数化
freedust L550 默认 .false. 真:不再用 tauscaling 重缩放尘埃质量/数量;需配 doubleq
dustscaling_mode L563-567 freedust 时默认 0,否则默认 1;可被 callphys.def 覆盖
iaervar L201 默认 8 尘埃光学厚度场景模式(见下表)
dustinjection L532 默认 0 >0 启用地表注入方案(compute_dtau
coeff_injection L536 默认 0.25 尘埃注入方案系数
rdstorm L378 默认 .false. 火箭式尘暴参数化
topflows L388 默认 .false. 山顶尘流参数化
windstress_lift_scheme dust_windstress_lift.F90 L88 默认 0 风应力抬升方案号(当前仅 0 合法)
dust_devil_scheme dustdevil.F90 L89 默认 0 尘卷风方案号(当前仅 0 合法)

dustscaling_mode 三种取值(dust_scaling_mod.F90conf_phys.F 注释):

源码依据conf_phys.F 第 559-578 行;dust_scaling_mod.F90 第 42-107 行。

复现风险dustscaling_mode 的默认值依赖 freedust,复现时必须先确定 freedustdoubleq 的组合,否则会触发 abort_physicconf_phys.F L553-578 有多处互斥校验)。

尘埃场景(iaervar)

read_dust_scenario 根据 iaervar 决定读取哪个 NetCDF 场景文件:

iaervar 文件 说明
4 dust_tes.nc 旧 TES 同化 MY24(参考压力 700 Pa)
6 dust_cold.nc 冷场景
7 dust_warm.nc 暖场景
8 dust_clim.nc 气候态(默认)
24-37 dust_MY24.ncdust_MY37.nc 观测火星年 MY24-MY37
124/125/126 dust_tes_MY24/25/26.nc 旧 TES 同化(700 Pa)

源码依据read_dust_scenario_mod.F90 第 72-95 行。

场景变量类型:dustop(可见光消光)或 cdod/cdodext(红外吸收/消光)。若为红外(IRscenario=.true.),最终乘 IRtoVIScoef(ig) 转换为可见光消光。旧 TES 文件额外乘 1.3*(odpref/700.) 校正;swrtype==1(Fouquart)时再乘 0.825/1.3

源码依据read_dust_scenario_mod.F90 第 139-174、387-411 行。

状态变量

变量 来源 单位 含义 生命周期
tauscaling(ngrid) dust_param_mod - 尘埃质量/数量的缩放转换系数 SAVE,逐步更新
dust_rad_adjust(ngrid) dust_param_mod - 仅辐射用的尘埃缩放系数 SAVE,逐步更新
dust_rad_adjust_prev/next dust_rad_adjust_mod - 用于跨 sol 线性插值的端点值 SAVE
dtau(ngrid) compute_dtau_mod - GCM 与场景在 610 Pa 处的光学厚度差 SAVE
rdust(ngrid,nlayer) updaterad/updatereffrad m 尘埃几何平均半径 每步重算
reffrad(ngrid,nlayer,naerkind) updatereffrad m 辐射用有效半径 每步重算
aerosol(ngrid,nlayer,naerkind) aeropacity - 各层各类气溶胶光学厚度 每步重算
dsodust(ngrid,nlayer) aeropacity - 背景尘埃密度缩放光学厚度(红外,供与观测比较) 每步重算
tau_pref_gcm(ngrid) aeropacity - GCM 在 610 Pa 处的可见光尘埃柱光学厚度 每步重算
tau_pref_scenario(ngrid) read_dust_scenario - 场景在 610 Pa 处的可见光尘埃柱光学厚度 每步重算

参考压力常数 odpref = 610. Padust_param_mod.F90 第 19 行)。

主调用链

physiq()  (physiq_mod.F)
│
├── [辐射前] callradite()
│   ├── updatereffrad()          更新尘埃粒径 reffrad
│   │   └── updaterdust()        doubleq: rdust = (r3n_q*qdust/ndust)^(1/3)
│   ├── aeropacity()             计算尘埃光学厚度
│   │   ├── read_dust_scenario() 读取并插值场景 tau_pref_scenario
│   │   │   └── (IR场景) × IRtoVIScoef
│   │   ├── [累加] aerosol(:,:,iaerdust)  及 dsodust, tau_pref_gcm
│   │   └── compute_dustscaling()
│   │       ├── mode 1: tauscaling = tau_pref_scenario*ps/odpref/taudust
│   │       │           aerosol *= tauscaling
│   │       └── mode 2: compute_dust_rad_adjust()  (跨 sol 插值)
│   │                   aerosol *= dust_rad_adjust
│   └── (lwmain/swmain 使用 aerosol)   → 辐射主题
│
├── [3.x 输运] rocketduststorm() / topmons()   暴尘/地形尘垂直输运
├── [3.4 注入] compute_dtau()        → dustliftday (注入率)
│
├── [扩散 vdifc] dust_windstress_lift()  风应力抬升 (lifting=T)
│                 使用 dustliftday 注入 (dustinjection>0)
├── [尘卷风] dustdevil()              callddevil=T
└── [沉降] callsedim()                尘埃/水冰重力沉降

源码依据:调用顺序见 physiq_mod.Fupdatereffradupdaterdustupdatereffrad_mod.F 第 99-106 行;aeropacitycompute_dustscalingaeropacity_mod.F 第 39 行 use dust_scaling_mod

推断rocketduststormtopmonscompute_dtauphysiq 中的精确先后次序按 physiq_mod.F 第 1379-1530 行的出现顺序判断;其与扩散/沉降段的相对位置以源码行号为准,但完整控制流(含各 IF 分支条件)未逐一展开。

计算阶段

阶段 1:粒径更新(updatereffradupdaterdust

doubleq.AND.active 时,对每层每点由质量与数量混合比计算几何平均半径:

rdust = ( r3n_q * qdust / ndust )^(1/3)

并对极小/极大值用阈值 r3dustmin/r3dustmax(对应 rdustmin=1e-8 mrdustmax=500e-6 m)截断;否则(非 doubleq)固定 rdust=0.8e-6 mnueffdust=0.3。随后转为辐射有效半径:dust_doubleqreffrad = rdust*ref_r0dust_conrathreffrad = rdust*(1+nueffdust)^2.5

源码依据updaterad.F90 第 203-238 行;updatereffrad_mod.F 第 99-113、228-234 行。

阶段 2:光学厚度计算(aeropacity

每层各类尘埃光学厚度按下式累加(doubleq):

aerosol(ig,l,iaer) = 0.75 * QREFvis3d / (rho_dust * reffrad) * qmass * dp / g

同时计算红外密度缩放光学厚度 dsodust(用 QREFir3d,供与 TES/MCS 观测比较)和 GCM 柱光学厚度 tau_pref_gcm(换算到 610 Pa 参考压力)。

源码依据aeropacity_mod.F 第 423-455、888-910、726-736 行。

阶段 3:尘埃缩放(compute_dustscaling

源码依据dust_scaling_mod.F90 第 40-108 行。

compute_dust_rad_adjust(mode 2)逻辑:在每个格点本地时间跨越 t_scenario_sol=14/24 sol(即 14:00)时更新目标,目标 = tau_pref_scenario_next*ps/odpref/taudust(上限 5),再在前后两天的 14:00 端点间按本地时间线性插值。

源码依据dust_rad_adjust_mod.F90 第 66-119 行;dust_param_mod.F90 第 28 行 t_scenario_sol

阶段 4:地表抬升与注入

阶段 5:沉降(callsedim

尘埃(与水冰)按重力沉降回地表。

沉降调度见 callsedim_mod,单粒径下落速度公式和 Stokes-Cunningham 修正见 newsedim_mod,守恒输运格式见 vlz_fi

数据依赖

数据 来源 用途
dust_*.nc 尘暴场景 datadir/callphys.defdatadir 提供 tau_pref_scenario 用于缩放/注入
光学属性(QREFvis3d/QREFir3d callradite/suaer 查找表 光学厚度计算的消光效率
rho_dustref_r0r3n_qalpha_liftalpha_devil tracer_mod 密度、参考半径、半径换算与抬升系数
stress.def(仅 MESOSCALE 编译) 工作目录 自定义抬升阈值

源码依据read_dust_scenario_mod.F90 第 100-110 行;dust_windstress_lift.F90 第 60-84 行(#ifdef MESOSCALE)。

与其他主题的耦合

其他主题 耦合方式
辐射 aerosol(缩放后的尘埃光学厚度)直接进入 lwmain/swmain;尘埃粒径 reffrad 决定光学属性。详见 themes/radiation.md
水循环 尘埃作为水冰凝结核(CCN),updaterccn/微物理使用尘埃;尘埃粒径影响水冰云
CO₂ 循环 尘埃作为 CO₂ 冰凝结核(updaterccnCO2);CO₂ 冰覆盖地表时抑制尘埃抬升(co2ice>0 则不抬升)
边界层/扩散 vdifc 同时处理尘埃湍流扩散与风应力抬升;尘卷风依赖边界层结构
动力核心 辐射加热(受尘埃控制)驱动环流,风场反过来决定抬升与输运

源码依据vdifc_mod.F 第 31、43 行 use dust_param_mod/use dust_windstress_lift_modupdaterad.F90 第 255-292 行 updaterccn/updaterccnCO2

输出结果

输出 去向 含义
aerosol 辐射模块 各层尘埃光学厚度
dsodust/dsords/dsotop 诊断输出 背景/暴/地形尘的密度缩放红外光学厚度(与观测比较)
tau_pref_gcm 诊断/缩放 GCM 尘埃柱光学厚度(610 Pa)
tau_pref_scenario 缩放/诊断 场景目标光学厚度
tau_pref_targetdtaudustliftday write_output 诊断 注入方案诊断量
rdust 诊断/微物理 尘埃粒径
尘埃示踪剂趋势 pdq* 大气示踪剂演化 抬升/注入/沉降/输运对尘埃质量与数量的趋势

源码依据compute_dtau_mod.F90 第 83-108 行的 write_outputaeropacity_mod.F 输出参数列表第 95-117 行。

伪代码总览

! ---- 每个物理步,按 physiq 顺序 ----

! A. 辐射前:粒径与光学厚度
CALL updatereffrad(...)       ! rdust = (r3n_q*qdust/ndust)^(1/3) ; reffrad
CALL aeropacity(...)
  IF (iaervar/=1) CALL read_dust_scenario(... tau_pref_scenario)
  DO 各层各尘类:
    aerosol = 0.75*QREFvis3d/(rho_dust*reffrad)*qmass*dp/g
    累加 dsodust, tau_pref_gcm
  CALL compute_dustscaling(...)
    SELECT CASE (dustscaling_mode)
      CASE(1): tauscaling = tau_pref_scenario*ps/odpref/taudust
               aerosol = max(1e-20, aerosol*tauscaling)
      CASE(2): CALL compute_dust_rad_adjust(...)   ! 跨 sol 14:00 插值
               aerosol = max(1e-20, aerosol*dust_rad_adjust)
      CASE(0): tauscaling = 1                       ! freedust
! (随后 lwmain/swmain 使用 aerosol —— 见辐射主题)

! B. 输运与注入
IF (rdstorm)  CALL rocketduststorm(...)
IF (topflows) CALL topmons(...)
IF (dustinjection>0) CALL compute_dtau(... dustliftday)

! C. 抬升(在 vdifc 内)
IF (lifting) THEN
  IF (doubleq) THEN
    IF (dustinjection==0) 使用 old constant lifting 源项
    IF (dustinjection==1) 使用 dustliftday 注入
  ELSE
    CALL dust_windstress_lift(... dqslift)  ! 风应力阈值路径
  ENDIF
ENDIF
IF (callddevil) CALL dustdevil(... pdqdev,pdqs_dev)

! D. 沉降
CALL callsedim(...)            ! 尘埃 + 水冰

复现检查点

必须保留的逻辑

  1. 二阶矩半径公式rdust = (r3n_q*qdust/ndust)^(1/3),并保留 r3dustmin/max 阈值截断。
  2. 光学厚度公式0.75*QREF/(rho_dust*reffrad)*qmass*dp/g,可见光用 QREFvis3d,红外(dsodust)用 QREFir3d
  3. 参考压力 610 Pa:所有柱光学厚度换算都用 odpref=610(旧 TES 文件需 700→610 校正)。
  4. 缩放模式选择dustscaling_modefreedust/doubleq/iaervar 的互斥约束必须保留,否则运行会中止。
  5. 抬升阈值与公式:White 1979 水平通量公式与 stress_seuil=0.0225;CO₂ 冰覆盖点不抬升。注意该路径在当前 GCM doubleq=.true. 分支中不会被 dustinjection=0 调到。
  6. dust_rad_adjust 跨 sol 插值:以本地 14:00(t_scenario_sol=14/24)为锚点,上限 5。

关键公式

  1. 几何平均半径:rdust = (r3n_q*qdust/ndust)^(1/3)
  2. 层光学厚度:aerosol = 0.75*QREFvis3d/(rho_dust*reffrad)*qmass*(p_l - p_{l+1})/g
  3. mode1 缩放:tauscaling = tau_pref_scenario*ps/odpref/taudust
  4. 风应力水平通量:fhoriz = 2.61*(rho/g)*(us-ust)*(us+ust)^2ust = sqrt(stress_seuil/rho)
  5. 注入率:dustliftday = coeff_injection*(dtau*ps/odpref)/(daysec*(tf-ti))

验证检查点

  1. 光学厚度合理性:背景尘埃可见光柱光学厚度典型 0.1-1(晴期),尘暴期可达数倍。dustscaling_mode=0 的 10 天短试验已见 dust-free-evolution-tests:dust devil 候选 E 的 tau_pref_gcm 10 天均值约 0.526,末值约 0.482;仍需长积分验证。
  2. 缩放一致性:mode1 下 tau_pref_gcm 经缩放后应≈tau_pref_scenario
  3. 质量守恒:抬升/注入为负趋势(离开地表),沉降为正向地表通量,长期收支应闭合。待确认:未核验收支闭合实现。
  4. 自由尘埃配置边界:当前 def-only 候选为 freedust=.true., dustscaling_mode=0, lifting=.false., dustinjection=0, callddevil=.true.;若要 two-moment 风应力阈值起尘,需要源码改造或新增分支。

相关模块

待确认