重网格和插值工具组页
输入范围
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\regr1_lint_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\regr3_lint_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\regr1_conserv_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\interpolation.F90
Mars 运行参与度:接口兼容/条件经过。本批源码检索未发现 Mars phymars 直接调用这些模块;它们为 COMMON 其他通用插值和后处理路径提供接口。
模块清单
| 文件 | 行数 | 符号 | 作用 |
|---|---|---|---|
regr1_lint_m.F90 |
98 | regr1_lint, regr11_lint, regr12_lint |
一维坐标上的线性插值,支持一列或二维值场。 |
regr3_lint_m.F90 |
100 | regr3_lint, regr33_lint, regr34_lint |
沿第三维重采样 3D/4D 数组。 |
regr1_conserv_m.F90 |
358 | regr1_conserv, regr11/12/13/14_conserv |
按 cell bounds 做分段线性保守平均,可选 slope。 |
interpolation.F90 |
138 | locate, hunt |
Numerical Recipes 风格的二分定位和带初值的 hunt 定位。 |
线性插值
regr1_lint 和 regr3_lint 的核心模式相同:
- 输入源点
xs、源值vs和目标点xt。 - 对每个目标点调用定位逻辑,找到包围区间。
- 用线性权重在相邻两个源值之间插值。
- 目标点在边界处按源码中的端点规则处理。
regr3_lint 固定沿第三维插值,保留前两维或前三维的其他索引。
保守重采样
regr1_conserv 假设 xs 和 xt 描述 cell bounds。每个目标 cell:
- 从当前源 cell 起步。
- 若目标 cell 完全落在当前源 cell 内,直接用
mean_lin。 - 若跨多个源 cell,则逐段累计每个交叠区间的线性均值。
- 若提供
slope,mean_lin使用源 cell 平均值加线性斜率;否则退化为 piecewise constant。
复现要点
- 坐标数组必须单调;
locate/hunt支持升序和降序判断,但调用方需保证输入无重复异常。 - 保守重采样按 bounds 面积平均,不是点值插值;目标结果代表 cell mean。
hunt依赖传入的上一位置jlo,适合目标点连续扫描时减少二分次数。
待确认
- 当前 Mars 标准运行是否有间接路径进入这些重网格模块,需在后续 coverage matrix 中由全库
USE regr*补查。