163 lines
3.5 KiB
Markdown
163 lines
3.5 KiB
Markdown
# TLUSTY/SYNSPEC 代码拆分 - 快速参考指南
|
||
|
||
## 📁 新目录位置
|
||
|
||
```
|
||
/home/fmq/program/tlusty/tl208-s54/new/
|
||
├── tlusty/ # TLUSTY 模块化代码
|
||
└── synspec/ # SYNSPEC 模块化代码
|
||
```
|
||
|
||
## ✅ 已完成的工作
|
||
|
||
### TLUSTY (8 个模块)
|
||
- ✓ impli_module.f90 - 类型声明
|
||
- ✓ basics_module.f90 - 基本参数和常量
|
||
- ✓ iterat_module.f90 - 迭代控制
|
||
- ✓ alipar_module.f90 - ALI 方法参数
|
||
- ✓ atomic_module.f90 - 原子数据
|
||
- ✓ modelq_module.f90 - 模型物理量
|
||
- ✓ odfpar_module.f90 - ODF 参数
|
||
- ✓ array1_module.f90 - 工作数组
|
||
|
||
### SYNSPEC (6 个模块)
|
||
- ✓ params_module.f90 - 参数定义
|
||
- ✓ lindat_module.f90 - 谱线数据
|
||
- ✓ modelp_module.f90 - 模型参数
|
||
- ✓ synthp_module.f90 - 合成光谱参数
|
||
- ✓ wincom_module.f90 - 窗口通用变量
|
||
- ✓ optpar_module.f90 - 不透明度参数
|
||
|
||
### 构建系统
|
||
- ✓ CMakeLists.txt - 顶层配置
|
||
- ✓ build.sh - 构建脚本
|
||
- ✓ README.md - 使用说明
|
||
- ✓ WORK_SUMMARY.md - 工作总结
|
||
|
||
## 🚀 快速开始
|
||
|
||
```bash
|
||
# 进入新目录
|
||
cd /home/fmq/program/tlusty/tl208-s54/new
|
||
|
||
# 编译(Release 模式)
|
||
./build.sh
|
||
|
||
# 或手动编译
|
||
mkdir build && cd build
|
||
cmake .. -DCMAKE_BUILD_TYPE=Release
|
||
make -j$(nproc)
|
||
```
|
||
|
||
## 📊 转换统计
|
||
|
||
| 项目 | 原始文件 | 新模块文件 | 代码行数 |
|
||
|------|---------|-----------|----------|
|
||
| TLUSTY | 8 .FOR | 8 .f90 | ~6,000 |
|
||
| SYNSPEC | 6 .FOR | 6 .f90 | ~3,000 |
|
||
| **总计** | **14** | **14** | **~9,000** |
|
||
|
||
## 🔄 INCLUDE → MODULE 转换
|
||
|
||
### 原始方式 (Fortran 77)
|
||
```fortran
|
||
PROGRAM TLUSTY
|
||
INCLUDE 'IMPLIC.FOR'
|
||
INCLUDE 'BASICS.FOR'
|
||
INCLUDE 'ITERAT.FOR'
|
||
```
|
||
|
||
### 新方式 (Fortran 90+)
|
||
```fortran
|
||
PROGRAM TLUSTY
|
||
USE impli_module
|
||
USE basics_module
|
||
USE iterat_module
|
||
IMPLICIT NONE
|
||
```
|
||
|
||
## ⚙️ 编译选项
|
||
|
||
```bash
|
||
# Release 模式(优化)
|
||
./build.sh
|
||
|
||
# Debug 模式(带检查)
|
||
./build.sh --debug
|
||
|
||
# 清理重新编译
|
||
./build.sh --clean
|
||
|
||
# 指定安装目录
|
||
./build.sh --install /opt/tlusty
|
||
```
|
||
|
||
## 📋 下一步工作
|
||
|
||
### 高优先级
|
||
1. ⏳ 从原始文件提取子程序到 `subroutines/` 目录
|
||
2. ⏳ 完成 START、RESOLV、SOLVE 等核心子程序
|
||
3. ⏳ 数值验证(对比新旧版本输出)
|
||
|
||
### 中优先级
|
||
4. 测试集成(CTest)
|
||
5. 文档完善
|
||
6. GUI 适配
|
||
|
||
## 🔍 模块依赖关系
|
||
|
||
### TLUSTY
|
||
```
|
||
impli_module
|
||
↓
|
||
basics_module
|
||
↓
|
||
iterat_module, alipar_module, atomic_module, odfpar_module
|
||
↓
|
||
modelq_module
|
||
↓
|
||
array1_module
|
||
```
|
||
|
||
### SYNSPEC
|
||
```
|
||
params_module
|
||
↓
|
||
lindat_module, modelp_module, synthp_module,
|
||
wincom_module, optpar_module
|
||
```
|
||
|
||
## 📝 重要说明
|
||
|
||
1. **子程序待提取**: 当前 `subroutines/` 目录为空,需要从原始 `tlusty208.f` 和 `synspec54.f` 中提取
|
||
|
||
2. **向后兼容**: 原始代码保持不变,新版本在 `new/` 目录下独立开发
|
||
|
||
3. **数值一致性**: 最终目标是确保新旧版本输出完全一致
|
||
|
||
4. **大内存支持**: 默认启用 `-mcmodel=medium` 以支持大型数组
|
||
|
||
## 🆘 常见问题
|
||
|
||
**Q: 编译失败怎么办?**
|
||
|
||
A: 检查是否安装了 CMake >= 3.15 和 GFortran
|
||
|
||
**Q: 如何调试?**
|
||
|
||
A: 使用 `./build.sh --debug` 编译 Debug 版本
|
||
|
||
**Q: 如何验证正确性?**
|
||
|
||
A: 对比新旧版本对相同输入的输出结果
|
||
|
||
## 📚 相关文档
|
||
|
||
- `README.md` - 详细使用说明
|
||
- `WORK_SUMMARY.md` - 完整工作总结
|
||
- `../README.md` - 原始安装指南
|
||
|
||
---
|
||
|
||
*创建日期:2026-03-17*
|