排序、断言和类型基础工具组页
输入范围
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\sort.F
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\sort_mod.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\assert_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\assert_eq_m.F90
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\misc\nrtype.F90
Mars 运行参与度:接口兼容/条件经过。这些基础工具可能被 COMMON 数值代码复用;本批未确认 Mars 标准主链直接调用。
文件清单
| 文件 | 行数 | 符号 | 作用 |
|---|---|---|---|
sort.F |
37 | sort(n,d) |
旧 F77 简单排序子程序。 |
sort_mod.F90 |
199 | qsort, isort |
real 数组 quicksort / insertion sort,可输出 permutation。 |
assert_m.F90 |
69 | assert generic |
1 到 4 个 logical 或 logical vector 断言。 |
assert_eq_m.F90 |
70 | assert_eq generic |
检查多个 integer 相等并返回共同值。 |
nrtype.F90 |
22 | kind 常量 | Numerical Recipes 风格 kind 参数。 |
排序逻辑
qsort_r使用单 pivot quicksort,递归排序左右分区。qsort_outp_r同时维护 permutation 数组P,用于把相同重排应用到其他数组。isort_r和isort_outp_r使用插入排序,适合短数组或近有序数组。- 源码 TODO 指出接口尚未扩展到 integer,也未支持递减排序。
断言逻辑
assert中任一 logical 为假时,打印 tag 和例程名,然后stop 1。assert_eq在整数不全相等时打印 tag 并stop 1;成功时返回共同整数,常用于数组维度一致性检查。- 这些断言不调用
abort_gcm或abort_physic,因此不会自动触发 history close 或 getin dump。
待确认
- 这些工具在当前 Mars 构建中的实际使用位置,需要在 source coverage matrix 中通过
USE sort_mod/assert_m/assert_eq_m/nrtype汇总。