128 lines
4.4 KiB
Plaintext
128 lines
4.4 KiB
Plaintext
# 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 是有效索引,不需要调整
|