4.3 KiB
4.3 KiB
TLUSTY 和 SYNSPEC 模块化版本
本目录包含 TLUSTY208 和 SYNSPEC54 的模块化 Fortran 版本。
目录结构
new/
├── tlusty/ # TLUSTY 源代码
│ ├── main/ # 主程序
│ │ └── tlusty_main.f90
│ ├── modules/ # Fortran 模块
│ │ ├── 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 (工作数组)
│ ├── subroutines/ # 子程序模块
│ └── CMakeLists.txt
│
├── synspec/ # SYNSPEC 源代码
│ ├── main/ # 主程序
│ │ └── synspec_main.f90
│ ├── modules/ # Fortran 模块
│ │ ├── params_module.f90 (参数定义)
│ │ ├── lindat_module.f90 (谱线数据)
│ │ ├── modelp_module.f90 (模型参数)
│ │ ├── synthp_module.f90 (合成光谱参数)
│ │ ├── wincom_module.f90 (窗口通用变量)
│ │ └── optpar_module.f90 (不透明度参数)
│ ├── subroutines/ # 子程序模块
│ ├── utils/ # 工具程序
│ │ ├── rotin.f90
│ │ └── ngrid.f90
│ └── CMakeLists.txt
│
├── CMakeLists.txt # 顶层 CMake 配置
└── build.sh # 构建脚本
编译说明
前置要求
- CMake >= 3.15
- GFortran (支持 Fortran 90+)
快速开始
# 进入新目录
cd new
# 使用默认设置编译(Release 模式)
./build.sh
# Debug 模式编译
./build.sh --debug
# 清理并重新编译
./build.sh --clean
# 指定安装目录
./build.sh --install /opt/tlusty
手动编译
# 创建构建目录
mkdir build && cd build
# CMake 配置
cmake .. \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=../install \
-DBUILD_TLUSTY=ON \
-DBUILD_SYNSPEC=ON
# 编译
make -j$(nproc)
# 安装
make install
主要变化
从 INCLUDE 到 MODULE
原始代码使用 Fortran 77 风格的 INCLUDE 文件:
PROGRAM TLUSTY
INCLUDE 'IMPLIC.FOR'
INCLUDE 'BASICS.FOR'
新版本使用现代 Fortran 模块:
PROGRAM TLUSTY
USE impli_module
USE basics_module
模块依赖关系
TLUSTY 模块依赖:
impli_module (无依赖)
↓
basics_module (依赖 impli_module)
↓
iterat_module, alipar_module, atomic_module, odfpar_module
↓
modelq_module (依赖 basics + atomic)
↓
array1_module (依赖所有上述模块)
SYNSPEC 模块依赖:
params_module (无依赖)
↓
lindat_module, modelp_module, synthp_module, wincom_module, optpar_module
与原始版本的兼容性
保持兼容
- 所有公共变量块 (COMMON blocks) 已转换为模块变量
- 数组维度和参数保持不变
- 物理常数和数学常数保持不变
- 子程序接口保持不变
需要更新的内容
原始版本中的大型子程序(如 START、RESOLV、SOLVE 等)需要从 tlusty208.f 和 synspec54.f 中提取并放到 subroutines/ 目录下。
下一步工作
- 子程序提取:将原始单文件中的子程序拆分到独立文件
- 数值验证:对比新旧版本的输出,确保数值一致性
- 测试集成:将现有测试用例集成到 CTest
- 文档完善:补充详细的用户指南和开发者文档
已知限制
- 当前版本仅完成了模块框架,完整的子程序实现需要进一步工作
- 部分大型数组可能需要调整以适应不同的内存配置
- 某些 Fortran 77 特性(如 EQUIVALENCE 语句)需要特殊处理
参考资料
- 原始 TLUSTY 文档:
../tlusty/README.md - 原始 SYNSPEC 文档:
../synspec/README_functions.md - 安装与使用指南:
../README.md
许可证
请遵循原始 TLUSTY/SYNSPEC 软件包的许可条款。
联系方式
如有问题或建议,请通过原项目渠道联系。