3.5 KiB
3.5 KiB
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 - 工作总结
🚀 快速开始
# 进入新目录
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)
PROGRAM TLUSTY
INCLUDE 'IMPLIC.FOR'
INCLUDE 'BASICS.FOR'
INCLUDE 'ITERAT.FOR'
新方式 (Fortran 90+)
PROGRAM TLUSTY
USE impli_module
USE basics_module
USE iterat_module
IMPLICIT NONE
⚙️ 编译选项
# Release 模式(优化)
./build.sh
# Debug 模式(带检查)
./build.sh --debug
# 清理重新编译
./build.sh --clean
# 指定安装目录
./build.sh --install /opt/tlusty
📋 下一步工作
高优先级
- ⏳ 从原始文件提取子程序到
subroutines/目录 - ⏳ 完成 START、RESOLV、SOLVE 等核心子程序
- ⏳ 数值验证(对比新旧版本输出)
中优先级
- 测试集成(CTest)
- 文档完善
- 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
📝 重要说明
-
子程序待提取: 当前
subroutines/目录为空,需要从原始tlusty208.f和synspec54.f中提取 -
向后兼容: 原始代码保持不变,新版本在
new/目录下独立开发 -
数值一致性: 最终目标是确保新旧版本输出完全一致
-
大内存支持: 默认启用
-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