SpectraRust/MEMORY/plan.md
2026-03-21 16:23:35 +08:00

1.8 KiB

TLUSTY/SYNSPEC 重构计划

实时追踪见 FORTRAN_TRACKING.md 本文档提供重构优先级和阶段划分参考。

优先级原则

  1. 纯函数优先 - 无 COMMON/I/O 依赖,独立测试
  2. 依赖少的优先 - 只依赖 BASICS 的函数
  3. 小型函数优先 - 行数少,风险低
  4. 核心功能优先 - 辐射转移、不透明度

阶段划分

阶段 1: 纯函数 (is_pure=True)

已完成大部分,剩余查看:

grep "True.*pending" fortran_analysis.csv

阶段 2: 简单 COMMON 依赖

只依赖 BASICS 或已有状态结构体的函数。

阶段 3: 复杂 COMMON 依赖

依赖多个 COMMON 块的函数。

阶段 4: I/O 依赖 (117个)

最后处理,可能需要设计 I/O 抽象层。

核心函数分类

辐射转移 (RTE)

  • bre.f, brez.f - 基本辐射转移
  • brte.f, brtez.f - 扩展辐射转移
  • rte_sc.f, rtedf*.f - 深度/角度积分

不透明度 (Opacity)

  • opacfl.f - 核心不透明度计算
  • opctab.f - 不透明度表插值
  • opadd*.f - 不透明度叠加

统计平衡 (Statistical Equilibrium)

  • bpop*.f - 束缚态占据数
  • levsol.f - 能级求解
  • ratmat.f - 速率矩阵

ALI 求解器

  • alifr1.f, alifr3.f, alifr6.f - ALI 迭代

推荐执行顺序

1. 完成剩余纯函数
2. 简单 COMMON 函数 (setdrt, cubic, dmder ✅)
3. 辐射转移核心
4. 不透明度核心
5. 统计平衡核心
6. I/O 封装
7. 主程序集成

查询命令

# 未完成的纯函数
grep "True.*pending" fortran_analysis.csv

# 只依赖 BASICS 的待处理函数
grep "BASICS.*pending" fortran_analysis.csv | grep -v "ATOMIC\|MODELQ"

# 按行数排序
cd tlusty/extracted && wc -l *.f | sort -n | head -30