通用数值 helper 组页
输入范围
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\slopes_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\simple.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\coefpoly_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\arth_m.F90
Mars 运行参与度:条件经过/接口兼容。simple.F90 是 NetCDF95 wrapper 的底层之一;slopes_m、coefpoly_m、arth_m 为通用数值工具,是否经过 Mars 标准运行取决于具体调用方。
模块清单
| 文件 | 行数 | 符号 | 作用 |
|---|---|---|---|
slopes_m.F90 |
226 | slopes, slopes1/2/3/4 |
对 1D 到 4D cell average 沿第一维计算 Van Leer 限制斜率。 |
simple.F90 |
361 | nf95_open/create/def_dim/... |
NetCDF common simple wrappers;详细见 NetCDF95 页面。 |
coefpoly_m.F90 |
52 | coefpoly |
由端点函数值和导数构造三次多项式系数 a0:a3。 |
arth_m.F90 |
82 | arth generic |
生成 real/integer arithmetic progression。 |
slopes 算法
- 输入 cell average
f和 cell boundsx。 - 计算 cell center
xc(i)=(x(i)+x(i+1))/2。 - 两端斜率设为 0。
- 内点若是局部极大或极小,斜率设为 0,避免产生新极值。
- 否则先用中心差分算二阶斜率,再用左右 cell 差分约束其绝对值。
该接口对 2D/3D/4D 数组只沿第一维做同样计算,其余维度作为批量索引。
其他 helper
coefpoly求满足端点值与端点导数的 cubic polynomial,适合 Hermite 型插值或轨迹辅助。arth对短数组逐项递推,对较长数组先生成一段再用块复制式扩展,减少循环次数。simple的nf95_*例程若未传ncerr会直接进入handle_err,因此是带默认 fatal 行为的 NetCDF wrapper。
待确认
slopes_m与动力输送中的 limiter 是否在当前 Mars 标准路径中直接连接,需由后续输送 主页面或 coverage matrix 确认。