78 lines
1.8 KiB
Markdown
78 lines
1.8 KiB
Markdown
# TLUSTY/SYNSPEC 重构计划
|
|
|
|
> **实时追踪见 [FORTRAN_TRACKING.md](../../FORTRAN_TRACKING.md)**
|
|
> 本文档提供重构优先级和阶段划分参考。
|
|
|
|
## 优先级原则
|
|
|
|
1. **纯函数优先** - 无 COMMON/I/O 依赖,独立测试
|
|
2. **依赖少的优先** - 只依赖 BASICS 的函数
|
|
3. **小型函数优先** - 行数少,风险低
|
|
4. **核心功能优先** - 辐射转移、不透明度
|
|
|
|
## 阶段划分
|
|
|
|
### 阶段 1: 纯函数 (is_pure=True)
|
|
|
|
已完成大部分,剩余查看:
|
|
```bash
|
|
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. 主程序集成
|
|
```
|
|
|
|
## 查询命令
|
|
|
|
```bash
|
|
# 未完成的纯函数
|
|
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
|
|
```
|