SpectraRust/.claude/skills/f2r-check/SKILL.md
2026-03-27 11:59:23 +08:00

5.5 KiB

name description
f2r-check Fortran 到 Rust 模块一致性检查与修复。触发条件: - 用户提到 "检查模块"、"对比模块"、"f2r_check"、"f2r check"、"下一个模块" - 用户询问 Rust 模块是否与 Fortran 源码匹配 - 用户想验证或修复 Rust 实现的正确性 核心工作流:获取推荐 → 检查差异 → 执行修复 → 验证编译 **重要**:检查后必须执行修复,不要因为模块复杂就跳过。

F2R Check - Fortran 到 Rust 一致性检查与修复

检查 Rust 模块与对应 Fortran 模块的一致性,并直接执行修复

标准工作流

┌─────────────────────────────────────────────────────────────┐
│  用户请求: "f2r-check 检查下一个模块"                         │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│  步骤 1: 获取推荐模块                                         │
│  $ python3 scripts/next_module.py                            │
│  输出: 优先级列表,第一个是推荐模块                            │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│  步骤 2: 检查差异                                             │
│  $ python3 scripts/f2r_check.py --diff <MODULE>              │
│  输出: 缺失的调用、流程差异、修复建议                          │
└─────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────┐
│  步骤 3: 执行修复 (必须执行)                                   │
│  - 读取 Fortran 源码                                         │
│  - 读取 Rust 实现                                            │
│  - 添加缺失的调用                                             │
│  - 确保参数传递正确                                           │
└─────────────────────────────────────────────────────────────┘
                              │
                    ┌─────────┴─────────┐
                    │ 依赖模块已实现?    │
                    └─────────┬─────────┘
                     是 │           │ 否
                        ▼           ▼
              ┌─────────────┐ ┌─────────────────────┐
              │ 步骤 4:     │ │ 先修复依赖模块       │
              │ 验证编译    │ │ 然后返回继续修复当前 │
              │ cargo build │ └─────────────────────┘
              └─────────────┘

脚本命令

获取下一个模块

python3 scripts/next_module.py              # 全局推荐(优先级排序)
python3 scripts/next_module.py --path START # 从 START 追踪依赖
python3 scripts/next_module.py --priority   # 完整优先级列表

检查模块

python3 scripts/f2r_check.py START          # 快速检查
python3 scripts/f2r_check.py --diff START   # 详细差异报告
python3 scripts/f2r_check.py --all          # 检查所有模块

状态标识

标识 含义 行动
match 完全匹配 无需修复
⚠️ partial 部分实现 添加缺失调用
mismatch 不匹配 修复逻辑/调用
missing 未实现 完整实现

修复原则

  1. 严格对照 Fortran: 按 Fortran 代码行号,逐行对比 Rust 实现
  2. 保持调用顺序: Fortran 中的 CALL 顺序必须严格保持
  3. 正确映射 COMMON: Fortran COMMON 块变量 → Rust 结构体字段
  4. 控制流程等价: IF/DO/SELECT CASE 逻辑必须一致

模块映射

Fortran Rust
tlusty/extracted/tlusty.f src/tlusty/main.rs
tlusty/extracted/start.f src/tlusty/io/start.rs
tlusty/extracted/initia.f src/tlusty/io/initia.rs
gfree0, gfreed, gfree1 gfree.rs
yint, lagran interpolate.rs

文件路径

  • Fortran: /home/fmq/program/tlusty/tl208-s54/rust/tlusty/extracted/
  • Rust: /home/fmq/.zeroclaw/workspace/SpectraRust/src/