nlteparams_h.F90
路径
LMDZ.MARS\libf\phymars\nlteparams_h.F90
所属目录 / 模块
libf/phymars
文件定位
nlteparams_h.F90 定义 nlteparams_h 模块,集中保存 LTE 长波辐射与 NLTE 冷却倾向之间过渡所需的 4 个编译期常量。它不属于 nlte_paramdef_h 的快速 NLTE 谱线/网格参数集合;本文件只服务于 blendrad.F 与 nlthermeq.F 的过渡层控制。
下游路径很直接:blendrad 读取 ptrans 和 zwi,用 alpha = 1/(1+(pplay/ptrans)**zwi) 在 LTE 倾向与 NLTE 倾向之间平滑加权;nlthermeq.F 读取 ptrans、zw 和 pminte,决定 LTE 辐射方案至少要计算到哪一层,并在首次调用时打印这些参数。
定义的符号
| 符号 |
类型 |
行号 |
作用 |
nlteparams_h |
module |
1 |
LTE/NLTE 辐射倾向过渡参数模块。 |
ptrans |
real parameter |
10 |
过渡中心压强,固定为 0.1 Pa。 |
zw |
real parameter |
12 |
过渡半宽,固定为 0.5 个标高。 |
pminte |
real parameter |
14 |
LTE 长波辐射至少应计算到的压强上限,定义为 0.4*ptrans,即 0.04 Pa。 |
zwi |
real parameter |
18 |
blendrad 使用的过渡指数,定义为 2./zw,当前为 4.0。 |
依赖的模块
| use 模块 |
only 列表 |
用途 |
待确认 |
| 无 |
- |
本文件只定义 parameter 常量,不依赖其他 module。 |
否 |
调用的关键例程
| 被调用例程 |
所在模块 / 文件 |
调用位置 |
作用 |
| 无 |
- |
- |
本文件没有 contains,不定义也不调用可执行例程。 |
输入
| 输入 |
来源 |
类型 / 维度 |
单位 |
含义 |
| 无运行时输入 |
源码字面常量 |
real,parameter |
Pa / 标高 |
常量在编译期固定。 |
输出
| 输出 |
去向 |
类型 / 维度 |
单位 |
含义 |
ptrans |
blendrad.F, nlthermeq.F |
scalar real parameter |
Pa |
LTE/NLTE 过渡中心;blendrad 在 pplay=ptrans 时得到 alpha=0.5。 |
zw |
nlthermeq.F |
scalar real parameter |
scale heights |
首次调用诊断输出中的过渡半宽。 |
pminte |
nlthermeq.F |
scalar real parameter |
Pa |
搜索 nlaylte 的阈值;源码注释说明 LTE 至少计算到该压强。 |
zwi |
blendrad.F |
scalar real parameter |
1 / scale heights |
过渡权重公式中的指数,等于 2/zw。 |
共享状态与副作用
- 本模块没有
save 变量、I/O、诊断输出、文件访问或运行时副作用。
- 它的影响发生在下游:修改
ptrans/zw/pminte/zwi 会改变 blendrad 的 LTE/NLTE 加权曲线和 nlthermeq 选择的 LTE 计算层数。
pminte 与 zwi 是派生常量:pminte=0.4*ptrans,zwi=2./zw。复现实验如果只改 ptrans 或 zw,这两个下游常量会随编译重新计算。
核心逻辑
- 编译时建立
nlteparams_h 模块。
- 固定过渡中心压强
ptrans=0.1 Pa。
- 固定半宽
zw=0.5 个标高。
- 从
ptrans 派生 pminte=0.4*ptrans,供 nlthermeq 找到 LTE 计算至少覆盖到的层。
- 从
zw 派生 zwi=2./zw,供 blendrad 把 tanh 型过渡写成压强幂函数。
伪代码
module nlteparams_h:
ptrans = 0.1 Pa
zw = 0.5 scale heights
pminte = 0.4 * ptrans
zwi = 2 / zw
blendrad:
alpha = 1 / (1 + (pplay / ptrans) ** zwi)
dtrad = (1-alpha) * LTE + NIR_CO2 + alpha * NLTE
nlthermeq:
find nlaylte from the highest-pressure reference column
stop scanning when pplay(igpmax,nlaylte) > pminte
参与的主题流程
| 主题 |
参与方式 |
| LTE/NLTE 辐射过渡 |
提供过渡中心、半宽和 LTE 覆盖阈值。 |
| 辐射倾向合成 |
blendrad 使用 ptrans/zwi 计算 alpha,把 zdtsw+zdtlw 逐渐切换到 zdtnlte。 |
| 长波 LTE 覆盖层选择 |
nlthermeq 使用 pminte 确定 yomlw_h::nlaylte,保证 LTE 方案覆盖到过渡层以上。 |
写法特点
- 文件是极小的 Fortran 90 参数模块,所有值都是
real,parameter。
- 源码注释仍写
nlteparams.h,但当前实现文件是 .F90 module,名称为 nlteparams_h。
zwi 不是独立调参常量,而是 zw 的倒数派生形式;blendrad.F 的注释明确说明它来自 zwi=2/zw。
复现要点
ptrans 单位是 Pa,必须与 blendrad 输入 pplay 的 Pa 单位一致。
ptrans=0.1 Pa 时,blendrad 的 alpha 在该压强处为 0.5;高压侧 LTE 权重大,低压侧 NLTE 权重大。
pminte=0.04 Pa 控制 nlthermeq 中 nlaylte 的搜索停止条件;改变它会改变 LTE 长波方案实际计算到的层数。
zw=0.5 使 zwi=4.0,过渡相对陡峭;如果改宽过渡层,需要同时检查 blendrad 的 alpha 曲线和 nlthermeq 的 LTE 覆盖范围是否仍匹配。
待确认
ptrans=0.1 Pa 与 zw=0.5 的物理校准来源未在本文件中给出;只能从 blendrad.F / nlthermeq.F 的 2000 年注释确认其用途。
pminte=0.4*ptrans 注释称“almost one scale height above transition in worst case is very safe”,但该安全裕度的外部推导未在源码内展开。
相关页面