microphys_h.F90

路径

LMDZ.MARS\libf\phymars\microphys_h.F90

所属目录 / 模块

libf\phymars

文件定位

microphys_h.F90 定义 microphys_h 模块,是水冰和 CO2 云微物理共享的常数与线程私有状态头文件。它本身不含例程、不读配置、不执行计算;下游云方案、成核、增长阻力、质量传输和地表 HDO 通量例程通过 use microphys_h, only: ... 读取这些常数,或读写其中少量 SAVE 状态。

源码可分为两段:

  1. H2O/HDO/CO2/N2 的通用分子常数、水冰成核常数,以及水云微物理 bin 数和共享半径数组。
  2. CO2 云微物理常数、CO2 成核 bin 数、CO2 半径数组和接触参数。

定义的符号

符号 类型 行号 作用
microphys_h module 1 微物理共享常数和状态模块。
nbin_cld integer parameter 10 水云微物理半径 bin 数,固定为 5。
To real parameter 13 参考温度 273.15 K。
nav double precision parameter 15 阿伏伽德罗常数。
rgp double precision parameter 17 理想气体常数。
kbz double precision parameter 19 Boltzmann 常数。
mh2o, mhdo, mco2, mn2 double precision parameter 21, 23, 25, 27 H2O、HDO、CO2、N2 摩尔质量。
molco2, molh2o, molhdo double precision parameter 30, 32, 34 气体分子有效半径。
sigh2o double precision parameter 36 水冰/汽表面张力。
desorp, nus, surfdif, m0 double precision parameter 40, 42, 46, 48 水分子在尘埃基底上的脱附、跳跃、表面扩散和单分子质量常数。
mteta real save, threadprivate 52 水冰接触参数 m=cos(theta);由 conf_phys 初始化。
vo1 double precision save, threadprivate 56 水分子体积;由 improvedclouds firstcall 写入。
rad_cld double precision save, threadprivate array 59 水云微物理半径 bin;由 improvedclouds firstcall 写入。
nbinco2_cld integer parameter 67 CO2 成核/云微物理 bin 数,固定为 100。
sigco2, desorpco2, nusco2, surfdifco2, m0co2 double precision parameter 69, 73, 77, 81, 83 CO2 冰成核和质量传输常数。
mtetaco2 real parameter 87 CO2 在尘埃/流星尘 CCN 上使用的固定接触参数。
vo1co2 double precision save, threadprivate 90 CO2 分子体积;源码中声明为共享状态,本文件不初始化。
rad_cldco2 double precision save, threadprivate array 94 CO2 云微物理半径 bin;由 co2cloud firstcall 写入。
threshJA real parameter 97 微物理阈值参数,当前值为 1。

依赖的模块

use 模块 only 列表 用途 待确认
本文件只声明常数和保存型变量,不 use 其他模块。

调用的关键例程

被调用例程 所在模块 / 文件 调用位置 作用
本文件不含可执行例程。

输入

输入 来源 类型/维度 单位 含义
mteta conf_phys.Fgetin_p("mteta", mteta),仅 temp_dependent_m=.false. 时读配置 real scalar - 水冰接触参数,默认 0.95。
rad_cld improvedclouds_mod.F90 firstcall double precision nbin_cld m 水云微物理半径 bin。
vo1 improvedclouds_mod.F90 firstcall double precision scalar m3 水分子体积。
rad_cldco2 co2cloud_mod.F90 firstcall double precision nbinco2_cld m CO2 云微物理半径 bin。

输出

输出 去向 类型/维度 单位 含义
H2O/HDO/CO2/N2 常数 growthrate, hdo_surfex, massflowrateco2, nuclea, nucleaco2, dust_coagulation_main parameter 见源码注释 分子质量、半径、气体常数、表面张力和成核常数。
mteta improvedclouds, improvedco2clouds, nuclea threadprivate saved scalar - 水冰接触参数;CO2 水冰 CCN 分支也用它。
rad_cld / rad_cldco2 nuclea / nucleaco2、CO2 云分布展开 threadprivate arrays m 成核和 CCN 尺度分布使用的半径网格。
m0 / m0co2 nuclea / nucleaco2 / dust_coagulation_mod parameter kg 单分子质量。

共享状态与副作用

核心逻辑

  1. 声明水云微物理 bin 数、参考温度、分子常数和水冰成核参数。
  2. 暴露水冰接触参数、单分子体积和半径数组,供 conf_phys / improvedclouds 初始化,供 nuclea 等例程读取。
  3. 声明 CO2 云微物理 bin 数、CO2 成核/扩散常数和固定接触参数 mtetaco2
  4. 暴露 CO2 单分子体积和半径数组,供 CO2 云路径初始化并供 nucleaco2improvedco2cloudsco2cloud 使用。

伪代码

module microphys_h:
    define water/cloud constants:
        nbin_cld = 5
        To, nav, rgp, kbz
        molecular masses and effective radii
        water nucleation constants
        m0 = mh2o / nav

    declare threadprivate mutable water state:
        mteta
        vo1
        rad_cld(nbin_cld)

    define CO2 microphysics constants:
        nbinco2_cld = 100
        sigco2, desorpco2, nusco2, surfdifco2
        m0co2 = mco2 / nav
        mtetaco2 = 0.95

    declare threadprivate mutable CO2 state:
        vo1co2
        rad_cldco2(nbinco2_cld)
        threshJA = 1

参与的主题流程

主题 参与方式
水循环 improvedcloudsnucleagrowthratehdo_surfex 提供分子常数、水冰半径 bin 和接触参数。
CO2 循环 co2cloudimprovedco2cloudsnucleaco2massflowrateco2 提供 CO2 成核/增长常数和半径 bin。
尘埃循环 dust_coagulation_mod 读取 kbzm0co2,CO2 / 水云 CCN 也通过尘埃 tracer 与微物理常数耦合。

写法特点

复现要点

待确认

相关页面