SpectraRust/REFACTORING_PROGRESS.txt
2026-03-21 09:12:18 +08:00

87 lines
2.2 KiB
Plaintext

# TLUSTY/SYNSPEC Rust 重构进度
## 当前状态 (2026-03-20)
- **已完成**: 86 个函数 + 15 个状态模块 + 1 个数据文件
- **测试通过**: 379 个
- **TLUSTY 纯函数重构完成**
- **最新完成**: cubic.rs
## 统计
| 程序 | 总单元 | 纯函数 |
|------|--------|--------|
| TLUSTY | 304 | 195 |
| SYNSPEC | 168 | 93 |
| 类型 | 数量 |
|------|------|
| 已完成 | 81 |
| 剩余纯函数 | ~70 |
| COMMON 依赖 | ~45 |
| I/O 依赖 | 114 |
## 已完成模块 (87个)
### math/ (83个)
angset, betah, bkhsgo, butler, carbon, ceh12, cion, ckoest, collhe, cross, crossd,
ctdata, cubic, dielrc, divstr, dmder, dwnfr, dwnfr0, dwnfr1, emat, erfcx, expint, expo, ffcros, gami,
gamsp, gauleg, gaunt, getwrd, gfree, gntk, grcor, hephot, hidalg, indexx, inthyd,
intlem, interpolate, irc, laguer, levsol, lineqs, locate, meanop, minv3, pffe, pfni, pfspec,
psolve, quartc, quit, raph, ratmal, reiman, sbfch, sbfhe1, sbfhmi, sbfhmi_old,
sbfoh, sffhmi, sffhmi_add, sghe12, sgmer, spsigk, stark0, starka, szirc, tdpini, tiopf,
traini, tridag, ubeta, vern16, vern18, vern20, vern26, verner, voigt, voigte,
wn, xk2dop, ylintp
### state/ (15个)
constants, config, atomic, model, arrays, iterat, alipar, odfpar,
+ WMCOMP, MRGPAR, INVINT, CUROPA, PRESSR, DWNPAR, HYDPRF, TURBUL (嵌套在 model.rs)
### data/ (1个)
data.rs - 静态数据数组
## 状态说明
- ✅ 已完成
- 🔄 进行中
- ⬜ 待处理
- ❌ 有 I/O 依赖 (暂不处理)
---
## 重构日志
### 2026-03-20
**新增:**
- lineqs.rs - 线性方程组求解 (高斯消元法)
- starka.rs - Stark 展宽近似表达式
- inthyd.rs - 氢线 Stark 展宽表格插值
- HydPrf 结构体 (model.rs)
**新增常量:**
- MHT=7, MHE=20, MHWL=90 (氢线表格维度)
### 2026-03-19
**完成:**
- 创建 Rust 项目结构
- 重构 77 个 math 模块
- 创建 14 个 state 模块 (COMMON 块转换)
- 提取 data.rs 静态数据
**关键修复:**
- Fortran 1-indexed → Rust 0-indexed
- `-LOG(X)` 是 `-ln(X)` 不是 `ln(-X)`
- Clenshaw 求和用 `isize` 避免溢出
- 所有 DATA 变量添加文件名前缀
### 规范
- 代码注释使用中文
- 测试与 Fortran 对比验证
- 精度: 简单函数 1e-10, 多项式 1e-7