# 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