# TLUSTY/SYNSPEC Rust 重构进度跟踪 ## 统计 - TLUSTY 总单元: 304 - TLUSTY 纯函数: 195 (无 COMMON 依赖) - SYNSPEC 总单元: 168 - SYNSPEC 纯函数: 93 ## 当前状态 - **已完成重构**: 28 个函数 - **测试通过**: 102 个 (单元测试 + Fortran 对比测试 + 文档测试) ## 状态说明 - ⬜ 待处理 - 🔄 进行中 - ✓ 已完成 - ✅ 已验证(有 Fortran 回归测试) --- ## TLUSTY 纯函数进度 ### 优先级 P0 (最小文件,先处理) | 文件 | 行数 | 状态 | 完成日期 | 备注 | |------|------|------|----------|------| | expo.f | 10 | ✅ | 2026-03-19 | 安全指数函数 | | quit.f | 10 | ✅ | 2026-03-19 | 退出子程序 | | ffcros.f | 13 | ✅ | 2026-03-19 | 自由-自由截面 (占位) | | gamsp.f | 14 | ⬜ | | 展宽因子 (有 COMMON) | | sgmer1.f | 14 | ⬜ | | Stark展宽 (有 COMMON) | | sgmerd.f | 15 | ⬜ | | Stark展宽 (有 COMMON) | | lagran.f | 16 | ✅ | 2026-03-19 | Lagrange插值 | | gntk.f | 17 | ✅ | 2026-03-19 | Gaunt因子 | | raph.f | 17 | ✅ | 2026-03-19 | hedif辅助函数 | | cross.f | 18 | ⬜ | | 截面计算 (有 COMMON) | | eint.f | 18 | ✅ | 2026-03-19 | 指数积分 (含 expinx) | | sghe12.f | 18 | ✅ | 2026-03-19 | He展宽 | | yint.f | 18 | ✅ | 2026-03-19 | 二次插值 | | erfcin.f | 20 | ✅ | 2026-03-19 | 误差函数补 | | erfcx.f | 20 | ✅ | 2026-03-19 | 缩放误差函数 | | gfree1.f | 21 | ⬜ | | Gaunt自由 (有 COMMON) | | sbfhmi_old.f | 22 | ⬜ | | H-截面 | | tridag.f | 22 | ✅ | 2026-03-19 | 三对角矩阵 | | timing.f | 24 | ⬜ | | 计时 | | expint.f | 30 | ✅ | 2026-03-19 | 指数积分 | ### 优先级 P1 (中等大小) | 文件 | 行数 | 状态 | 完成日期 | 备注 | |------|------|------|----------|------| | ylintp.f | 31 | ✅ | 2026-03-19 | 线性插值 | | xk2dop.f | 32 | ✅ | 2026-03-19 | Doppler宽度 | | betah.f | 33 | ✅ | 2026-03-19 | 压力标高 | | gauleg.f | 34 | ✅ | 2026-03-19 | Gauss-Legendre积分 | | quartc.f | 35 | ✅ | 2026-03-19 | 四次方程求解 | | minv3.f | 37 | ✅ | 2026-03-19 | 3x3矩阵求逆 | | crossd.f | 31 | ⬜ | | | | wn.f | 41 | ⬜ | | | | sbfhmi.f | 42 | ⬜ | | H-截面 | | angset.f | 44 | ⬜ | | | | gami.f | 45 | ✅ | 2026-03-19 | 微扰展宽 | | gaunt.f | 45 | ⬜ | | Gaunt因子 | | ubeta.f | 40 | ⬜ | | | | rayini.f | 42 | ⬜ | | | | indexx.f | 45 | ✅ | 2026-03-19 | 索引排序 | | laguer.f | 59 | ✅ | 2026-03-19 | Laguerre多项式求根 | | sbfhe1.f | 157 | ⬜ | | He截面 | | hephot.f | 163 | ⬜ | | He光电离 | | verner.f | 237 | ⬜ | | Verner截面 | | voigt.f | 64 | ✅ | 2026-03-19 | Voigt线型 | | voigte.f | 92 | ✅ | 2026-03-19 | Voigt线型 | | locate.f | 25 | ✅ | 2026-03-19 | 二分查找 | --- ## SYNSPEC 纯函数进度 (待 TLUSTY 完成后再处理) --- ## 重构日志 ### 2026-03-19 **已完成:** - 创建 Rust 项目结构 (Cargo.toml, src/) - 重构 expo.f → src/math/expo.rs - 重构 yint.f → src/math/interpolate.rs (yint) - 重构 lagran.f → src/math/interpolate.rs (lagran) - 重构 tridag.f → src/math/tridag.rs - 重构 eint.f + expinx.f → src/math/expint.rs - 重构 quit.f → src/math/quit.rs - 重构 ffcros.f → src/math/ffcros.rs - 重构 gntk.f → src/math/gntk.rs - 重构 raph.f → src/math/raph.rs - 重构 erfcx.f + erfcin.f → src/math/erfcx.rs - 重构 sghe12.f → src/math/sghe12.rs - 重构 ylintp.f → src/math/ylintp.rs - 重构 gauleg.f → src/math/gauleg.rs - 重构 locate.f → src/math/locate.rs - 重构 voigt.f → src/math/voigt.rs - 重构 voigte.f → src/math/voigte.rs - 重构 indexx.f → src/math/indexx.rs - 重构 quartc.f → src/math/quartc.rs - 重构 betah.f → src/math/betah.rs - 重构 gami.f → src/math/gami.rs - 重构 xk2dop.f → src/math/xk2dop.rs - 重构 minv3.f → src/math/minv3.rs - 重构 laguer.f → src/math/laguer.rs - 创建 Fortran 对比测试框架 (tests/fortran_ref/, tests/fortran_comparison.rs) - **102 个测试通过** (75 单元测试 + 12 Fortran 对比测试 + 4 文档测试) **规范:** - 代码注释使用中文 - 测试必须与原 Fortran 代码对比验证 - 精度要求: epsilon = 1e-10 (简单函数), 1e-7 (多项式近似) **注意事项:** - `gamsp.f`, `sgmer1.f`, `sgmerd.f`, `cross.f`, `gfree1.f` 实际有 COMMON 依赖,不是纯函数 - Fortran 1-indexed 数组转 Rust 0-indexed 时要特别注意边界条件 - `erfcin` 中 `XL=-LOG(X)` 是 `-ln(X)`,不是 `ln(-X)` - `ylintp` 在 0-indexed 中 jl=0 是有效索引,不需要调整