# 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*