sig_h2o.F90
路径
LMDZ.MARS\libf\phymars\sig_h2o.F90
所属目录 / 模块
libf\phymars
文件定位
sig_h2o.F90 定义 sig_h2o_mod 模块和 sig_h2o(t) 函数,用一个温度线性公式返回水冰与空气之间的表面张力。它本身不更新云微物理状态,而是被水冰云成核与冰晶增长公式读取:nuclea 用它计算临界胚胎半径 rstar 和形成能垒 fistar,improvedclouds 用它计算 Kelvin 平衡饱和修正 seq。
定义的符号
| 符号 |
类型 |
行号 |
作用 |
sig_h2o_mod |
module |
1 |
水冰表面张力辅助模块。 |
sig_h2o |
double precision function |
8 |
按温度 t 返回水冰-空气表面张力。 |
依赖的模块
| use 模块 |
only 列表 |
用途 |
待确认 |
| - |
- |
本文件没有 use 依赖。 |
- |
调用的关键例程
| 被调用例程 |
所在模块 / 来源 |
调用位置 |
作用 |
dble |
Fortran intrinsic |
16 |
把 real 输入温度转换为双精度后进入线性公式。 |
下游调用点
| 调用方 |
源码位置 |
用途 |
nuclea.F |
use sig_h2o_mod 在 12 行;调用在 119、141 行 |
在水冰异质成核率计算中,表面张力进入临界胚胎半径 rstar = 2*sig_h2o(temp)*vo1/(rgp*temp*log(sat)) 和形成能垒 fistar。 |
improvedclouds_mod.F90 |
use sig_h2o_mod 在 21 行;调用在 324 行 |
在冰晶增长分支中计算 Kelvin 修正 seq = exp(2*sig_h2o(T)*mh2o/(rho_ice*rgp*T*max(rice,1.e-7))),再进入隐式 dMice 公式。 |
输入
| 输入 |
来源 |
类型 / 维度 |
单位 |
含义 |
t |
调用方 |
real scalar |
K |
水冰微物理当前位置的温度。 |
输出
| 输出 |
去向 |
类型 / 维度 |
单位 |
含义 |
sig_h2o |
调用方 |
double precision scalar |
N m-1 |
水冰与空气之间的表面张力。源码注释写作 N.m,公式量纲按表面张力应理解为 N/m。 |
公式
sig_h2o(t) = (141. - 0.15*dble(t)) * 1.e-3
在常见火星水冰云温度范围内,该公式随温度升高线性降低表面张力。例如 t=180 K 时结果约为 0.114 N/m,t=220 K 时结果约为 0.108 N/m。
共享状态与副作用
- 模块没有
SAVE 状态、分配数组、文件 I/O 或标准输出。
- 函数只依赖输入温度,确定性返回标量。
- 没有温度范围检查;极端高温下线性公式可能给出非物理结果。
核心逻辑
- 接收单精度实数温度
t。
- 用
dble(t) 转为双精度。
- 代入
(141 - 0.15*T)*1e-3。
- 以双精度函数值返回。
伪代码
function sig_h2o(t):
return (141.0 - 0.15 * double(t)) * 1.0e-3
参与的主题流程
| 主题 |
参与方式 |
| 水冰异质成核 |
nuclea 通过 sig_h2o(temp) 改变临界胚胎半径和成核能垒,进而改变 dust 到 CCN 的激活率。 |
| 水冰晶增长 / 升华 |
improvedclouds 通过 seq 的 Kelvin 修正改变小冰粒平衡饱和,影响 dMice 的正负和大小。 |
| 水循环微物理可复现性 |
该函数是成核和增长两段共享的表面张力入口,改公式会同时影响成核率和冰晶增长。 |
写法特点
- 文件非常小,只包含一个模块和一个函数。
- 输出是双精度,但输入温度是单精度;调用方在公式外部仍多为 real 微物理状态。
- 源码没有引用经验公式出处,页面按源码字面记录,不外推物理来源。
复现要点
- 复现
nuclea 或 improvedclouds 时应调用同一个 sig_h2o(t),不要在两个下游公式中分别硬编码不同表面张力。
sig_h2o 不检查 t 的合理范围;若诊断高温或负温异常,应先检查上游温度场。
- 单位注释写作
N.m,但下游公式按表面张力使用;复现文档中应按 N/m 处理。
待确认
- 源码未注明该线性表面张力公式的文献来源或有效温度范围;如需高温、低温或与实验数据对比,应另行追溯公式出处。
相关页面