physiq 水循环调用点

本页只追踪 physiq 主时间步循环中与水循环直接相关的调用点 watercloud(大气水冰云微物理)及其上下游:调用前的有效半径/辐射准备、调用后的 tendency 注入、与沉降(callsedim)和诊断输出的关系。不覆盖 physiq 的其他物理过程(CO2 循环见 physiq-co2-cycle-callpoints)。

所属文件

LMDZ.MARS\libf\phymars\physiq_mod.F

源码 4162 行。本页涉及的核心调用点 call watercloud 在行 1831。

所属模块

physiq_mod(SUBROUTINE physiq / physiq_mod 内)

相关 use 语句

语句 引入对象
16 use watercloud_mod, only: watercloud, zdqcloud, zdqscloud 水冰云微物理调度例程及其模块级 tendency 数组
18 use updaterad, only: ... 半径反演(见下,watercloud 内部也 use)
23 use callsedim_mod, only: callsedim 沉降例程(第 9b 段,作用于水冰)
147 use callkeys_mod, only: water, activice, microphys, CLFvarying 水循环主开关、辐射活化、微物理、次网格云分数
155 use callkeys_mod, only: sedimentation, scavenging 沉降开关、洗脱(尘埃随冰沉降)开关

watercloudwater 控制;activicemicrophysscavengingCLFvarying 是其下游子开关,决定 tendency 注入的范围。

调用顺序总览

水循环相关代码出现在主时间步的多个物理段,顺序如下(行号为大致定位):

  1. 第 8 段辐射(行 1085–1140)call callradite(行 1097,CLFvarying 时行 1121 再调一次 clear-sky)。该调用以 rdust,rice,nuice 为 INOUT,反演出本步辐射用的水冰/尘埃有效半径,并据此算云的光学厚度 taucloudtes。这是 rice/rdust 在进入 watercloud 前的赋值来源。
  2. 第 9a 段水与冰(行 1823–1910)IF (water)call watercloud(行 1831)。返回 zdqcloud/zdtcloud,随后逐项注入 pdq/pdt
  3. 第 9a bis 段 CO2 云(行 1912–2102)co2cloud,与水循环并列,详见 CO2 调用点页。
  4. 第 9b 段沉降(行 2133–2184)IF (sedimentation)call callsedim(行 2143),以 rice,rsedcloud,rhocloud 为输入,处理水冰(及尘埃)的重力沉降,把 zdqsed/zdqssed 注入 pdq/dqsurf
  5. 第 9c 段化学(行 2202+)calchim,把 zdqcloud,zdqscloud 也作为输入传入(行 2226),即云微物理结果参与光化学表面积/非均相过程。
  6. 诊断段(行 2585+/2855+):先建工作副本 zq = pq + pdq*ptimestep(行 2587),再用更新后的 zqrice 重算柱积分水汽/水冰、TES 光学厚度、有效半径等,并 write_output

因此水循环的数据流是:callradite 反演 rice → watercloud 用 rice 并更新示踪物 → callsedim 用 rice/rsedcloud 沉降 → 诊断用更新后的 zqrice


调用点:watercloud(行 1831)

控制条件

IF (water) THEN(行 1829)。整个块到行 1910 END IF ! of IF (water) 结束。

调用语句

call watercloud(ngrid,nlayer,ptimestep,
     zplev,zplay,pdpsrf,zzlay, pt,pdt,
     pq,pdq,zdqcloud,zdtcloud,
     nq,tau,tauscaling,rdust,rice,nuice,
     rsedcloud,rhocloud,totcloudfrac)

主要输入

变量 含义
zplev,zplay,pdpsrf,zzlay 压力层/层间高度、表压变化率
pt,pdt 温度及当前累计温度 tendency(watercloud 内构造 zt=pt+pdt*ptimestep 工作温度)
pq,pdq 示踪物及当前累计 tendency
tau,tauscaling 尘埃光学厚度及缩放
rdust,rice,nuice 尘埃/水冰有效半径与方差(rdust/rice 为 INOUT,来自上游 callradite

主要输出

变量 方向 含义
zdqcloud(:,:,:) OUT(模块级,行 16 引入) 各示踪物的云微物理 tendency(水汽/水冰/HDO/CCN/尘埃)
zdtcloud(:,:) OUT 潜热释放温度 tendency
rice,nuice INOUT/OUT 更新后的水冰有效半径与方差(供本步后续沉降与诊断)
rsedcloud(:,:) OUT 云沉降半径(callsedim 用)
rhocloud(:,:) OUT 云密度
totcloudfrac(:) INOUT 云分数(A. Pottier 2013)

watercloud 内部据 microphys 选择 improvedclouds(完整微物理,见 improvedclouds_mod)或 simpleclouds(见 simpleclouds_mod),并调用 updaterice_micro/updaterice_typ 更新 rice(详见 watercloud_mod)。

调用后的 tendency 注入(行 1836–1908)

注入顺序及各自的开关条件:

  1. 潜热温度(if (activice),行 1837–1841)pdt += zdtcloud。只有水冰辐射活化时才把凝结潜热计入温度,否则云微物理对温度无反馈。
  2. 水汽/水冰无条件增量(行 1843–1849)pdq(:,:,igcm_h2o_vap) += zdqcloud(...,h2o_vap)pdq(:,:,igcm_h2o_ice) += zdqcloud(...,h2o_ice)
  3. HDO(if (hdo),行 1851–1859):增量 hdo_vaphdo_ice
  4. CCN 质量/数量(if (microphys),行 1864–1885):增量 ccn_massccn_number,随后两组 where 负值保护:ccn_massccn_number 任一将变负时,把两者一起重置为 -pq/ptimestep + 1.e-30。注释(行 1862–1863)说明这是单精度舍入导致 N/M 可能为负的保护。
  5. 尘埃质量/数量(if (scavenging),行 1887–1908):增量 dust_massdust_number(尘埃被云洗脱),同样配两组成对 where 负值保护。

负值保护的统一模式:质量与数量耦合,任一变负就把这一对一起钳到 -pq/ptimestep + 1.e-30,保证更新后 pq + ptimestep*pdq ≥ 1.e-30。这与 CO2 云调用点的保护逻辑一致。


与沉降(第 9b 段 callsedim)的关系

IF (sedimentation)(行 2136)→ call callsedim(行 2143),传入 rice,rsedcloud,rhocloud(行 2146,均由 watercloud 更新)。callsedim 返回 zdqsed(各层 tendency)和 zdqssed(地表通量),随后:

注释(行 2134)明确沉降“acts also on water ice”。因此水冰先经 watercloud 凝结/蒸发,再经 callsedim 重力下落到地表;二者顺序不可调换,callsedim 依赖 watercloud 输出的 rice/rsedcloud

rdstorm 时(行 2152–2166)风暴尘不能沉到地表,把其地表通量回填到最低层 tendency 后清零——与水冰无关,但在同一沉降块内。


与辐射(第 8 段 callradite)的关系

callradite(行 1097)在 watercloud 之前执行,以 rice,nuice,rdust 为 INOUT:它反演出本步辐射使用的水冰/尘埃有效半径,并输出云的红外光学厚度 taucloudtes(行 1105)。activice 决定水冰是否作为辐射活性气溶胶参与该计算。

关键时序:本步辐射用的 rice 是上一步 watercloud 留下的值rice 跨步保留,行 306 声明在例程级)。watercloud(行 1831)随后用同一 rice 数组、再据新的水冰量更新它,供本步后续的 callsedim 与诊断、以及下一步的 callradite 使用。

CLFvarying 为真时(行 1115–1140)对 clear-sky 部分再调一次 callradite,并按云分数 totcloudfrac 加权合成通量与加热率——次网格云分数处理。


水循环诊断/输出调用点

诊断均在工作副本 zq = pq + pdq*ptimestep(行 2587,含上述全部注入)之后,位于 if (water) 诊断块(行 2855–2946):

位置 内容
行 2863–2893 柱积分 mtot(水汽)、icetot(水冰)、mtotD/icetotD(HDO,if (hdo));用 rice 算 825 cm⁻¹ 吸收光学厚度 opTES/tauTES(模拟 TES 反演)
行 2894–2895 call watersat 算饱和混合比 zqsatsatu = zq(h2o_vap)/zqsat(过饱和度)
行 2897–2920 if (scavenging):柱积分 Nccntot/Mccntot,按冰表面积加权的有效半径 rave
行 2921–2933 else(无 scavenging):按冰质量加权的 rave
行 2935–2944 A. Pottier 加权 rave2(按水冰质量加权 rice
行 3032–3056 wstats 累计水汽/水冰体积混合比、h2o_ice_s 地表冰
行 3283–3286 if (igcm_h2o_ice.ne.0):算水冰体积混合比
行 3517–3555 write_output 输出 q01(h2o_ice)/q02(h2o_vap)、h2o_ice/h2o_vap 混合比、地表 h2o_ice_s(_slope)、rice(行 3625)
行 4024–4029 write_output 输出 zdqcloud 凝结 tendency(h2o_ice/h2o_vap 及二者之和)

comm_RICE = rice(行 3297)把更新后的水冰半径写入通信模块,供后续/外部使用。

控制流程小结

[第 8 段] callradite(行 1097, INOUT rice/rdust/nuice) -> taucloudtes
    IF (CLFvarying): 再调 clear-sky callradite, 按 totcloudfrac 合成

[第 9a 段] IF (water):
    call watercloud(..., INOUT rice, OUT zdqcloud/zdtcloud/rsedcloud/rhocloud)
        内部: microphys ? improvedclouds : simpleclouds; updaterice_*
    IF (activice): pdt += zdtcloud
    pdq(h2o_vap/h2o_ice) += zdqcloud          (无条件)
    IF (hdo): pdq(hdo_vap/hdo_ice) += zdqcloud
    IF (microphys): pdq(ccn_mass/number) += zdqcloud + 负值保护
    IF (scavenging): pdq(dust_mass/number) += zdqcloud + 负值保护

[第 9b 段] IF (sedimentation): callsedim(..., rice/rsedcloud/rhocloud)
    pdq += zdqsed; dqsurf += zdqssed (per islope)

[第 9c 段] calchim(..., zdqcloud, zdqscloud)   (云结果参与化学)

[诊断] zq = pq + pdq*ptimestep
    if (water): 柱积分 mtot/icetot, opTES/tauTES, satu, rave/rave2
    wstats; write_output(h2o_*, rice, zdqcloud)

复现注意事项

已核验边界