dust_windstress_lift.F90

路径

LMDZ.MARS\libf\phymars\dust_windstress_lift.F90

所属目录/模块

libf\phymars

文件定位

该文件定义风应力起尘(dust lifting by surface winds)模块 dust_windstress_lift_mod(168 行),导出例程 dust_windstress_lift,由 vdifc(行 881,地表交换段,lifting 路径)调用。它的职责是:根据近地面摩擦速度是否超过起尘阈值,按 White (1979) / Marticorena 公式计算水平尘埃通量 fhoriz,再乘以各 tracer 的起尘效率 alpha_lift 得到地表向第一层中点的尘埃通量 dqslift(起尘时为负,表示从地表注入大气)。

模块保存起尘方案号 windstress_lift_scheme(默认 0,旧方案;当前仅支持 0)和起尘应力阈值 stress_seuil

定义的符号

符号 类型 行号 作用
dust_windstress_lift_mod module 1 风应力起尘模块
windstress_lift_scheme integer SAVE 5 起尘方案号,默认 0(旧方案),当前仅支持 0
dust_windstress_lift subroutine 12 按摩擦速度阈值算水平通量并转为地表尘埃通量 dqslift

依赖的模块

use 模块 only 列表 用途 待确认
tracer_mod(非 MESOSCALE) alpha_lift, radius 各 tracer 起尘效率系数、粒径
tracer_mod(MESOSCALE) alpha_lift, radius, igcm_dust_mass, igcm_dust_number, ref_r0, r3n_q 额外用于 MESOSCALE 下从 stress.def 重设起尘系数
comcstfi_h g 重力加速度(水平通量公式分母)
ioipsl_getin_p_mod getin_p firstcall 读取 windstress_lift_scheme

调用的关键例程

被调用例程 所在模块/文件 调用位置 作用
getin_p ioipsl_getin_p_mod 行 89 读取 windstress_lift_scheme 配置键
abort_physic (phymars 公共中止例程) 行 95 windstress_lift_scheme/=0 时致命中止

输入

输入 来源 类型/维度 单位 含义
ngrid, nlay, nq vdifc integer scalar - 格点数、层数、tracer 数
rho(ngrid) vdifc real kg/m³ 地表空气密度
pcdh_true(ngrid) vdifc real - 拖曳系数 Cd
pcdh(ngrid) vdifc real m/s Cd·|V|(摩擦速度计算用)
co2ice(ngrid) vdifcpqsurf_tmp(:,igcm_co2) real kg/m² 地表 CO2 冰;>0 时该点不起尘
alpha_lift(nq) tracer_mod real - 各 tracer 起尘效率系数

输出

输出 去向 类型/维度 单位 含义
dqslift(ngrid,nq) vdifcpdqsdif_tmp)→地表交换/tracer 注入 real (OUT) 通量单位 地表向第一层中点的尘埃通量(起尘时<0)

共享状态与副作用

核心逻辑

  1. MESOSCALE 块(行 60-84,仅宏开启):尝试读 stress.defulim/alpha,重设 stress_seuil=0.02*ulim²alpha_lift
  2. firstcall(行 86-99)getin_pwindstress_lift_scheme(默认 0);非 0 则中止。
  3. 方案 0(行 102-164)
    • 水平通量(行 108-140):逐格点初始化 fhoriz=0;若 co2ice>0 跳过(极冠/霜覆盖不起尘);算阈值摩擦速度 ust=sqrt(stress_seuil/rho) 与实际摩擦速度 us=pcdh/sqrt(pcdh_true);若 us>ust,按 White(1979) fhoriz=2.61*(rho/g)*(us-ust)*(us+ust)²
    • 垂直通量(行 146-162):对每个 tracer dqslift(:,iq)=-alpha_lift(iq)*fhoriz(负号表示向大气注入)。

伪代码

#ifdef MESOSCALE: 读 stress.def 重设 stress_seuil, alpha_lift

if firstcall:
    getin windstress_lift_scheme (default 0)
    if scheme != 0: abort_physic

if windstress_lift_scheme == 0:
    for ig:
        fhoriz(ig) = 0
        if co2ice(ig) > 0: skip                 # 冰/霜覆盖不起尘
        ust = sqrt(stress_seuil/rho(ig))         # 阈值摩擦速度
        us  = pcdh(ig)/sqrt(pcdh_true(ig))       # 实际摩擦速度
        if us > ust:
            fhoriz(ig) = 2.61*(rho/g)*(us-ust)*(us+ust)^2   # White 1979
    for iq, ig:
        dqslift(ig,iq) = -alpha_lift(iq)*fhoriz(ig)

参与的主题流程

主题 参与方式
尘埃循环 实现风应力起尘源项:把超阈值近地风转为地表尘埃注入通量 dqslift,是尘埃循环的源端,经 vdifc 注入大气

写法特点

复现要点

待确认

相关页面