sync: reconcile local changes and modernizations with remote
This commit is contained in:
@@ -113,3 +113,4 @@ gui/synple/data/
|
|||||||
|
|
||||||
# ---- macOS/Windows 复制产生的“副本”目录 ----
|
# ---- macOS/Windows 复制产生的“副本”目录 ----
|
||||||
*副本*/
|
*副本*/
|
||||||
|
rust/
|
||||||
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
@@ -1 +0,0 @@
|
|||||||
/home/fmq/program/tlusty/tl208-s54/data
|
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/home/fmq/program/tlusty/tl208-s54/data
|
||||||
Regular → Executable
Regular → Executable
Regular → Executable
@@ -1 +0,0 @@
|
|||||||
/home/fmq/program/tlusty/tl208-s54/data
|
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/home/fmq/program/tlusty/tl208-s54/data
|
||||||
@@ -0,0 +1,85 @@
|
|||||||
|
# ==============================================================================
|
||||||
|
# TLUSTY 和 SYNSPEC 套件顶层 CMake 配置文件
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.15)
|
||||||
|
project(TLUSTY_SYNSPEC_SUITE Fortran)
|
||||||
|
|
||||||
|
# 项目版本
|
||||||
|
set(PROJECT_VERSION "208.54")
|
||||||
|
|
||||||
|
# CMake 策略
|
||||||
|
cmake_policy(SET CMP0048 NEW)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 编译选项
|
||||||
|
# ==============================================================================
|
||||||
|
option(BUILD_TLUSTY "Build TLUSTY" ON)
|
||||||
|
option(BUILD_SYNSPEC "Build SYNSPEC" ON)
|
||||||
|
option(BUILD_TESTS "Build and enable tests" OFF)
|
||||||
|
option(ENABLE_LARGE_MODEL "Enable large memory model" ON)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 全局编译设置
|
||||||
|
# ==============================================================================
|
||||||
|
set(CMAKE_FORTRAN_COMPILER gfortran)
|
||||||
|
|
||||||
|
# 基础编译标志
|
||||||
|
set(CMAKE_Fortran_FLAGS "-O3 -fno-automatic")
|
||||||
|
|
||||||
|
# 大内存模型选项(如果需要)
|
||||||
|
if(ENABLE_LARGE_MODEL)
|
||||||
|
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -mcmodel=medium")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# 调试标志
|
||||||
|
set(CMAKE_Fortran_FLAGS_DEBUG "-g -O0 -fcheck=all -Wall -Wextra")
|
||||||
|
|
||||||
|
# Release 标志
|
||||||
|
set(CMAKE_Fortran_FLAGS_RELEASE "-O3 -funroll-loops")
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 子目录配置
|
||||||
|
# ==============================================================================
|
||||||
|
if(BUILD_TLUSTY)
|
||||||
|
message(STATUS "Building TLUSTY...")
|
||||||
|
add_subdirectory(tlusty)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_SYNSPEC)
|
||||||
|
message(STATUS "Building SYNSPEC...")
|
||||||
|
add_subdirectory(synspec)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 测试配置
|
||||||
|
# ==============================================================================
|
||||||
|
if(BUILD_TESTS)
|
||||||
|
enable_testing()
|
||||||
|
message(STATUS "Building tests...")
|
||||||
|
# add_subdirectory(tests)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 安装配置
|
||||||
|
# ==============================================================================
|
||||||
|
install(DIRECTORY DESTINATION ${CMAKE_INSTALL_PREFIX}/data)
|
||||||
|
install(DIRECTORY DESTINATION ${CMAKE_INSTALL_PREFIX}/tests)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 打印总结信息
|
||||||
|
# ==============================================================================
|
||||||
|
message(STATUS "")
|
||||||
|
message(STATUS "========================================")
|
||||||
|
message(STATUS "TLUSTY/SYNSPEC 套件配置总结")
|
||||||
|
message(STATUS "========================================")
|
||||||
|
message(STATUS " 版本:${PROJECT_VERSION}")
|
||||||
|
message(STATUS " 编译器:${CMAKE_FORTRAN_COMPILER}")
|
||||||
|
message(STATUS " 编译标志:${CMAKE_Fortran_FLAGS}")
|
||||||
|
message(STATUS " 安装前缀:${CMAKE_INSTALL_PREFIX}")
|
||||||
|
message(STATUS " 构建 TLUSTY: ${BUILD_TLUSTY}")
|
||||||
|
message(STATUS " 构建 SYNSPEC: ${BUILD_SYNSPEC}")
|
||||||
|
message(STATUS " 构建测试:${BUILD_TESTS}")
|
||||||
|
message(STATUS " 大内存模型:${ENABLE_LARGE_MODEL}")
|
||||||
|
message(STATUS "========================================")
|
||||||
|
message(STATUS "")
|
||||||
@@ -0,0 +1,162 @@
|
|||||||
|
# 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*
|
||||||
+170
@@ -0,0 +1,170 @@
|
|||||||
|
# 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+)
|
||||||
|
|
||||||
|
### 快速开始
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 进入新目录
|
||||||
|
cd new
|
||||||
|
|
||||||
|
# 使用默认设置编译(Release 模式)
|
||||||
|
./build.sh
|
||||||
|
|
||||||
|
# Debug 模式编译
|
||||||
|
./build.sh --debug
|
||||||
|
|
||||||
|
# 清理并重新编译
|
||||||
|
./build.sh --clean
|
||||||
|
|
||||||
|
# 指定安装目录
|
||||||
|
./build.sh --install /opt/tlusty
|
||||||
|
```
|
||||||
|
|
||||||
|
### 手动编译
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 创建构建目录
|
||||||
|
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 文件:
|
||||||
|
|
||||||
|
```fortran
|
||||||
|
PROGRAM TLUSTY
|
||||||
|
INCLUDE 'IMPLIC.FOR'
|
||||||
|
INCLUDE 'BASICS.FOR'
|
||||||
|
```
|
||||||
|
|
||||||
|
新版本使用现代 Fortran 模块:
|
||||||
|
|
||||||
|
```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/` 目录下。
|
||||||
|
|
||||||
|
## 下一步工作
|
||||||
|
|
||||||
|
1. **子程序提取**:将原始单文件中的子程序拆分到独立文件
|
||||||
|
2. **数值验证**:对比新旧版本的输出,确保数值一致性
|
||||||
|
3. **测试集成**:将现有测试用例集成到 CTest
|
||||||
|
4. **文档完善**:补充详细的用户指南和开发者文档
|
||||||
|
|
||||||
|
## 已知限制
|
||||||
|
|
||||||
|
- 当前版本仅完成了模块框架,完整的子程序实现需要进一步工作
|
||||||
|
- 部分大型数组可能需要调整以适应不同的内存配置
|
||||||
|
- 某些 Fortran 77 特性(如 EQUIVALENCE 语句)需要特殊处理
|
||||||
|
|
||||||
|
## 参考资料
|
||||||
|
|
||||||
|
- 原始 TLUSTY 文档:`../tlusty/README.md`
|
||||||
|
- 原始 SYNSPEC 文档:`../synspec/README_functions.md`
|
||||||
|
- 安装与使用指南:`../README.md`
|
||||||
|
|
||||||
|
## 许可证
|
||||||
|
|
||||||
|
请遵循原始 TLUSTY/SYNSPEC 软件包的许可条款。
|
||||||
|
|
||||||
|
## 联系方式
|
||||||
|
|
||||||
|
如有问题或建议,请通过原项目渠道联系。
|
||||||
@@ -0,0 +1,234 @@
|
|||||||
|
# TLUSTY/SYNSPEC 代码拆分工作总结
|
||||||
|
|
||||||
|
## 已完成的工作
|
||||||
|
|
||||||
|
### 1. 目录结构创建 ✓
|
||||||
|
|
||||||
|
已在 `new/` 目录下创建了完整的模块化代码结构:
|
||||||
|
|
||||||
|
```
|
||||||
|
new/
|
||||||
|
├── tlusty/
|
||||||
|
│ ├── main/ # 主程序
|
||||||
|
│ ├── modules/ # Fortran 模块 (8 个)
|
||||||
|
│ └── subroutines/ # 子程序模块(待填充)
|
||||||
|
├── synspec/
|
||||||
|
│ ├── main/ # 主程序
|
||||||
|
│ ├── modules/ # Fortran 模块 (6 个)
|
||||||
|
│ ├── subroutines/ # 子程序模块(待填充)
|
||||||
|
│ └── utils/ # 工具程序
|
||||||
|
├── CMakeLists.txt # 顶层构建配置
|
||||||
|
├── build.sh # 构建脚本
|
||||||
|
└── README.md # 使用说明
|
||||||
|
```
|
||||||
|
|
||||||
|
### 2. TLUSTY 模块转换 ✓
|
||||||
|
|
||||||
|
已将 TLUSTY 的所有 INCLUDE 文件转换为现代 Fortran 模块:
|
||||||
|
|
||||||
|
| 原始文件 | 新模块文件 | 状态 |
|
||||||
|
|---------|-----------|------|
|
||||||
|
| IMPLIC.FOR | impli_module.f90 | ✓ 完成 |
|
||||||
|
| BASICS.FOR | basics_module.f90 | ✓ 完成 |
|
||||||
|
| ITERAT.FOR | iterat_module.f90 | ✓ 完成 |
|
||||||
|
| ALIPAR.FOR | alipar_module.f90 | ✓ 完成 |
|
||||||
|
| ATOMIC.FOR | atomic_module.f90 | ✓ 完成 |
|
||||||
|
| MODELQ.FOR | modelq_module.f90 | ✓ 完成 |
|
||||||
|
| ODFPAR.FOR | odfpar_module.f90 | ✓ 完成 |
|
||||||
|
| ARRAY1.FOR | array1_module.f90 | ✓ 完成 |
|
||||||
|
|
||||||
|
**关键特性:**
|
||||||
|
- 所有 COMMON 块已转换为模块变量
|
||||||
|
- 保持了所有数组维度和参数定义
|
||||||
|
- 添加了详细的中文注释
|
||||||
|
- 使用双精度类型别名 (dp) 提高代码可读性
|
||||||
|
|
||||||
|
### 3. SYNSPEC 模块转换 ✓
|
||||||
|
|
||||||
|
已将 SYNSPEC 的所有 INCLUDE 文件转换为现代 Fortran 模块:
|
||||||
|
|
||||||
|
| 原始文件 | 新模块文件 | 状态 |
|
||||||
|
|---------|-----------|------|
|
||||||
|
| PARAMS.FOR | params_module.f90 | ✓ 完成 |
|
||||||
|
| LINDAT.FOR | lindat_module.f90 | ✓ 完成 |
|
||||||
|
| MODELP.FOR | modelp_module.f90 | ✓ 完成 |
|
||||||
|
| SYNTHP.FOR | synthp_module.f90 | ✓ 完成 |
|
||||||
|
| WINCOM.FOR | wincom_module.f90 | ✓ 完成 |
|
||||||
|
| OPTPAR.FOR | optpar_module.f90 | ✓ 完成 |
|
||||||
|
|
||||||
|
### 4. 主程序框架创建 ✓
|
||||||
|
|
||||||
|
- **TLUSTY**: 创建了 `tlusty_main.f90`,包含主迭代循环框架
|
||||||
|
- **SYNSPEC**: 创建了 `synspec_main.f90`,包含初始化流程框架
|
||||||
|
|
||||||
|
### 5. CMake 构建系统 ✓
|
||||||
|
|
||||||
|
创建了完整的 CMake 配置文件:
|
||||||
|
|
||||||
|
- `new/CMakeLists.txt` - 顶层配置
|
||||||
|
- `new/tlusty/CMakeLists.txt` - TLUSTY 子项目配置
|
||||||
|
- `new/synspec/CMakeLists.txt` - SYNSPEC 子项目配置
|
||||||
|
|
||||||
|
**支持的编译选项:**
|
||||||
|
```bash
|
||||||
|
cmake .. \
|
||||||
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
|
-DBUILD_TLUSTY=ON \
|
||||||
|
-DBUILD_SYNSPEC=ON \
|
||||||
|
-DBUILD_TESTS=OFF \
|
||||||
|
-DENABLE_LARGE_MODEL=ON
|
||||||
|
```
|
||||||
|
|
||||||
|
### 6. 构建脚本 ✓
|
||||||
|
|
||||||
|
创建了用户友好的构建脚本 `build.sh`:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./build.sh # 默认 Release 模式编译
|
||||||
|
./build.sh --debug # Debug 模式编译
|
||||||
|
./build.sh --clean # 清理后重新编译
|
||||||
|
./build.sh -j 8 # 使用 8 个任务并行编译
|
||||||
|
```
|
||||||
|
|
||||||
|
## 待完成的工作
|
||||||
|
|
||||||
|
### 高优先级
|
||||||
|
|
||||||
|
1. **子程序提取** (重要)
|
||||||
|
|
||||||
|
需要从原始文件中提取以下子程序:
|
||||||
|
|
||||||
|
**TLUSTY:**
|
||||||
|
- START - 初始化过程
|
||||||
|
- INITIA - 初始化驱动
|
||||||
|
- RESOLV - 形式解
|
||||||
|
- SOLVE/SOLVES - 线性方程组求解
|
||||||
|
- ACCEL2 - 收敛加速
|
||||||
|
- RYBSOL - Rybicki 求解器
|
||||||
|
- TIMING - 性能计时
|
||||||
|
|
||||||
|
**SYNSPEC:**
|
||||||
|
- START - 初始化
|
||||||
|
- INPMOD/INKUR - 模型输入
|
||||||
|
- CHANGE - 参数修改
|
||||||
|
- INIBL0/INIMOD - 谱线初始化
|
||||||
|
- TINT - 温度插值
|
||||||
|
|
||||||
|
2. **数值验证**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 对比新旧版本输出
|
||||||
|
cd tests/tlusty/hhe
|
||||||
|
../../../tlusty/tlusty.exe < hhe35.5 > old.out
|
||||||
|
../../../new/build/tlusty/tlusty.exe < hhe35.5 > new.out
|
||||||
|
diff old.out new.out # 应该完全一致
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **测试集成**
|
||||||
|
|
||||||
|
- 将现有测试用例集成到 CTest
|
||||||
|
- 创建自动化回归测试脚本
|
||||||
|
- 设置持续集成(CI)
|
||||||
|
|
||||||
|
### 中优先级
|
||||||
|
|
||||||
|
4. **代码优化**
|
||||||
|
|
||||||
|
- 处理 EQUIVALENCE 语句
|
||||||
|
- 优化大型数组内存布局
|
||||||
|
- 考虑使用派生类型封装相关变量
|
||||||
|
|
||||||
|
5. **文档完善**
|
||||||
|
|
||||||
|
- 补充子程序接口文档
|
||||||
|
- 创建开发者指南
|
||||||
|
- 添加代码示例
|
||||||
|
|
||||||
|
6. **GUI 适配**
|
||||||
|
|
||||||
|
- 更新 `gui/synple/` 配置以支持新版本
|
||||||
|
- 提供双路径兼容支持
|
||||||
|
|
||||||
|
## 技术要点
|
||||||
|
|
||||||
|
### 模块依赖管理
|
||||||
|
|
||||||
|
TLUSTY 模块按以下顺序编译:
|
||||||
|
|
||||||
|
1. impli_module (无依赖)
|
||||||
|
2. basics_module (依赖 impli_module)
|
||||||
|
3. iterat_module, alipar_module, atomic_module, odfpar_module (依赖 basics)
|
||||||
|
4. modelq_module (依赖 basics + atomic)
|
||||||
|
5. array1_module (依赖所有上述模块)
|
||||||
|
|
||||||
|
### COMMON 块转换示例
|
||||||
|
|
||||||
|
**原始代码:**
|
||||||
|
```fortran
|
||||||
|
COMMON /BASNUM/ NATOM, NION, NLEVEL, NDEPTH, NFREQ
|
||||||
|
```
|
||||||
|
|
||||||
|
**转换后:**
|
||||||
|
```fortran
|
||||||
|
MODULE basics_module
|
||||||
|
INTEGER :: NATOM, NION, NLEVEL, NDEPTH, NFREQ
|
||||||
|
END MODULE basics_module
|
||||||
|
```
|
||||||
|
|
||||||
|
**使用方式:**
|
||||||
|
```fortran
|
||||||
|
PROGRAM TLUSTY
|
||||||
|
USE basics_module
|
||||||
|
! 直接使用变量 NATOM, NION 等
|
||||||
|
END PROGRAM TLUSTY
|
||||||
|
```
|
||||||
|
|
||||||
|
### 编译标志说明
|
||||||
|
|
||||||
|
- `-O3`: 最高级别优化
|
||||||
|
- `-fno-automatic`: 保持 Fortran 静态内存分配行为
|
||||||
|
- `-mcmodel=medium`: 支持大内存模型(>2GB)
|
||||||
|
- `-fcheck=all`: Debug 模式下启用所有运行时检查
|
||||||
|
|
||||||
|
## 文件统计
|
||||||
|
|
||||||
|
### 已创建文件
|
||||||
|
|
||||||
|
- TLUSTY 模块:8 个
|
||||||
|
- SYNSPEC 模块:6 个
|
||||||
|
- 主程序:2 个
|
||||||
|
- CMakeLists.txt: 3 个
|
||||||
|
- 构建脚本:1 个
|
||||||
|
- 文档:2 个
|
||||||
|
|
||||||
|
**总计:22 个文件**
|
||||||
|
|
||||||
|
### 代码行数统计
|
||||||
|
|
||||||
|
```
|
||||||
|
TLUSTY 模块: ~2500 行
|
||||||
|
SYNSPEC 模块: ~1200 行
|
||||||
|
主程序: ~200 行
|
||||||
|
CMake 配置: ~300 行
|
||||||
|
文档: ~400 行
|
||||||
|
------------------------
|
||||||
|
总计: ~4600 行
|
||||||
|
```
|
||||||
|
|
||||||
|
## 下一步行动
|
||||||
|
|
||||||
|
1. **立即开始**: 从原始文件提取子程序代码
|
||||||
|
2. **第一阶段**: 完成核心子程序(START, RESOLV, SOLVE)
|
||||||
|
3. **第二阶段**: 完成所有子程序并编译通过
|
||||||
|
4. **第三阶段**: 数值验证和性能测试
|
||||||
|
5. **最终阶段**: 文档完善和用户发布
|
||||||
|
|
||||||
|
## 联系与支持
|
||||||
|
|
||||||
|
如有问题或需要帮助,请参考:
|
||||||
|
- `new/README.md` - 使用说明
|
||||||
|
- 原始文档:`../README.md`
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
*最后更新:2026-03-17*
|
||||||
Executable
+118
@@ -0,0 +1,118 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# ==============================================================================
|
||||||
|
# TLUSTY 和 SYNSPEC 构建脚本
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# 颜色定义
|
||||||
|
RED='\033[0;31m'
|
||||||
|
GREEN='\033[0;32m'
|
||||||
|
YELLOW='\033[1;33m'
|
||||||
|
NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
# 默认配置
|
||||||
|
BUILD_TYPE="Release"
|
||||||
|
INSTALL_DIR="${INSTALL_DIR:-../install}"
|
||||||
|
CLEAN_BUILD=false
|
||||||
|
PARALLEL_JOBS=$(nproc)
|
||||||
|
|
||||||
|
# 打印帮助信息
|
||||||
|
print_usage() {
|
||||||
|
echo "用法:$0 [选项]"
|
||||||
|
echo ""
|
||||||
|
echo "选项:"
|
||||||
|
echo " -d, --debug 使用 Debug 模式编译(默认:Release)"
|
||||||
|
echo " -c, --clean 清理构建目录后重新编译"
|
||||||
|
echo " -i, --install DIR 指定安装目录(默认:../install)"
|
||||||
|
echo " -j, --jobs N 设置并行编译任务数(默认:$(nproc))"
|
||||||
|
echo " -h, --help 显示此帮助信息"
|
||||||
|
echo ""
|
||||||
|
echo "示例:"
|
||||||
|
echo " $0 # 使用默认设置编译"
|
||||||
|
echo " $0 -d # Debug 模式编译"
|
||||||
|
echo " $0 -c -j 8 # 清理并使用 8 个任务编译"
|
||||||
|
echo " $0 -i /opt/tlusty # 安装到指定目录"
|
||||||
|
}
|
||||||
|
|
||||||
|
# 解析命令行参数
|
||||||
|
while [[ $# -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
-d|--debug)
|
||||||
|
BUILD_TYPE="Debug"
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-c|--clean)
|
||||||
|
CLEAN_BUILD=true
|
||||||
|
shift
|
||||||
|
;;
|
||||||
|
-i|--install)
|
||||||
|
INSTALL_DIR="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-j|--jobs)
|
||||||
|
PARALLEL_JOBS="$2"
|
||||||
|
shift 2
|
||||||
|
;;
|
||||||
|
-h|--help)
|
||||||
|
print_usage
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo -e "${RED}未知选项:$1${NC}"
|
||||||
|
print_usage
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# 获取脚本所在目录
|
||||||
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||||
|
cd "$SCRIPT_DIR"
|
||||||
|
|
||||||
|
echo -e "${GREEN}========================================${NC}"
|
||||||
|
echo -e "${GREEN}TLUSTY/SYNSPEC 构建脚本${NC}"
|
||||||
|
echo -e "${GREEN}========================================${NC}"
|
||||||
|
echo ""
|
||||||
|
|
||||||
|
# 创建构建目录
|
||||||
|
BUILD_DIR="${SCRIPT_DIR}/build"
|
||||||
|
if [ "$CLEAN_BUILD" = true ]; then
|
||||||
|
echo -e "${YELLOW}清理构建目录...${NC}"
|
||||||
|
rm -rf "$BUILD_DIR"
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p "$BUILD_DIR"
|
||||||
|
cd "$BUILD_DIR"
|
||||||
|
|
||||||
|
# 运行 CMake 配置
|
||||||
|
echo -e "${YELLOW}运行 CMake 配置...${NC}"
|
||||||
|
cmake .. \
|
||||||
|
-DCMAKE_BUILD_TYPE="$BUILD_TYPE" \
|
||||||
|
-DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" \
|
||||||
|
-DBUILD_TLUSTY=ON \
|
||||||
|
-DBUILD_SYNSPEC=ON \
|
||||||
|
-DBUILD_TESTS=OFF \
|
||||||
|
-DENABLE_LARGE_MODEL=ON
|
||||||
|
|
||||||
|
# 编译
|
||||||
|
echo -e "${YELLOW}开始编译(使用 $PARALLEL_JOBS 个任务)...${NC}"
|
||||||
|
make -j"$PARALLEL_JOBS"
|
||||||
|
|
||||||
|
# 安装
|
||||||
|
echo -e "${YELLOW}安装到 $INSTALL_DIR ...${NC}"
|
||||||
|
make install
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
echo -e "${GREEN}========================================${NC}"
|
||||||
|
echo -e "${GREEN}构建完成!${NC}"
|
||||||
|
echo -e "${GREEN}========================================${NC}"
|
||||||
|
echo ""
|
||||||
|
echo "可执行文件位置:"
|
||||||
|
echo " TLUSTY: $INSTALL_DIR/bin/tlusty.exe"
|
||||||
|
echo " SYNSPEC: $INSTALL_DIR/bin/synspec.exe"
|
||||||
|
echo ""
|
||||||
|
echo "模块文件位置:"
|
||||||
|
echo " TLUSTY 模块: $INSTALL_DIR/include/tlusty/"
|
||||||
|
echo " SYNSPEC 模块: $INSTALL_DIR/include/synspec/"
|
||||||
|
echo ""
|
||||||
@@ -0,0 +1,89 @@
|
|||||||
|
# ==============================================================================
|
||||||
|
# SYNSPEC CMake 构建配置文件
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.15)
|
||||||
|
project(SYNSPEC Fortran)
|
||||||
|
|
||||||
|
# 编译器设置
|
||||||
|
set(CMAKE_FORTRAN_COMPILER gfortran)
|
||||||
|
set(CMAKE_Fortran_FLAGS "-O3 -fno-automatic")
|
||||||
|
set(CMAKE_Fortran_FLAGS_DEBUG "-g -O0 -fcheck=all -Wall")
|
||||||
|
|
||||||
|
# 模块输出目录
|
||||||
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||||
|
Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/modules"
|
||||||
|
)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# SYNSPEC 模块文件 (按编译顺序排列)
|
||||||
|
# ==============================================================================
|
||||||
|
set(SYNSPEC_MODULES
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/params_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/lindat_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/modelp_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/synthp_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/wincom_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/optpar_module.f90
|
||||||
|
)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# SYNSPEC 子程序文件
|
||||||
|
# 注意:这些子程序需要从原始 synspec54.f 中提取
|
||||||
|
# ==============================================================================
|
||||||
|
set(SYNSPEC_SUBROUTINES
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/start_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inpmod_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inkur_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/change_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inpbf_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/setwin_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/ingrid_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inibl0_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/inimod_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/tint_sub.f90
|
||||||
|
)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# SYNSPEC 工具程序
|
||||||
|
# ==============================================================================
|
||||||
|
set(SYNSPEC_UTILS
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/utils/rotin.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/utils/ngrid.f90
|
||||||
|
)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# SYNSPEC 主程序
|
||||||
|
# ==============================================================================
|
||||||
|
set(SYNSPEC_MAIN
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/main/synspec_main.f90
|
||||||
|
)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 创建可执行文件
|
||||||
|
# ==============================================================================
|
||||||
|
add_executable(synspec.exe
|
||||||
|
${SYNSPEC_MODULES}
|
||||||
|
${SYNSPEC_SUBROUTINES}
|
||||||
|
${SYNSPEC_UTILS}
|
||||||
|
${SYNSPEC_MAIN}
|
||||||
|
)
|
||||||
|
|
||||||
|
# 设置模块依赖关系
|
||||||
|
target_include_directories(synspec.exe PRIVATE
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules
|
||||||
|
)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 安装规则
|
||||||
|
# ==============================================================================
|
||||||
|
install(TARGETS synspec.exe DESTINATION bin)
|
||||||
|
install(DIRECTORY ${CMAKE_BINARY_DIR}/modules/ DESTINATION include/synspec)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 打印配置信息
|
||||||
|
# ==============================================================================
|
||||||
|
message(STATUS "SYNSPEC 配置:")
|
||||||
|
message(STATUS " 编译器:${CMAKE_FORTRAN_COMPILER}")
|
||||||
|
message(STATUS " 编译标志:${CMAKE_Fortran_FLAGS}")
|
||||||
|
message(STATUS " 模块目录:${CMAKE_BINARY_DIR}/modules")
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
!==============================================================================
|
||||||
|
! SYNSPEC54 主程序
|
||||||
|
!
|
||||||
|
! Program for evaluating synthetic spectra for a given model atmosphere
|
||||||
|
!
|
||||||
|
! 版本:SYNSPEC54
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
PROGRAM SYNSPEC
|
||||||
|
USE params_module
|
||||||
|
USE lindat_module
|
||||||
|
USE modelp_module
|
||||||
|
USE synthp_module
|
||||||
|
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
INTEGER :: ifeos, ibfac, LTE0, inmod, ichang, ifwin, imode0
|
||||||
|
|
||||||
|
! 打开输出文件
|
||||||
|
OPEN(UNIT=12, STATUS='UNKNOWN')
|
||||||
|
OPEN(UNIT=14, STATUS='UNKNOWN')
|
||||||
|
|
||||||
|
! 初始化 - 输入基本参数和模型大气
|
||||||
|
CALL START
|
||||||
|
|
||||||
|
ifeos = 0 ! 默认值,实际应从输入读取
|
||||||
|
ibfac = 0 ! 默认值,实际应从输入读取
|
||||||
|
|
||||||
|
if(ifeos .gt. 0) imode = -3
|
||||||
|
if(ibfac .gt. 1) then
|
||||||
|
LTE0 = LTE
|
||||||
|
LTE = .TRUE.
|
||||||
|
END IF
|
||||||
|
|
||||||
|
IF(IMODE .GE. -2 .AND. IFEOS .LE. 0) THEN
|
||||||
|
IF(INMOD .GT. 0) CALL INPMOD
|
||||||
|
IF(INMOD .EQ. 0) CALL INKUR
|
||||||
|
IF(ICHANG .NE. 0) CALL CHANGE
|
||||||
|
IF(IBFAC .GT. 1) THEN
|
||||||
|
CALL INPBF
|
||||||
|
LTE = LTE0
|
||||||
|
END IF
|
||||||
|
IF(IFWIN .GT. 1) CALL SETWIN
|
||||||
|
ELSE
|
||||||
|
CALL INGRID(0, inext, 0)
|
||||||
|
END IF
|
||||||
|
|
||||||
|
CALL INIBL0
|
||||||
|
CALL INIMOD
|
||||||
|
CALL TINT
|
||||||
|
|
||||||
|
imode0 = IMODE
|
||||||
|
IF(imode0 .EQ. -4) IMODE = 2
|
||||||
|
|
||||||
|
! 主循环(简化版本)
|
||||||
|
! 完整的实现需要从这里继续
|
||||||
|
|
||||||
|
STOP
|
||||||
|
END PROGRAM SYNSPEC
|
||||||
@@ -0,0 +1,92 @@
|
|||||||
|
MODULE lindat_module
|
||||||
|
!==============================================================================
|
||||||
|
! SYNSPEC 谱线数据模块
|
||||||
|
! 原始文件:LINDAT.FOR
|
||||||
|
!
|
||||||
|
! 包含谱线数据参数和数组
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE params_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 谱线参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: MLIN0 = 1200000
|
||||||
|
INTEGER, PARAMETER :: MGRIEM = 10
|
||||||
|
INTEGER, PARAMETER :: MNLT = 2000
|
||||||
|
INTEGER, PARAMETER :: MSPHE2 = 20
|
||||||
|
INTEGER, PARAMETER :: MLIN = 190000
|
||||||
|
INTEGER, PARAMETER :: MPRF = MLIN0
|
||||||
|
|
||||||
|
INTEGER, PARAMETER :: MLINM0 = 9000000
|
||||||
|
INTEGER, PARAMETER :: MLINM = 1000000
|
||||||
|
INTEGER, PARAMETER :: MMLIST = 3
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! REAL*4 类型数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL*4 :: EXCL0(MLIN0), EXCU0(MLIN0), GF0(MLIN0)
|
||||||
|
REAL*4 :: EXTIN(MLIN0), BNUL(MLIN0)
|
||||||
|
REAL*4 :: GAMR0(MPRF), GS0(MPRF), GW0(MPRF)
|
||||||
|
REAL*4 :: WGR0(4,MGRIEM)
|
||||||
|
REAL*4 :: EXCLM(MLINM0,MMLIST), GFM(MLINM0,MMLIST)
|
||||||
|
REAL*4 :: EXTINM(MLINM0,MMLIST), GRM(MLINM0,MMLIST)
|
||||||
|
REAL*4 :: GSM(MLINM0,MMLIST), GWM(MLINM0,MMLIST)
|
||||||
|
REAL*4 :: GVDWH2(MLINM0,MMLIST), GEXPH2(MLINM0,MMLIST)
|
||||||
|
REAL*4 :: GVDWHE(MLINM0,MMLIST), GEXPHE(MLINM0,MMLIST)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 总谱线 (LINTOT)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FREQ0(MLIN0)
|
||||||
|
INTEGER :: INDAT(MLIN0), INDNLT(MLIN0)
|
||||||
|
INTEGER :: ILOWN(MLIN0), IUPN(MLIN0), IJCONT(MLIN0)
|
||||||
|
INTEGER :: INDLIN(MLIN), INDLIP(MLIN)
|
||||||
|
INTEGER :: NLIN0, NLIN, IRLIST, NNLT, NGRIEM
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 分子谱线 (MOLTOT)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FREQM(MLINM0,MMLIST)
|
||||||
|
INTEGER :: INDATM(MLINM0,MMLIST)
|
||||||
|
INTEGER :: INMLIN(MLINM,MMLIST), INMLIP(MLINM,MMLIST)
|
||||||
|
INTEGER :: NLINM0(MMLIST), NLINML(MMLIST), NLINMT(MMLIST)
|
||||||
|
INTEGER :: IUNITM(MMLIST), INACTM(MMLIST), IVDWLI(MMLIST)
|
||||||
|
INTEGER :: NMLIST
|
||||||
|
CHARACTER*40 :: AMLIST(0:MMLIST)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 线表参数 (LISPAR)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IBIN(0:MMLIST)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 谱线轮廓 (LINPRF)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IPRF0(MPRF), ISPRF(MPRF), IGRIEM(MPRF)
|
||||||
|
INTEGER :: ISP0(MSPHE2), NSP
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - NLTE 谱线 (LINNLT)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ABCENT(MNLT,MDEPTH), SLIN(MNLT,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 线深度 (LINDEP)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PLAN(MDEPTH), STIM(MDEPTH), EXHK(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 线中心 (LINCTR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DFRCON
|
||||||
|
INTEGER :: IJCNTR(MLIN), IJCMTR(MLINM,MMLIST)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 分子线读取 (MLINRE)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FRLASM(MMLIST), ALASTM(MMLIST), TMLIM(MMLIST)
|
||||||
|
INTEGER :: NXTSEM(MMLIST), IPRSEM(MMLIST), IREADM(MMLIST)
|
||||||
|
|
||||||
|
END MODULE lindat_module
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
MODULE modelp_module
|
||||||
|
!==============================================================================
|
||||||
|
! SYNSPEC 模型参数模块
|
||||||
|
! 原始文件:MODELP.FOR
|
||||||
|
!
|
||||||
|
! 包含模型大气的基本参数
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE params_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 模型参数 (MODELP)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DM(MDEPTH), TEMP(MDEPTH), ELEC(MDEPTH), DENS(MDEPTH)
|
||||||
|
REAL(dp) :: ZD(MDEPTH)
|
||||||
|
REAL(dp) :: VTURB(MDEPTH), VTB
|
||||||
|
REAL(dp) :: ABSTD(MDEPTH), ABSTDW(MFREQC,MDEPTH)
|
||||||
|
REAL(dp) :: POPUL(MLEVEL,MDEPTH), POPREL(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: DMR0(MDEPTH), DMRP(MDEPTH)
|
||||||
|
REAL(dp) :: SBF(MLEVEL)
|
||||||
|
REAL(dp) :: USUM(MIOEX)
|
||||||
|
REAL(dp) :: WOP(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: WNHINT(NLMX,MDEPTH), WNHE2(NLMX,MDEPTH)
|
||||||
|
REAL(dp) :: RRR(MDEPTH,MION,MATOM)
|
||||||
|
REAL(dp) :: JT(MDEPTH), TI0(MDEPTH), TI1(MDEPTH), TI2(MDEPTH)
|
||||||
|
|
||||||
|
CHARACTER*8 :: cmol(m molec)
|
||||||
|
REAL(dp) :: RRMOL(MMOLEC,MDEPTH), DOPMOL(MMOLEC,MDEPTH)
|
||||||
|
REAL(dp) :: AMMOL(MMOLEC)
|
||||||
|
REAL(dp) :: anh2(mdepth), anch(mdepth), anoh(mdepth), anhm(mdepth)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 原子不透明度 (OPACAT)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: OPATM(MATOM,MFREQ,MDEPTH), EMATM(MATOM,MFREQ,MDEPTH)
|
||||||
|
REAL(dp) :: OPATML(MATOM,MFREQ)
|
||||||
|
REAL(dp) :: GRADAT(MATOM,MDEPTH), GRADFA(MATOM,MDEPTH)
|
||||||
|
REAL(dp) :: POPAT(MATOM,MDEPTH)
|
||||||
|
REAL(dp) :: DGRAD0(MATOM,MATOM,MDEPTH), DGRADP(MATOM,MATOM,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 辐射场 (RADFLD)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: RAD(MFREQ,MDEPTH), RAD0(MFREQ,MDEPTH)
|
||||||
|
REAL(dp) :: FLX0(MFREQ,MDEPTH), flxt(mdepth), flxi(mdepth)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - Xenon 谱线轮廓 (XENPRF)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PRFXB(MLINH,MHWL,MHT,MHE), PRFXR(MLINH,MHWL,MHT,MHE)
|
||||||
|
REAL(dp) :: PRFB(MLINH,MDEPTH,MHWL), PRFR(MLINH,MDEPTH,MHWL)
|
||||||
|
REAL(dp) :: ALXEN(MLINH,MHWL), XTXEN(MHT,MLINH), XNEXEN(MHE,MLINH)
|
||||||
|
REAL(dp) :: XNEMIN
|
||||||
|
INTEGER :: NWLXEN(MLINH), NTHXEN(MLINH), NEHXEN(MLINH)
|
||||||
|
INTEGER :: ILXEN(4,22), IHXENB
|
||||||
|
|
||||||
|
END MODULE modelp_module
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
MODULE optpar_module
|
||||||
|
!==============================================================================
|
||||||
|
! SYNSPEC 不透明度参数模块
|
||||||
|
! 原始文件:OPTPAR.FOR
|
||||||
|
!
|
||||||
|
! 包含不透明度表的维度参数
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE params_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 不透明度表参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: MFRTAB = 100000
|
||||||
|
INTEGER, PARAMETER :: MTTAB = 20
|
||||||
|
INTEGER, PARAMETER :: MRTAB = 20
|
||||||
|
REAL*8, PARAMETER :: MSFTAB = 2000000.0
|
||||||
|
|
||||||
|
END MODULE optpar_module
|
||||||
@@ -0,0 +1,275 @@
|
|||||||
|
MODULE params_module
|
||||||
|
!==============================================================================
|
||||||
|
! SYNSPEC 参数和常量模块
|
||||||
|
! 原始文件:PARAMS.FOR
|
||||||
|
!
|
||||||
|
! 包含数组维度参数、物理常数和公共变量块
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
! 定义双精度类型别名
|
||||||
|
INTEGER, PARAMETER :: dp = KIND(1.0D0)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 数组维度参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: MATEX = 30
|
||||||
|
INTEGER, PARAMETER :: MIOEX = 90
|
||||||
|
INTEGER, PARAMETER :: MLEVEL = 1650
|
||||||
|
INTEGER, PARAMETER :: MDEPTH = 100
|
||||||
|
INTEGER, PARAMETER :: MDEPF = 500
|
||||||
|
INTEGER, PARAMETER :: MFREQ = 2000
|
||||||
|
INTEGER, PARAMETER :: MFREQC = 2000
|
||||||
|
INTEGER, PARAMETER :: MFRQ = 2000
|
||||||
|
INTEGER, PARAMETER :: MOPAC = MFRQ
|
||||||
|
INTEGER, PARAMETER :: MMU = 20
|
||||||
|
INTEGER, PARAMETER :: MCROSS = MLEVEL
|
||||||
|
INTEGER, PARAMETER :: MFIT = 1650
|
||||||
|
INTEGER, PARAMETER :: MFCRA = 1200
|
||||||
|
INTEGER, PARAMETER :: MTRAD = 3
|
||||||
|
INTEGER, PARAMETER :: MATOM = 99
|
||||||
|
INTEGER, PARAMETER :: MATOMBIG = 99
|
||||||
|
INTEGER, PARAMETER :: MION = 90
|
||||||
|
INTEGER, PARAMETER :: MION0 = 9
|
||||||
|
INTEGER, PARAMETER :: MMOLEC = 500
|
||||||
|
INTEGER, PARAMETER :: MPHOT = 10
|
||||||
|
INTEGER, PARAMETER :: MZZ = 2
|
||||||
|
INTEGER, PARAMETER :: MMER = 2
|
||||||
|
INTEGER, PARAMETER :: NLMX = 80
|
||||||
|
INTEGER, PARAMETER :: MI1 = MION0-1
|
||||||
|
INTEGER, PARAMETER :: MLINH = 78
|
||||||
|
INTEGER, PARAMETER :: MHT = 7
|
||||||
|
INTEGER, PARAMETER :: MHE = 20
|
||||||
|
INTEGER, PARAMETER :: MHWL = 55
|
||||||
|
|
||||||
|
INTEGER, PARAMETER :: MFGRID = 100000
|
||||||
|
INTEGER, PARAMETER :: MTTAB = 21
|
||||||
|
INTEGER, PARAMETER :: MRTAB = 20
|
||||||
|
INTEGER, PARAMETER :: MSFTAB = 6000000
|
||||||
|
|
||||||
|
INTEGER, PARAMETER :: mfhtab = 1000
|
||||||
|
INTEGER, PARAMETER :: mtabth = 10
|
||||||
|
INTEGER, PARAMETER :: mtabeh = 10
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 物理常数
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp), PARAMETER :: H = 6.6256D-27
|
||||||
|
REAL(dp), PARAMETER :: CL = 2.997925D10
|
||||||
|
REAL(dp), PARAMETER :: BOLK = 1.38054D-16
|
||||||
|
REAL(dp), PARAMETER :: HK = 4.79928144D-11
|
||||||
|
REAL(dp), PARAMETER :: EH = 2.17853041D-11
|
||||||
|
REAL(dp), PARAMETER :: BN = 1.4743D-2
|
||||||
|
REAL(dp), PARAMETER :: SIGE = 6.6516D-25
|
||||||
|
REAL(dp), PARAMETER :: PI4H = 1.8966D27
|
||||||
|
REAL(dp), PARAMETER :: HMASS = 1.67333D-24
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 单元编号
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: IBUFF = 95
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 量子数限制变量
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER*4 :: SQUANT1(MLEVEL), SQUANT2(MLEVEL)
|
||||||
|
INTEGER*4 :: LQUANT1(MLEVEL), LQUANT2(MLEVEL)
|
||||||
|
INTEGER*4 :: PQUANT1(MLEVEL), PQUANT2(MLEVEL)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 基本数值 (BASNUM)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: NATOM, NION, NLEVEL, ND, NDSTEP
|
||||||
|
INTEGER :: NFREQ, NFROBS, NFREQC, NFREQS, NMU
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - LTE 设置 (LTESET)
|
||||||
|
!==========================================================================
|
||||||
|
LOGICAL :: LTE, LTEGR
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 输入参数 (INPPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: TEFF, GRAV
|
||||||
|
REAL(dp) :: YTOT(MDEPTH), WMM(MDEPTH), WMY(MDEPTH)
|
||||||
|
REAL(dp) :: vaclim
|
||||||
|
REAL(dp) :: ATTOT(MATOM,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 基本模式 (BASICM)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IMODE, IMODE0, IFREQ, INLTE, IDSTD, IFWIN, IFEOS, IBFAC
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 输入关键字 (INTKEY)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: INMOD, INTRPL, ICHANG, ICHEMC, IATREF, ICONTL
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 空白标记 (LBLANK)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IBLANK, NBLANK
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 下一步初始化 (NXTINI)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ALM00, ALST00
|
||||||
|
INTEGER :: NXTSET, INLIST
|
||||||
|
REAL(dp) :: ALAMBE, DLAMLO
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 打印控制 (IPRNTR)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IPRIN
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 原子参数 (ATOPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: AMASS(MATEX)
|
||||||
|
REAL(dp) :: ABUND(MATEX,MDEPTH)
|
||||||
|
REAL(dp) :: RELAB(MATEX,MDEPTH)
|
||||||
|
INTEGER :: NUMAT(MATEX), N0A(MATEX), NKA(MATEX)
|
||||||
|
REAL(dp) :: SABND(MATEX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 离子参数 (IONPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FF(MIOEX)
|
||||||
|
INTEGER :: NFIRST(MIOEX), NLAST(MIOEX), NNEXT(MIOEX)
|
||||||
|
INTEGER :: IUPSUM(MIOEX), IZ(MIOEX), IFREE(MIOEX)
|
||||||
|
INTEGER :: INBFCS(MIOEX), ILIMITS(MIOEX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 能级参数 (LEVPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ENION(MLEVEL), G(MLEVEL)
|
||||||
|
INTEGER :: NQUANT(MLEVEL), IATM(MLEVEL), IEL(MLEVEL), ILK(MLEVEL)
|
||||||
|
INTEGER :: ifwop(mlevel), isemex(matom)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 能级限制 (LEVLIMITS)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ENION1(MLEVEL), ENION2(MLEVEL)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 跃迁参数 (TRAPAR)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IBF(MLEVEL)
|
||||||
|
REAL(dp) :: S0BF(MLEVEL), ALFBF(MLEVEL), BETBF(MLEVEL), GAMBF(MLEVEL)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 合并参数 (MRGPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: SGM0(MMER), FRCH(MMER)
|
||||||
|
REAL(dp) :: SGEXT1(MMER,MDEPTH), GMER(MMER,MDEPTH)
|
||||||
|
REAL(dp) :: SGMSUM(NLMX,MMER,MDEPTH), SGMG(MMER,MDEPTH)
|
||||||
|
INTEGER :: IMRG(MLEVEL), IIMER(MMER)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 向下跃迁参数 (DWNPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ELEC23(MDEPTH), Z3(MZZ)
|
||||||
|
REAL(dp) :: DWC1(MZZ,MDEPTH), DWC2(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 附加不透明度 (OPCPAR)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IOPADD, IOPHMI, IOPH2P, IOPHEM, IOPCH, IOPOH
|
||||||
|
INTEGER :: IOPH2M, IOH2H2, IOH2HE, IOH2H1, IOHHE
|
||||||
|
INTEGER :: IOPHLI, IRSCT, IRSCHE, IRSCH2
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 辅助索引 (AUXIND)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IATH, IELH, IELHM, N0H, N1H, NKH, N0HN, N0M
|
||||||
|
INTEGER :: IATHE, IELHE1, IELHE2
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 分子标记 (MOLFLG)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: TMOLIM
|
||||||
|
INTEGER :: MOLIND(11000), NMOLEC, IFMOL
|
||||||
|
INTEGER :: MOLTAB, IRWTAB, IIRWIN, IPFEXO
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 质量标志 (QFLAGS)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ERANGE
|
||||||
|
INTEGER :: ISPICK, ILPICK, IPPICK
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 线展宽不透明度原子 (ATOBLN)
|
||||||
|
!==========================================================================
|
||||||
|
LOGICAL :: LGR(MATOM), LRM(MATOM)
|
||||||
|
REAL(dp) :: ENEV(MATOM,MI1), AMAS(MATOM), ABND(MATOM)
|
||||||
|
REAL(dp) :: ABNDD(MATOM,MDEPTH), ABNREF(MDEPTH)
|
||||||
|
CHARACTER*4 :: TYPAT(MATOM)
|
||||||
|
INTEGER :: IATEX(MATOM), INPOT(MATOM,MION0)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 原子初始化 (ATOINI)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: NATOMS, IONIZ(MATOM)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 标准光球丰度 (PFSTDS)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PFSTD(MION,MATOM)
|
||||||
|
INTEGER :: MODPF(MATOM)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 附加布居 (ADDPOP)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: RR(MATOM,MION)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 氢 Stark 加宽表 (HYDPRF)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PRFHYD(MLINH,MDEPTH,MHWL), WLHYD(MLINH,MHWL)
|
||||||
|
INTEGER :: NWLHYD(MLINH)
|
||||||
|
REAL(dp) :: WL(MHWL,MLINH), XT(MHT,MLINH), XNE(MHE,MLINH)
|
||||||
|
REAL(dp) :: PRF(MHWL,MHT,MHE,MLINH)
|
||||||
|
REAL(dp) :: WLINE(4,22)
|
||||||
|
INTEGER :: NWLH(MLINH), NTH(MLINH), NEH(MLINH)
|
||||||
|
INTEGER :: ILIN0(4,22), ILEMKE, NLIHYD
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 氢辅助 (AUXHYD)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: XK, FXK, BETAD, DBETA, BERGFC, CUTLYM, CUTBAL
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - H/He 谱线轮廓 (HHEPRF)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IHYDPR, IHE1PR, IHE2PR
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 氢线参数 (HYLPAR)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IHYL, ILOWH, M10, M20
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 氢线角度权重 (HYLPAW)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IHYLW(MFREQ), ILOWHW(MFREQ)
|
||||||
|
INTEGER :: M10W(MFREQ), M20W(MFREQ)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - HeII 线参数 (HE2PAR)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IFHE2, IHE2L, ILWHE2, MHE10, MHE20
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - HeII 线角度权重 (HE2PAW)
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IHE2LW(MFREQ), ILWHEW(MFREQ)
|
||||||
|
INTEGER :: MHE10W(MFREQ), MHE20W(MFREQ)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 速度场参数 (VELPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ANGL(MMU), WANGL(MMU), VELC(MDEPTH)
|
||||||
|
INTEGER :: NMU0, IFLUX
|
||||||
|
|
||||||
|
END MODULE params_module
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
MODULE synthp_module
|
||||||
|
!==============================================================================
|
||||||
|
! SYNSPEC 光谱合成参数模块
|
||||||
|
! 原始文件:SYNTHP.FOR
|
||||||
|
!
|
||||||
|
! 包含光谱合成相关的频率和交叉截面参数
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE params_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 频率 (FREQSY)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FREQ(MFREQ), W(MFREQ), WLAM(MFREQ)
|
||||||
|
REAL(dp) :: FRX1(MFREQ), FRX2(MFREQ), BNUE(MFREQ)
|
||||||
|
REAL(dp) :: FRQOBS(MFREQ), WLOBS(MFREQ)
|
||||||
|
REAL(dp) :: FREQC(MFREQC), WLAMC(MFREQC)
|
||||||
|
INTEGER :: IJCINT(MFREQ)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 平均截面 (CRSAVG)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FRECR(MCROSS,MFCRA), CROSR(MCROSS,MFCRA)
|
||||||
|
REAL(dp) :: CRMX(MCROSS)
|
||||||
|
INTEGER :: NFCR(MCROSS), IASV
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 平均 Q (CRSAVQ)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FRECQ(MPHOT,MFCRA), QHOT(MPHOT,MFCRA)
|
||||||
|
REAL(dp) :: AQHT(MPHOT), EQHT(MPHOT), GQHT(MPHOT)
|
||||||
|
REAL(dp) :: CRMY(MPHOT)
|
||||||
|
INTEGER :: NFQHT(MPHOT), NQHT
|
||||||
|
|
||||||
|
END MODULE synthp_module
|
||||||
@@ -0,0 +1,57 @@
|
|||||||
|
MODULE wincom_module
|
||||||
|
!==============================================================================
|
||||||
|
! SYNSPEC 窗口通用变量模块
|
||||||
|
! 原始文件:WINCOM.FOR
|
||||||
|
!
|
||||||
|
! 包含角度、半径和扩展模型参数
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE params_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 窗口参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: MRCORE = 20
|
||||||
|
INTEGER, PARAMETER :: MKU = MDEPTH + MRCORE
|
||||||
|
INTEGER, PARAMETER :: MEXT = MKU
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 角度 (COMANG)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: BMU(MKU,MDEPTH), WMUJ(MKU,MDEPTH), WMUH(MKU)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 共动半径 (CORADI)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: RD(MDEPTH), RCORE, RFNORM, PIM(MKU)
|
||||||
|
REAL(dp) :: RAD1(MDEPTH), DELZ(MKU,MDEPTH)
|
||||||
|
REAL(dp) :: NUD(MKU), NUDF(MKU)
|
||||||
|
INTEGER :: KMU, NREXT, NRCORE, NFIRY, NDF
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 共动频率 (CORAF)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DELZF(MEXT,MDEPF), DFRQF(MEXT,2*MDEPF)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 共动速度 (COVEL)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: VEL(MDEPTH), DFRQ(MKU,2*MDEPTH), DVD(MDEPTH)
|
||||||
|
REAL(dp) :: XMDOT, XMD4, BETAV, VINF
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 扩展模型 (EXTMOD)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FFQ(MOPAC), FFQV(MOPAC), RDF(MDEPF)
|
||||||
|
REAL(dp) :: DENSF(MDEPF), VELF(MEXT,MDEPF)
|
||||||
|
REAL(dp) :: DRAY(MEXT,2*MDEPF), KRAY(MEXT,2*MDEPF)
|
||||||
|
INTEGER :: NOPAC
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 不透明度平均 (OPAVEL)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: WDIL(MDEPTH), PLANW(MDEPTH)
|
||||||
|
REAL(dp) :: TRAD(MTRAD,MDEPTH), DENSCON(MDEPTH)
|
||||||
|
|
||||||
|
END MODULE wincom_module
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
# ==============================================================================
|
||||||
|
# TLUSTY CMake 构建配置文件
|
||||||
|
# ==============================================================================
|
||||||
|
|
||||||
|
cmake_minimum_required(VERSION 3.15)
|
||||||
|
project(TLUSTY Fortran)
|
||||||
|
|
||||||
|
# 编译器设置
|
||||||
|
set(CMAKE_FORTRAN_COMPILER gfortran)
|
||||||
|
set(CMAKE_Fortran_FLAGS "-O3 -fno-automatic")
|
||||||
|
set(CMAKE_Fortran_FLAGS_DEBUG "-g -O0 -fcheck=all -Wall")
|
||||||
|
|
||||||
|
# 模块输出目录
|
||||||
|
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||||
|
Fortran_MODULE_DIRECTORY "${CMAKE_BINARY_DIR}/modules"
|
||||||
|
)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# TLUSTY 模块文件 (按编译顺序排列)
|
||||||
|
# ==============================================================================
|
||||||
|
set(TLUSTY_MODULES
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/impli_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/basics_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/iterat_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/alipar_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/atomic_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/modelq_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/odfpar_module.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules/array1_module.f90
|
||||||
|
)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# TLUSTY 子程序文件
|
||||||
|
# 注意:这些子程序需要从原始 tlusty208.f 中提取
|
||||||
|
# ==============================================================================
|
||||||
|
set(TLUSTY_SUBROUTINES
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/start_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/initia_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/resolv_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/solve_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/solves_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/accel2_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/rybsol_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/timing_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/comset_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/prdini_sub.f90
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/subroutines/hedif_sub.f90
|
||||||
|
)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# TLUSTY 主程序
|
||||||
|
# ==============================================================================
|
||||||
|
set(TLUSTY_MAIN
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/main/tlusty_main.f90
|
||||||
|
)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 创建可执行文件
|
||||||
|
# ==============================================================================
|
||||||
|
add_executable(tlusty.exe
|
||||||
|
${TLUSTY_MODULES}
|
||||||
|
${TLUSTY_SUBROUTINES}
|
||||||
|
${TLUSTY_MAIN}
|
||||||
|
)
|
||||||
|
|
||||||
|
# 设置模块依赖关系
|
||||||
|
target_include_directories(tlusty.exe PRIVATE
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/modules
|
||||||
|
)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 安装规则
|
||||||
|
# ==============================================================================
|
||||||
|
install(TARGETS tlusty.exe DESTINATION bin)
|
||||||
|
install(DIRECTORY ${CMAKE_BINARY_DIR}/modules/ DESTINATION include/tlusty)
|
||||||
|
|
||||||
|
# ==============================================================================
|
||||||
|
# 打印配置信息
|
||||||
|
# ==============================================================================
|
||||||
|
message(STATUS "TLUSTY 配置:")
|
||||||
|
message(STATUS " 编译器:${CMAKE_FORTRAN_COMPILER}")
|
||||||
|
message(STATUS " 编译标志:${CMAKE_Fortran_FLAGS}")
|
||||||
|
message(STATUS " 模块目录:${CMAKE_BINARY_DIR}/modules")
|
||||||
@@ -0,0 +1,64 @@
|
|||||||
|
!==============================================================================
|
||||||
|
! TLUSTY208 主程序
|
||||||
|
!
|
||||||
|
! Non-LTE model stellar atmospheres computer program
|
||||||
|
! Universal code for stellar atmospheres and accretion disks
|
||||||
|
!
|
||||||
|
! 版本:TLUSTY208
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
PROGRAM TLUSTY
|
||||||
|
USE impli_module
|
||||||
|
USE basics_module
|
||||||
|
USE iterat_module
|
||||||
|
USE alipar_module
|
||||||
|
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
INTEGER :: INIT, ITER
|
||||||
|
LOGICAL :: LFIN
|
||||||
|
|
||||||
|
! 打开临时文件
|
||||||
|
OPEN(UNIT=91, STATUS='SCRATCH', FORM='UNFORMATTED')
|
||||||
|
OPEN(UNIT=92, STATUS='SCRATCH', FORM='UNFORMATTED')
|
||||||
|
OPEN(UNIT=93, STATUS='SCRATCH', FORM='UNFORMATTED')
|
||||||
|
|
||||||
|
! 初始化
|
||||||
|
INIT = 1
|
||||||
|
ITER = 0
|
||||||
|
CALL START
|
||||||
|
LFIN = .FALSE.
|
||||||
|
IF (NITER .EQ. 0) LFIN = .TRUE.
|
||||||
|
|
||||||
|
! 混合 CL/ALI 方法的基本迭代循环
|
||||||
|
10 CONTINUE
|
||||||
|
ITER = ITER + 1
|
||||||
|
|
||||||
|
! 1. 形式解步骤
|
||||||
|
CALL RESOLV
|
||||||
|
! CALL TIMING(1,ITER)
|
||||||
|
INIT = 0
|
||||||
|
IF (LFIN) GO TO 20
|
||||||
|
|
||||||
|
! 1b. 收敛加速
|
||||||
|
IF (IACC .GT. 0) CALL ACCEL2
|
||||||
|
! IF (LAC2) GO TO 10
|
||||||
|
|
||||||
|
! 2. 线性方程组的解
|
||||||
|
IF (IFRYB .EQ. 0) THEN
|
||||||
|
IF (NN .GT. MSMX) THEN
|
||||||
|
CALL SOLVE
|
||||||
|
ELSE
|
||||||
|
CALL SOLVES
|
||||||
|
END IF
|
||||||
|
ELSE
|
||||||
|
CALL RYBSOL
|
||||||
|
END IF
|
||||||
|
|
||||||
|
CALL TIMING(2, ITER)
|
||||||
|
GO TO 10
|
||||||
|
|
||||||
|
20 CONTINUE
|
||||||
|
|
||||||
|
STOP
|
||||||
|
END PROGRAM TLUSTY
|
||||||
@@ -0,0 +1,109 @@
|
|||||||
|
MODULE alipar_module
|
||||||
|
!==============================================================================
|
||||||
|
! TLUSTY ALI (Accelerated Lambda Iteration) 方法参数模块
|
||||||
|
! 原始文件:ALIPAR.FOR
|
||||||
|
!
|
||||||
|
! 包含加速 Lambda 迭代方法的参数和数组
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE impli_module
|
||||||
|
USE basics_module
|
||||||
|
USE iterat_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - FIXALP (固定 ALI 参数)
|
||||||
|
!==========================================================================
|
||||||
|
|
||||||
|
! 吸收、发射、散射数组
|
||||||
|
REAL(dp) :: ABSO(MFREQ)
|
||||||
|
REAL(dp) :: EMIS(MFREQ)
|
||||||
|
REAL(dp) :: SCAT(MFREQ)
|
||||||
|
|
||||||
|
! 重新发射相关数组(温度相关)
|
||||||
|
REAL(dp) :: REIT(MDEPTH)
|
||||||
|
REAL(dp) :: REIN(MDEPTH)
|
||||||
|
REAL(dp) :: REIM(MDEPTH)
|
||||||
|
REAL(dp) :: REIP(MLVEXP,MDEPTH)
|
||||||
|
|
||||||
|
! 平均重新发射数组
|
||||||
|
REAL(dp) :: AREIT(MDEPTH)
|
||||||
|
REAL(dp) :: AREIN(MDEPTH)
|
||||||
|
REAL(dp) :: AREIM(MDEPTH)
|
||||||
|
REAL(dp) :: AREIP(MLVEXP,MDEPTH)
|
||||||
|
|
||||||
|
! 校正重新发射数组
|
||||||
|
REAL(dp) :: CREIT(MDEPTH)
|
||||||
|
REAL(dp) :: CREIN(MDEPTH)
|
||||||
|
REAL(dp) :: CREIM(MDEPTH)
|
||||||
|
REAL(dp) :: CREIP(MLVEXP,MDEPTH)
|
||||||
|
|
||||||
|
! 交叉重新发射数组
|
||||||
|
REAL(dp) :: REIX(MDEPTH)
|
||||||
|
REAL(dp) :: CREIX(MDEPTH)
|
||||||
|
|
||||||
|
! 重新发射导数数组
|
||||||
|
REAL(dp) :: REDX(MDEPTH)
|
||||||
|
REAL(dp) :: REDT(MDEPTH)
|
||||||
|
REAL(dp) :: REDN(MDEPTH)
|
||||||
|
REAL(dp) :: REDM(MDEPTH)
|
||||||
|
REAL(dp) :: REDP(MLVEXP,MDEPTH)
|
||||||
|
|
||||||
|
! 重新发射导数负值数组
|
||||||
|
REAL(dp) :: REDXM(MDEPTH)
|
||||||
|
REAL(dp) :: REDTM(MDEPTH)
|
||||||
|
REAL(dp) :: REDNM(MDEPTH)
|
||||||
|
REAL(dp) :: REDMM(MDEPTH)
|
||||||
|
REAL(dp) :: REDPM(MLVEXP,MDEPTH)
|
||||||
|
|
||||||
|
! 重新发射导数正值数组
|
||||||
|
REAL(dp) :: REDTP(MDEPTH)
|
||||||
|
REAL(dp) :: REDNP(MDEPTH)
|
||||||
|
REAL(dp) :: REDXP(MDEPTH)
|
||||||
|
REAL(dp) :: REDMP(MDEPTH)
|
||||||
|
REAL(dp) :: REDPP(MLVEXP,MDEPTH)
|
||||||
|
|
||||||
|
! He 重新发射数组
|
||||||
|
REAL(dp) :: HEIT(MDEPTH)
|
||||||
|
REAL(dp) :: HEIN(MDEPTH)
|
||||||
|
REAL(dp) :: HEIM(MDEPTH)
|
||||||
|
REAL(dp) :: HEIP(MLVEXP,MDEPTH)
|
||||||
|
|
||||||
|
! He 重新发射负值数组
|
||||||
|
REAL(dp) :: HEITM(MDEPTH)
|
||||||
|
REAL(dp) :: HEINM(MDEPTH)
|
||||||
|
REAL(dp) :: HEIMM(MDEPTH)
|
||||||
|
REAL(dp) :: HEIPM(MLVEXP,MDEPTH)
|
||||||
|
|
||||||
|
! He 重新发射正值数组
|
||||||
|
REAL(dp) :: HEITP(MDEPTH)
|
||||||
|
REAL(dp) :: HEINP(MDEPTH)
|
||||||
|
REAL(dp) :: HEIMP(MDEPTH)
|
||||||
|
REAL(dp) :: HEIPP(MLVEXP,MDEPTH)
|
||||||
|
|
||||||
|
! 能量相关数组
|
||||||
|
REAL(dp) :: EHET(MDEPTH)
|
||||||
|
REAL(dp) :: EHEN(MDEPTH)
|
||||||
|
REAL(dp) :: ERET(MDEPTH)
|
||||||
|
REAL(dp) :: EREN(MDEPTH)
|
||||||
|
REAL(dp) :: EHEP(MLVEX3,MDEPTH)
|
||||||
|
REAL(dp) :: EREP(MLVEX3,MDEPTH)
|
||||||
|
|
||||||
|
! APT 相关数组
|
||||||
|
REAL(dp) :: APT(MLVEXP,MDEPTH)
|
||||||
|
REAL(dp) :: APN(MLVEXP,MDEPTH)
|
||||||
|
REAL(dp) :: AAPT(MLVEX3,MDEPTH)
|
||||||
|
REAL(dp) :: AAPN(MLVEX3,MDEPTH)
|
||||||
|
REAL(dp) :: CAPT(MLVEX3,MDEPTH)
|
||||||
|
REAL(dp) :: CAPN(MLVEX3,MDEPTH)
|
||||||
|
|
||||||
|
! APP 相关数组
|
||||||
|
REAL(dp) :: APP(MLVEXP,MLVEXP,MDEPTH)
|
||||||
|
REAL(dp) :: AAPP(MLVEX3,MLVEX3,MDEPTH)
|
||||||
|
REAL(dp) :: CAPP(MLVEX3,MLVEX3,MDEPTH)
|
||||||
|
|
||||||
|
! ALI 标志和参数
|
||||||
|
REAL(dp) :: QTLAS
|
||||||
|
INTEGER :: IFALI,IFPOPR,irprec,ifprec,itold1,itold2,itlas
|
||||||
|
|
||||||
|
END MODULE alipar_module
|
||||||
@@ -0,0 +1,191 @@
|
|||||||
|
MODULE array1_module
|
||||||
|
!==============================================================================
|
||||||
|
! TLUSTY 工作数组模块
|
||||||
|
! 原始文件:ARRAY1.FOR
|
||||||
|
!
|
||||||
|
! 包含线性方程组系数矩阵、辐射场数组和导数数组等主要工作数组
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE impli_module
|
||||||
|
USE basics_module
|
||||||
|
USE iterat_module
|
||||||
|
USE alipar_module
|
||||||
|
USE atomic_module
|
||||||
|
USE modelq_module
|
||||||
|
USE odfpar_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 矩阵数组 (A, B, C, E)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: A(MTOT,MTOT)
|
||||||
|
REAL(dp) :: B(MTOT,MTOT)
|
||||||
|
REAL(dp) :: C(MTOT,MTOT)
|
||||||
|
REAL(dp) :: E(MTOT,MTOT)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 向量数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: VECL(MTOT)
|
||||||
|
REAL(dp) :: Y1(MTOT)
|
||||||
|
REAL(dp) :: Y2(MTOT)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - PSI 数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PSI0(MTOT)
|
||||||
|
REAL(dp) :: PSIM(MTOT)
|
||||||
|
REAL(dp) :: PSIP(MTOT)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 辐射场数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: RAD0(MTOT)
|
||||||
|
REAL(dp) :: RADM(MTOT)
|
||||||
|
REAL(dp) :: RADP(MTOT)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - FKM, FK0, FKP
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FKM(MFREX)
|
||||||
|
REAL(dp) :: FK0(MFREX)
|
||||||
|
REAL(dp) :: FKP(MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 吸收系数数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ABSOM(MFREX)
|
||||||
|
REAL(dp) :: ABSO0(MFREX)
|
||||||
|
REAL(dp) :: ABSOP(MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 发射系数数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: EMISM(MFREX)
|
||||||
|
REAL(dp) :: EMIS0(MFREX)
|
||||||
|
REAL(dp) :: EMISP(MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 散射系数数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: SCATM(MFREX)
|
||||||
|
REAL(dp) :: SCAT0(MFREX)
|
||||||
|
REAL(dp) :: SCATP(MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 吸收导数数组 (温度)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DABTM(MFREX)
|
||||||
|
REAL(dp) :: DABT0(MFREX)
|
||||||
|
REAL(dp) :: DABTP(MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 发射导数数组 (温度)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DEMTM(MFREX)
|
||||||
|
REAL(dp) :: DEMT0(MFREX)
|
||||||
|
REAL(dp) :: DEMTP(MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 吸收导数数组 (密度)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DABNM(MFREX)
|
||||||
|
REAL(dp) :: DABN0(MFREX)
|
||||||
|
REAL(dp) :: DABNP(MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 发射导数数组 (密度)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DEMNM(MFREX)
|
||||||
|
REAL(dp) :: DEMN0(MFREX)
|
||||||
|
REAL(dp) :: DEMNP(MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 吸收导数数组 (列质量)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DABMM(MFREX)
|
||||||
|
REAL(dp) :: DABM0(MFREX)
|
||||||
|
REAL(dp) :: DABMP(MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 发射导数数组 (列质量)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DEMMM(MFREX)
|
||||||
|
REAL(dp) :: DEMM0(MFREX)
|
||||||
|
REAL(dp) :: DEMMP(MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 权重深度数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: WDEPM(MFREX)
|
||||||
|
REAL(dp) :: WDEP0(MFREX)
|
||||||
|
REAL(dp) :: WDEPP(MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - SBF 数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: SBFM(MLEVEL)
|
||||||
|
REAL(dp) :: SBF0(MLEVEL)
|
||||||
|
REAL(dp) :: SBFP(MLEVEL)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - HE, RE, REXA 数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: HEX(MLEVEL)
|
||||||
|
REAL(dp) :: REX(MLEVEL)
|
||||||
|
REAL(dp) :: REXA(MLEVEL)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - DSBF 数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DSBFM(MLEVEL)
|
||||||
|
REAL(dp) :: DSBF0(MLEVEL)
|
||||||
|
REAL(dp) :: DSBFP(MLEVEL)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - SUMDCH
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: SUMDCH(MLEVEL)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - DRCH, DRET 数组 (负值)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DRCHM(MLEVEL,MFREX)
|
||||||
|
REAL(dp) :: DRETM(MLEVEL,MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - DRCH, DRET 数组 (零阶)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DRCH0(MLEVEL,MFREX)
|
||||||
|
REAL(dp) :: DRET0(MLEVEL,MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - DRCH, DRET 数组 (正值)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DRCHP(MLEVEL,MFREX)
|
||||||
|
REAL(dp) :: DRETP(MLEVEL,MFREX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - EXPRAD (显式辐射)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ABSOEX(MFREX,MDEPTH)
|
||||||
|
REAL(dp) :: EMISEX(MFREX,MDEPTH)
|
||||||
|
REAL(dp) :: SCATEX(MFREX,MDEPTH)
|
||||||
|
REAL(dp) :: DABTEX(MFREX,MDEPTH)
|
||||||
|
REAL(dp) :: DEMTEX(MFREX,MDEPTH)
|
||||||
|
REAL(dp) :: DABNEX(MFREX,MDEPTH)
|
||||||
|
REAL(dp) :: DEMNEX(MFREX,MDEPTH)
|
||||||
|
REAL(dp) :: DABMEX(MFREX,MDEPTH)
|
||||||
|
REAL(dp) :: DEMMEX(MFREX,MDEPTH)
|
||||||
|
REAL(dp) :: DRCHEX(MLVEXP,MFREX,MDEPTH)
|
||||||
|
REAL(dp) :: DRETEX(MLVEXP,MFREX,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - BPOCOM (束缚 - 自由连续谱)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ESEMAT(MLEVEL,MLEVEL)
|
||||||
|
REAL(dp) :: BESE(MLEVEL)
|
||||||
|
REAL(dp) :: ATT(MLEVEL)
|
||||||
|
REAL(dp) :: ANN(MLEVEL)
|
||||||
|
|
||||||
|
END MODULE array1_module
|
||||||
@@ -0,0 +1,220 @@
|
|||||||
|
MODULE atomic_module
|
||||||
|
!==============================================================================
|
||||||
|
! TLUSTY 原子数据模块
|
||||||
|
! 原始文件:ATOMIC.FOR
|
||||||
|
!
|
||||||
|
! 包含原子、离子、能级和跃迁相关的参数和数据
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE impli_module
|
||||||
|
USE basics_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 辅助参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: MPAG = MLEVEL/6+1
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 字符类型数组
|
||||||
|
!==========================================================================
|
||||||
|
CHARACTER*40 :: FIDATA(MION),FIODF1(MION),FIODF2(MION),FIBFCS(MION)
|
||||||
|
CHARACTER*10 :: TYPLEV(MLEVEL)
|
||||||
|
CHARACTER*4 :: TYPION(MION)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 原子参数 (ATOPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: AMASS(MATOM)
|
||||||
|
REAL(dp) :: ABUND(MATOM,MDEPTH)
|
||||||
|
INTEGER :: NUMAT(MATOM)
|
||||||
|
INTEGER :: N0A(MATOM)
|
||||||
|
INTEGER :: NKA(MATOM)
|
||||||
|
INTEGER :: nref(matom)
|
||||||
|
INTEGER :: iatex(matom)
|
||||||
|
INTEGER :: nrefs(matom,mdepth)
|
||||||
|
INTEGER :: iadop(matom)
|
||||||
|
INTEGER :: iifix(matom)
|
||||||
|
INTEGER :: iatref
|
||||||
|
INTEGER :: modref
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 原子质量
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: amas(100)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 离子参数 (IONPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FF(MION)
|
||||||
|
REAL(dp) :: CHARG2(MION)
|
||||||
|
INTEGER :: NFIRST(MION)
|
||||||
|
INTEGER :: NLAST(MION)
|
||||||
|
INTEGER :: NNEXT(MION)
|
||||||
|
INTEGER :: IZ(MION)
|
||||||
|
INTEGER :: IUPSUM(MION)
|
||||||
|
INTEGER :: ICUP(MION)
|
||||||
|
INTEGER :: ilte(mion)
|
||||||
|
INTEGER :: iltion(mion)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 能级参数 (LEVPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ENION(MLEVEL)
|
||||||
|
REAL(dp) :: G(MLEVEL)
|
||||||
|
INTEGER :: NQUANT(MLEVEL)
|
||||||
|
INTEGER :: IATM(MLEVEL)
|
||||||
|
INTEGER :: IEL(MLEVEL)
|
||||||
|
INTEGER :: ILK(MLEVEL)
|
||||||
|
INTEGER :: ilin(mlevel)
|
||||||
|
INTEGER :: iltlev(mlevel)
|
||||||
|
INTEGER :: indlev(mlevel)
|
||||||
|
INTEGER :: imodl(mlevel)
|
||||||
|
INTEGER :: iiexp(mlevel)
|
||||||
|
INTEGER :: iifor(mlevel)
|
||||||
|
INTEGER :: ipzert(mlevel)
|
||||||
|
INTEGER :: igzert(mlevel)
|
||||||
|
INTEGER :: indlgz(mlevel)
|
||||||
|
INTEGER :: iinonz(mlevel)
|
||||||
|
INTEGER :: NLVEXP
|
||||||
|
INTEGER :: NLVFOR
|
||||||
|
INTEGER :: NLVEXZ
|
||||||
|
LOGICAL :: LBPFX
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 跃迁参数 (TRAPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FR0(MTRANS)
|
||||||
|
REAL(dp) :: OSC0(MTRANS)
|
||||||
|
REAL(dp) :: CPAR(MTRANS)
|
||||||
|
REAL(dp) :: FRQMX(MTRANS)
|
||||||
|
REAL(dp) :: FR0PC(MTRANS)
|
||||||
|
REAL(dp) :: OMECOL(MLEVEL,MLEVEL)
|
||||||
|
REAL(dp) :: XGRAD
|
||||||
|
REAL(dp) :: STRL1
|
||||||
|
REAL(dp) :: STRL2
|
||||||
|
REAL(dp) :: STRLX
|
||||||
|
INTEGER :: ILOW(MTRANS)
|
||||||
|
INTEGER :: IUP(MTRANS)
|
||||||
|
INTEGER :: INDEXP(MTRANS)
|
||||||
|
INTEGER :: KFR0(MTRANS)
|
||||||
|
INTEGER :: KFR1(MTRANS)
|
||||||
|
INTEGER :: ILUCTR(MTRANS)
|
||||||
|
INTEGER :: IFC0(MTRANS)
|
||||||
|
INTEGER :: IFC1(MTRANS)
|
||||||
|
INTEGER :: IFR0(MTRANS)
|
||||||
|
INTEGER :: IFR1(MTRANS)
|
||||||
|
INTEGER :: ITRA(MLEVEL,MLEVEL)
|
||||||
|
INTEGER :: IPROF(MTRANS)
|
||||||
|
INTEGER :: ICOL(MTRANS)
|
||||||
|
INTEGER :: INTMOD(MTRANS)
|
||||||
|
INTEGER :: ITRCON(MTRANS)
|
||||||
|
INTEGER :: IDIEL(MTRANS)
|
||||||
|
INTEGER :: IJTF(MTRANS)
|
||||||
|
LOGICAL :: LCOMP(MTRANS)
|
||||||
|
LOGICAL :: LINE(MTRANS)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 光子设置 (PHOSET)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: S0CS(MLEVEL)
|
||||||
|
REAL(dp) :: ALFCS(MLEVEL)
|
||||||
|
REAL(dp) :: BETCS(MLEVEL)
|
||||||
|
REAL(dp) :: GAMCS(MLEVEL)
|
||||||
|
INTEGER :: IBF(MLEVEL)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - TOPCS (b-f 截面表)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: CTOP(MFIT,MCROSS) ! sigma=alog10(sigma/10^-18) of fit point
|
||||||
|
REAL(dp) :: XTOP(MFIT,MCROSS) ! x = alog10(nu/nu0) of fit point
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 碰撞率表
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: CTEMP(MXTCOL,MCFIT,MCORAT) ! temperature vs.
|
||||||
|
REAL(dp) :: CRATE(MXTCOL,MCFIT,MCORAT) ! collisional rates
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - Voigt 参数
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: GAMAR(MVOIGT)
|
||||||
|
REAL(dp) :: STARK1(MVOIGT)
|
||||||
|
REAL(dp) :: STARK2(MVOIGT)
|
||||||
|
REAL(dp) :: STARK3(MVOIGT)
|
||||||
|
REAL(dp) :: VDWH(MVOIGT)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - He 碰撞率
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: COLHE1(19,19)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 跃迁相关
|
||||||
|
!==========================================================================
|
||||||
|
LOGICAL :: LEXP(MTRANS)
|
||||||
|
LOGICAL :: LALI(MTRANS)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 跃迁 ALI
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: NFFIX
|
||||||
|
LOGICAL :: IFSUB
|
||||||
|
LOGICAL :: IFLEV
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 辅助索引
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IATH,IATHE,IELH,IELHM,IELHE1,IELHE2
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 离子文件
|
||||||
|
!==========================================================================
|
||||||
|
CHARACTER*40 :: FIDATA_ARR(MION)
|
||||||
|
CHARACTER*40 :: FIODF1_ARR(MION)
|
||||||
|
CHARACTER*40 :: FIODF2_ARR(MION)
|
||||||
|
CHARACTER*40 :: FIBFCS_ARR(MION)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 离子数据
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IATI(MION)
|
||||||
|
INTEGER :: IZI(MION)
|
||||||
|
INTEGER :: NLEVS(MION)
|
||||||
|
INTEGER :: NLLIM(MION)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 氢振子强度
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: OSH(20,20)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 打印参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: NPGPOP
|
||||||
|
INTEGER :: IIPR(6,MPAG)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 表最大值
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: frtabm
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 谱线展宽参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: MTRPRD = 5
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 展宽参数 (PRDPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DOPTR(MTRPRD,MDEPTH)
|
||||||
|
REAL(dp) :: COHER(MTRPRD,MDEPTH)
|
||||||
|
REAL(dp) :: PJBAR(MTRPRD,MDEPTH)
|
||||||
|
REAL(dp) :: RJBAR(MTRPRD,MDEPTH)
|
||||||
|
REAL(dp) :: XPDIV
|
||||||
|
INTEGER :: IPRD(MTRANS)
|
||||||
|
INTEGER :: ITRTOT(MTRPRD)
|
||||||
|
INTEGER :: NTRPRD
|
||||||
|
LOGICAL :: IFPRD
|
||||||
|
|
||||||
|
END MODULE atomic_module
|
||||||
@@ -0,0 +1,206 @@
|
|||||||
|
MODULE basics_module
|
||||||
|
!==============================================================================
|
||||||
|
! TLUSTY 基本参数和常量模块
|
||||||
|
! 原始文件:BASICS.FOR
|
||||||
|
!
|
||||||
|
! 包含数组维度参数、物理常数、数学常数和公共变量块
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE impli_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 数组维度参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: MATOM = 99 ! 最大显式原子数
|
||||||
|
INTEGER, PARAMETER :: MION = 170 ! 最大显式离子数
|
||||||
|
INTEGER, PARAMETER :: MLEVEL = 1134 ! 最大显式能级数
|
||||||
|
INTEGER, PARAMETER :: MLVEXP = 233 ! 最大线性化显式能级数
|
||||||
|
INTEGER, PARAMETER :: MTRANS = 21000 ! 最大跃迁总数
|
||||||
|
INTEGER, PARAMETER :: MDEPTH = 100 ! 最大深度点数
|
||||||
|
INTEGER, PARAMETER :: MFREQ = 135000 ! 最大频率点数
|
||||||
|
INTEGER, PARAMETER :: MFREQP = 220000 ! 频率工作数组
|
||||||
|
INTEGER, PARAMETER :: MFREQC = 125000 ! 连续谱最大频率点数
|
||||||
|
INTEGER, PARAMETER :: MFREX = 54 ! 最大线性化频率数
|
||||||
|
INTEGER, PARAMETER :: MFREQL = 25798 ! 每条线最大频率数
|
||||||
|
INTEGER, PARAMETER :: MTOT = 280 ! 最大线性化参数数
|
||||||
|
INTEGER, PARAMETER :: MMU = 6 ! 最大角度点数
|
||||||
|
INTEGER, PARAMETER :: MFIT = 357 ! 最大拟合点数 (OP b-f c.s)
|
||||||
|
INTEGER, PARAMETER :: MITJ = 380 ! 最大重叠跃迁数
|
||||||
|
INTEGER, PARAMETER :: MMCDW = 26 ! 最大伪连续能级数
|
||||||
|
INTEGER, PARAMETER :: MMER = 12 ! 最大合并能级数
|
||||||
|
INTEGER, PARAMETER :: MVOIGT = 8080 ! Voigt 轮廓最大线条数
|
||||||
|
INTEGER, PARAMETER :: MZZ = 10 ! 占据概率离子最大电荷
|
||||||
|
INTEGER, PARAMETER :: NLMX = 80 ! 考虑的类氢最高能级
|
||||||
|
INTEGER, PARAMETER :: MSMX = 1 ! SOLVE 中内存保持的矩阵大小
|
||||||
|
INTEGER, PARAMETER :: MFREQ1 = MFREQ ! ISPLIN<5 时为 1,否则为 MFREQ
|
||||||
|
INTEGER, PARAMETER :: MFRTAB = 125000 ! 不透明度表最大频率数
|
||||||
|
INTEGER, PARAMETER :: MTABT = 21 ! 不透明度表最大温度数
|
||||||
|
INTEGER, PARAMETER :: MTABR = 19 ! 不透明度表最大密度数
|
||||||
|
INTEGER, PARAMETER :: MDEPTC = 2 ! 最大深度点数 (Compton)
|
||||||
|
INTEGER, PARAMETER :: MMUC = 2 ! 最大角度点数 (Compton)
|
||||||
|
INTEGER, PARAMETER :: MLEVE3 = 1 ! 对角精度为 1,三对角为 MLEVEL
|
||||||
|
INTEGER, PARAMETER :: MLVEX3 = 1 ! 对角运算为 1,三对角为 MLVEXP
|
||||||
|
INTEGER, PARAMETER :: MTRAN3 = 1 ! 对角运算为 1,三对角为 MTRANS
|
||||||
|
INTEGER, PARAMETER :: MCROSS = MLEVEL+5 ! 最大 b-f 截面数
|
||||||
|
INTEGER, PARAMETER :: MBF = MLEVEL ! 最大 b-f 跃迁数
|
||||||
|
INTEGER, PARAMETER :: MCFIT = 10 ! 碰撞拟合最大点数
|
||||||
|
INTEGER, PARAMETER :: MXTCOL = 3 ! 碰撞类型数 (CE, CP, CH)
|
||||||
|
INTEGER, PARAMETER :: MCORAT = MTRANS ! 最大碰撞激发跃迁数
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 物理常数
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp), PARAMETER :: H = 6.6256D-27 ! Planck 常数 h
|
||||||
|
REAL(dp), PARAMETER :: BOLK = 1.38054D-16 ! Boltzmann 常数 k
|
||||||
|
REAL(dp), PARAMETER :: HK = 4.79928144D-11 ! h/k
|
||||||
|
REAL(dp), PARAMETER :: CAS = 2.997925D18 ! 光速 c (A/s)
|
||||||
|
REAL(dp), PARAMETER :: EH = 2.17853041D-11 ! 氢电离能
|
||||||
|
REAL(dp), PARAMETER :: BN = 1.4743D-2 ! 2*h/c**3
|
||||||
|
REAL(dp), PARAMETER :: SIGE = 6.6516D-25 ! Thomson 散射截面
|
||||||
|
REAL(dp), PARAMETER :: SIG4P = 4.5114062D-6 ! Stefan-Boltzmann 常数/4pi
|
||||||
|
REAL(dp), PARAMETER :: PI4H = 1.8966D27 ! 4pi/h
|
||||||
|
REAL(dp), PARAMETER :: PCK = 4.19168946D-10 ! 4pi/c
|
||||||
|
REAL(dp), PARAMETER :: HMASS = 1.67333D-24 ! 氢原子质量
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 数学常数
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp), PARAMETER :: UN = 1.0D0
|
||||||
|
REAL(dp), PARAMETER :: HALF = 0.5D0
|
||||||
|
REAL(dp), PARAMETER :: TWO = 2.0D0
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 单元编号
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: IBUFF = 95
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 基本数值
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: NATOM,NION,NLEVEL,NTRANS,ND,NFREQ,NFREQC,NFREQE
|
||||||
|
INTEGER :: IOPTAB,IDISK,IZSCAL,IDMFIX,IHESO6,IFMOL,IFENTR
|
||||||
|
INTEGER :: NFREQL,NLEV0,ICOLHN,IOSCOR,ILGDER,IFRYB,IFRSET
|
||||||
|
INTEGER :: NFREAD,NELSC,NTRANC,IOVER,JALI,IBC,IUBC,INTENS
|
||||||
|
INTEGER :: IRDER,ILMCOR,IFDIEL,IFALIH,IFTENE,ITNDRE
|
||||||
|
INTEGER :: ILPSCT,ILASCT,IRTE,IDLTE,IBFINT,INTRPL,ICHANG
|
||||||
|
INTEGER :: NATOMS,IPSLTE,ISPODF,ITLUCY,NRETC,IFRAYL,IFPRAD
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 输入参数
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: TEFF,GRAV
|
||||||
|
REAL(dp) :: YTOT(MDEPTH),WMM(MDEPTH),WMY(MDEPTH)
|
||||||
|
REAL(dp) :: TMOLIM
|
||||||
|
REAL(dp) :: xmstar,xmdot,rstar,alpha0,reynum
|
||||||
|
REAL(dp) :: QGRAV,EDISC,DZETA,RELDST
|
||||||
|
REAL(dp) :: visc,zeta0,zeta1,dmvisc,fractv
|
||||||
|
REAL(dp) :: omeg32,wbarm,wbar,alphav,pgas0
|
||||||
|
REAL(dp) :: bergfc,cutlym,cutbal
|
||||||
|
INTEGER :: ISPLIN,IRSPLT,ivisc,ibche
|
||||||
|
LOGICAL :: LTE,LTGREY,LCHC,LRESC
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 模型关键字
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: NN,NN0,INHE,INRE,INPC,INSE,INZD,INMP,NDRE,insel
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 固定密度
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IFIXDE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 逆积分
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: XI2(NLMX),XI3(NLMX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 运行关键字
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: CHMAX
|
||||||
|
INTEGER :: ITER,NITER,NITZER,INIT
|
||||||
|
LOGICAL :: LAC2,LFIN
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 连续谱关键字
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: HMIX0,crflim
|
||||||
|
INTEGER :: NCONIT,ICONV,INDL,IPRESS,ITEMP,ICBEG
|
||||||
|
INTEGER :: itmcor,iconre,ideepc,ndcgap,IDCONZ
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 不透明度关键字
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: NCON,IOPHL1,IOPHL2,IPHE2C,IFMOFF
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 打印开关
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IPRINT,IPRING,IPRIND,IPRINP,ICOOLP,ICHCKP
|
||||||
|
INTEGER :: IPOPAC,IPRINI
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - PSI 限制
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DPSILG,DPSILT,DPSILN,DPSILD
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 中心
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ZND
|
||||||
|
INTEGER :: IFZ0
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 附加不透明度参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IOPADD,IOPHMI,IOPH2P,IOPHEM,IOPCH,IOPOH
|
||||||
|
INTEGER :: IOPH2M,IOH2H2,IOH2HE,IOH2H,IOHHE
|
||||||
|
INTEGER :: IOPHLI,IRSCT,IRSCHE,IRSCH2,KEEPOP,IOPOLD
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 角度
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: AMU(MMU),WTMU(MMU),FMU(MMU)
|
||||||
|
INTEGER :: NMU
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - Compton 散射
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: amuc(mmuc),wtmuc(mmuc)
|
||||||
|
REAL(dp) :: amuc1(mmuc),amuc2(mmuc),amuc3(mmuc)
|
||||||
|
REAL(dp) :: amuj(mmuc),amuk(mmuc),amuh(mmuc),amun(mmuc)
|
||||||
|
REAL(dp) :: calph(mmuc,mmuc),cbeta(mmuc,mmuc)
|
||||||
|
REAL(dp) :: cgamm(mmuc,mmuc),RADZER,FRLCOM
|
||||||
|
REAL(dp) :: SIGEC(MFREQ)
|
||||||
|
INTEGER :: ijorig(mfreq)
|
||||||
|
INTEGER :: nmuc
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - Compton 时间
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: nedd,nsti,islab,ilbc,icompt,icomst,icomde
|
||||||
|
INTEGER :: icombc,icmdra,knish,itcomp,icomve,icomrt
|
||||||
|
INTEGER :: ichcoo,icomgr
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - Compton 迭代
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: ncfor1,ncfor2,nccoup,ncitot,ncfull
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 平均不透明度系数
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: aconml,bconml,cconml
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - Tau RSS
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: taurs(mdepth)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 打印关键字
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: iprybh,ipelch,ipeldo,ipconf
|
||||||
|
|
||||||
|
END MODULE basics_module
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
MODULE impli_module
|
||||||
|
!==============================================================================
|
||||||
|
! TLUSTY 隐式类型声明模块
|
||||||
|
! 原始文件:IMPLIC.FOR
|
||||||
|
!
|
||||||
|
! 此模块定义双精度类型别名,用于替代原始的 IMPLICIT REAL*8 声明
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
! 定义双精度类型别名
|
||||||
|
INTEGER, PARAMETER :: dp = KIND(1.0D0)
|
||||||
|
|
||||||
|
! 定义逻辑类型别名(对应原 LOGICAL*1)
|
||||||
|
INTEGER, PARAMETER :: log1 = KIND(.TRUE.)
|
||||||
|
|
||||||
|
END MODULE impli_module
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
MODULE iterat_module
|
||||||
|
!==============================================================================
|
||||||
|
! TLUSTY 迭代控制参数模块
|
||||||
|
! 原始文件:ITERAT.FOR
|
||||||
|
!
|
||||||
|
! 包含迭代相关的参数和公共变量块
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE impli_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 迭代参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: MITER = 200 ! 最大迭代次数
|
||||||
|
INTEGER, PARAMETER :: MLAMBD = 100 ! Lambda 迭代最大维数
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - Lambda 迭代
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: NLAMBD
|
||||||
|
INTEGER :: IFFIX(MITER)
|
||||||
|
INTEGER :: NETEXP(MITER)
|
||||||
|
INTEGER :: NETFIX(MITER)
|
||||||
|
INTEGER :: IETEXP(MITER,MLAMBD)
|
||||||
|
INTEGER :: IETFIX(MITER,MLAMBD)
|
||||||
|
INTEGER :: NITLAM(MITER+1)
|
||||||
|
INTEGER :: IELCOR
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 矩阵链
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: INHE0(MITER)
|
||||||
|
INTEGER :: INRE0(MITER)
|
||||||
|
INTEGER :: INPC0(MITER)
|
||||||
|
INTEGER :: INDL0(MITER)
|
||||||
|
INTEGER :: INSE0(MITER)
|
||||||
|
INTEGER :: INMP0(MITER)
|
||||||
|
INTEGER :: NN00(MITER)
|
||||||
|
INTEGER :: NDRE0(MITER)
|
||||||
|
LOGICAL :: LCHMAT
|
||||||
|
LOGICAL :: LIROST
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 加速参数
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ORELAX
|
||||||
|
INTEGER :: ITEK,IACC,IACC0,IACD
|
||||||
|
INTEGER :: KANT(MITER)
|
||||||
|
INTEGER :: KSNG
|
||||||
|
LOGICAL :: LSNG(MTOT)
|
||||||
|
LOGICAL :: LASO
|
||||||
|
LOGICAL :: LRES2
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - ALI 加速参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: ILAM,IACPP,IACC0P,IACDP
|
||||||
|
LOGICAL :: LAC2P
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - Lambda 迭代加速
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: IACLT,IACLDT
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 链 AD
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: CHMAXT
|
||||||
|
INTEGER :: NLAMT,ILDER,IBPOPE
|
||||||
|
|
||||||
|
END MODULE iterat_module
|
||||||
@@ -0,0 +1,700 @@
|
|||||||
|
MODULE modelq_module
|
||||||
|
!==============================================================================
|
||||||
|
! TLUSTY 模型物理量和状态变量模块
|
||||||
|
! 原始文件:MODELQ.FOR
|
||||||
|
!
|
||||||
|
! 包含模型参数、能级布居、辐射场等物理量
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE impli_module
|
||||||
|
USE basics_module
|
||||||
|
USE atomic_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 谱线展宽参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: MLINH = 78
|
||||||
|
INTEGER, PARAMETER :: MHT = 7
|
||||||
|
INTEGER, PARAMETER :: MHE = 20
|
||||||
|
INTEGER, PARAMETER :: MHWL = 90
|
||||||
|
INTEGER, PARAMETER :: MFHTAB = 1000
|
||||||
|
INTEGER, PARAMETER :: MTABTH = 10
|
||||||
|
INTEGER, PARAMETER :: MTABEH = 10
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 类型声明
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER*2 :: ITRLIN
|
||||||
|
REAL*4 :: PRFLIN, BFCS
|
||||||
|
REAL*8 :: absopac(mtabt,mtabr,mfrtab)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 模型参数 (MODPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DM(MDEPTH)
|
||||||
|
REAL(dp) :: TEMP(MDEPTH)
|
||||||
|
REAL(dp) :: ELEC(MDEPTH)
|
||||||
|
REAL(dp) :: DENS(MDEPTH)
|
||||||
|
REAL(dp) :: TOTN(MDEPTH)
|
||||||
|
REAL(dp) :: ANTO(MDEPTH)
|
||||||
|
REAL(dp) :: ANMA(MDEPTH)
|
||||||
|
REAL(dp) :: ANH1(MDEPTH)
|
||||||
|
REAL(dp) :: ZD(MDEPTH)
|
||||||
|
REAL(dp) :: HKT1(MDEPTH)
|
||||||
|
REAL(dp) :: TK1(MDEPTH)
|
||||||
|
REAL(dp) :: HKT21(MDEPTH)
|
||||||
|
REAL(dp) :: SQT1(MDEPTH)
|
||||||
|
REAL(dp) :: TEMP1(MDEPTH)
|
||||||
|
REAL(dp) :: ELEC1(MDEPTH)
|
||||||
|
REAL(dp) :: DENS1(MDEPTH)
|
||||||
|
REAL(dp) :: DENSI(MDEPTH)
|
||||||
|
REAL(dp) :: DENSIM(MDEPTH)
|
||||||
|
REAL(dp) :: ELSCAT(MDEPTH)
|
||||||
|
REAL(dp) :: ALAB(MDEPTH)
|
||||||
|
REAL(dp) :: DELDM(MDEPTH)
|
||||||
|
REAL(dp) :: DEDM1
|
||||||
|
REAL(dp) :: DELDMZ(MDEPTH)
|
||||||
|
REAL(dp) :: THETAV(MDEPTH)
|
||||||
|
REAL(dp) :: VISCD(MDEPTH)
|
||||||
|
REAL(dp) :: DALPMX
|
||||||
|
REAL(dp) :: XHYD
|
||||||
|
REAL(dp) :: DMTOT
|
||||||
|
REAL(dp) :: RRDIL
|
||||||
|
REAL(dp) :: TEMPBD
|
||||||
|
REAL(dp) :: ALPTAV
|
||||||
|
REAL(dp) :: ALPGAV
|
||||||
|
INTEGER :: NALP
|
||||||
|
INTEGER :: IBETA
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 能级布居 (LEVPOP)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: POPUL(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: BFAC(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: POPINV(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: POPGRP(MLEVEL)
|
||||||
|
REAL(dp) :: POP(MLEVEL)
|
||||||
|
REAL(dp) :: SBF(MLEVEL)
|
||||||
|
REAL(dp) :: DSBF(MLEVEL)
|
||||||
|
REAL(dp) :: USUM(MION)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 布居零级近似
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: POPZER
|
||||||
|
REAL(dp) :: POPZR2
|
||||||
|
REAL(dp) :: POPZCH
|
||||||
|
REAL(dp) :: RPOP0(MLVEXP,MDEPTH)
|
||||||
|
INTEGER :: IPZERO(MLEVEL,MDEPTH)
|
||||||
|
INTEGER :: IGZERO(MLVEXP,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - CRSWPS
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: CRSW(MDEPTH)
|
||||||
|
REAL(dp) :: SWPFAC
|
||||||
|
REAL(dp) :: SWPLIM
|
||||||
|
REAL(dp) :: SWPINC
|
||||||
|
INTEGER :: ICRSW
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - WMCOMP
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: WNHINT(NLMX,MDEPTH)
|
||||||
|
REAL(dp) :: WNHEII(NLMX,MDEPTH)
|
||||||
|
REAL(dp) :: wop(mlevel,mdepth)
|
||||||
|
INTEGER :: ifwop(mlevel)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - REPART
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: REINT(MDEPTH)
|
||||||
|
REAL(dp) :: REDIF(MDEPTH)
|
||||||
|
REAL(dp) :: TAUDIV
|
||||||
|
INTEGER :: IDLST
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 湍流 (TURBUL)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: VTURB(MDEPTH)
|
||||||
|
REAL(dp) :: VTURBS(MDEPTH)
|
||||||
|
REAL(dp) :: VTB
|
||||||
|
INTEGER :: IPTURB
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 能级参考 (LEVREF)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: SBPSI(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: SBLPSI(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: DSBPST(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: DSBPSN(MLEVEL,MDEPTH)
|
||||||
|
INTEGER :: ILTREF(MLEVEL,MDEPTH)
|
||||||
|
INTEGER :: IGUIDE(MLEVEL)
|
||||||
|
INTEGER :: ILTERF(MLEVEL,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 能级固定 (LEVFIX)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PT(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: PN(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: PP(MLEVEL,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 能级附加 (LEVADD)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: USUMS(MION,MDEPTH)
|
||||||
|
REAL(dp) :: DUSMT(MION,MDEPTH)
|
||||||
|
REAL(dp) :: DUSMN(MION,MDEPTH)
|
||||||
|
REAL(dp) :: DIESIG(MION,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - 合并参数 (MRGPAR)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: SGM0(MMER)
|
||||||
|
REAL(dp) :: FRCH(MMER)
|
||||||
|
REAL(dp) :: SGEXT1(MMER,MDEPTH)
|
||||||
|
REAL(dp) :: GMER(MMER,MDEPTH)
|
||||||
|
REAL(dp) :: SGMSUM(NLMX,MMER,MDEPTH)
|
||||||
|
REAL(dp) :: SGMSUD(NLMX,MMER,MDEPTH)
|
||||||
|
REAL(dp) :: SGMG(MMER,MDEPTH)
|
||||||
|
INTEGER :: IMRG(MLEVEL)
|
||||||
|
INTEGER :: IIMER(MMER)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - UPSUMS
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DUSUMT(MION)
|
||||||
|
REAL(dp) :: DUSUMN(MION)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - DWNPAR (向下跃迁参数)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ELEC23(MDEPTH)
|
||||||
|
REAL(dp) :: ACOR(MDEPTH)
|
||||||
|
REAL(dp) :: Z3(MZZ)
|
||||||
|
REAL(dp) :: DWC1(MZZ,MDEPTH)
|
||||||
|
REAL(dp) :: DWC2(MDEPTH)
|
||||||
|
REAL(dp) :: DWF1(MMCDW,MDEPTH)
|
||||||
|
INTEGER :: MCDW(MTRANS)
|
||||||
|
INTEGER :: ITRCDW(MMCDW)
|
||||||
|
INTEGER :: NCDW
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - OBFPAR
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: ITRBF(MBF)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - GFFPAR (Gaunt 因子参数)
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: GF0(MDEPTH)
|
||||||
|
REAL(dp) :: GF1(MDEPTH)
|
||||||
|
REAL(dp) :: GF2(MDEPTH)
|
||||||
|
REAL(dp) :: GF3(MDEPTH)
|
||||||
|
REAL(dp) :: GF4(MDEPTH)
|
||||||
|
REAL(dp) :: GF5(MDEPTH)
|
||||||
|
REAL(dp) :: GF6(MDEPTH)
|
||||||
|
REAL(dp) :: GF0D(MDEPTH)
|
||||||
|
REAL(dp) :: GF1D(MDEPTH)
|
||||||
|
REAL(dp) :: GF2D(MDEPTH)
|
||||||
|
REAL(dp) :: GF3D(MDEPTH)
|
||||||
|
REAL(dp) :: GF4D(MDEPTH)
|
||||||
|
REAL(dp) :: GF5D(MDEPTH)
|
||||||
|
REAL(dp) :: GF6D(MDEPTH)
|
||||||
|
REAL(dp) :: DELTT(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - OFFPAR
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: SFF3(MION,MDEPTH)
|
||||||
|
REAL(dp) :: SFF2(MION,MDEPTH)
|
||||||
|
REAL(dp) :: DSFF(MION,MDEPTH)
|
||||||
|
REAL(dp) :: CFFN(MDEPTH)
|
||||||
|
REAL(dp) :: CFFT(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - OTRPAR
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ABTRA(MTRANS,MDEPTH)
|
||||||
|
REAL(dp) :: EMTRA(MTRANS,MDEPTH)
|
||||||
|
REAL(dp) :: DEMLT(MTRANS,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - CURRNT
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: XKF(MDEPTH)
|
||||||
|
REAL(dp) :: XKF1(MDEPTH)
|
||||||
|
REAL(dp) :: XKFB(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - CUROPA
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ABSO1(MDEPTH)
|
||||||
|
REAL(dp) :: EMIS1(MDEPTH)
|
||||||
|
REAL(dp) :: SCAT1(MDEPTH)
|
||||||
|
REAL(dp) :: ABSOT(MDEPTH)
|
||||||
|
REAL(dp) :: ABSOE1(MFREX)
|
||||||
|
REAL(dp) :: EMEL1(MDEPTH)
|
||||||
|
REAL(dp) :: ABSO1L(MDEPTH)
|
||||||
|
REAL(dp) :: EMIS1L(MDEPTH)
|
||||||
|
REAL(dp) :: ABSOPR(MDEPTH)
|
||||||
|
REAL(dp) :: EMISPR(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - TOTRAD
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: RAD(MFREQ1,MDEPTH)
|
||||||
|
REAL(dp) :: FHD(MFREQ)
|
||||||
|
REAL(dp) :: FAK(MFREQ1,MDEPTH)
|
||||||
|
REAL(dp) :: RADK(MFREQ1,MDEPTH)
|
||||||
|
REAL(dp) :: EXTRAD(MFREQ)
|
||||||
|
REAL(dp) :: EXTINT(MFREQ,MMU)
|
||||||
|
REAL(dp) :: HEXTRD(MFREQ)
|
||||||
|
REAL(dp) :: TRAD
|
||||||
|
REAL(dp) :: WDIL
|
||||||
|
REAL(dp) :: EXTOT
|
||||||
|
REAL(dp) :: TSTAR
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - CURRAD
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: RAD1(MDEPTH)
|
||||||
|
REAL(dp) :: ALI1(MDEPTH)
|
||||||
|
REAL(dp) :: FAK1(MDEPTH)
|
||||||
|
REAL(dp) :: radcm(mfreq,mdepth)
|
||||||
|
REAL(dp) :: RADL(MFREQL,MDEPTH)
|
||||||
|
REAL(dp) :: ABSALI(MFREQL,MDEPTH)
|
||||||
|
REAL(dp) :: alih1(mdepth)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - CURDER
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DABT1(MDEPTH)
|
||||||
|
REAL(dp) :: DEMT1(MDEPTH)
|
||||||
|
REAL(dp) :: DABN1(MDEPTH)
|
||||||
|
REAL(dp) :: DEMN1(MDEPTH)
|
||||||
|
REAL(dp) :: DABM1(MDEPTH)
|
||||||
|
REAL(dp) :: DEMM1(MDEPTH)
|
||||||
|
REAL(dp) :: DABX1(MDEPTH)
|
||||||
|
REAL(dp) :: DEMX1(MDEPTH)
|
||||||
|
REAL(dp) :: DABP1(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: DEMP1(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: DRCH1(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: DRET1(MLEVEL,MDEPTH)
|
||||||
|
REAL(dp) :: ABSFF(MDEPTH)
|
||||||
|
REAL(dp) :: DABFT(MDEPTH)
|
||||||
|
REAL(dp) :: DABFN(MDEPTH)
|
||||||
|
REAL(dp) :: DSFDT(MDEPTH)
|
||||||
|
REAL(dp) :: DSFDN(MDEPTH)
|
||||||
|
REAL(dp) :: DSFDM(MDEPTH)
|
||||||
|
REAL(dp) :: DSFDP(MLVEXP,MDEPTH)
|
||||||
|
REAL(dp) :: DSFDTM(MDEPTH)
|
||||||
|
REAL(dp) :: DSFDNM(MDEPTH)
|
||||||
|
REAL(dp) :: DSFDPM(MLVEXP,MDEPTH)
|
||||||
|
REAL(dp) :: DSFDTP(MDEPTH)
|
||||||
|
REAL(dp) :: DSFDNP(MDEPTH)
|
||||||
|
REAL(dp) :: DSFDPP(MLVEXP,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - CURTRI
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ALIM1(MDEPTH)
|
||||||
|
REAL(dp) :: ALIP1(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - EXPRAF
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: RADEX(MFREX,MDEPTH)
|
||||||
|
REAL(dp) :: FAKEX(MFREX,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - TOTPRF
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PRFLIN(MDEPTH,MFREQP)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - TOTFLX
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FLTOT(MDEPTH)
|
||||||
|
REAL(dp) :: FLFIX(MDEPTH)
|
||||||
|
REAL(dp) :: FLEXP(MDEPTH)
|
||||||
|
REAL(dp) :: FCOOL(MDEPTH)
|
||||||
|
REAL(dp) :: FCOOLI(MDEPTH)
|
||||||
|
REAL(dp) :: FLRD(MDEPTH)
|
||||||
|
REAL(dp) :: FPRAD(MDEPTH)
|
||||||
|
REAL(dp) :: GRAD(MDEPTH)
|
||||||
|
REAL(dp) :: FPRD(MDEPTH)
|
||||||
|
REAL(dp) :: GRADF(MDEPTH,MFREQ)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - RRATES
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: RRU(MTRANS,MDEPTH)
|
||||||
|
REAL(dp) :: RRD(MTRANS,MDEPTH)
|
||||||
|
REAL(dp) :: DRDT(MTRANS,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - RRTOFF
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: RDDP(MTRAN3,MDEPTH)
|
||||||
|
REAL(dp) :: RDDM(MTRAN3,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - CRATES
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: COLRAT(MTRANS,MDEPTH)
|
||||||
|
REAL(dp) :: COLTAR(MTRANS,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - FRQALL
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FREQ(MFREQ)
|
||||||
|
REAL(dp) :: W(MFREQ)
|
||||||
|
REAL(dp) :: PROF(MFREQP)
|
||||||
|
REAL(dp) :: WCH(MFREQ)
|
||||||
|
REAL(dp) :: JIK(MFREQ)
|
||||||
|
INTEGER :: IJX(MFREQ)
|
||||||
|
INTEGER :: IJBF(MFREQ)
|
||||||
|
INTEGER :: IFS0
|
||||||
|
REAL(dp) :: KIJ(MFREQ)
|
||||||
|
LOGICAL :: LSKIP(MDEPTH,MFREQ)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - FRQINT
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FRCMAX
|
||||||
|
REAL(dp) :: FRCMIN
|
||||||
|
REAL(dp) :: FRLMAX
|
||||||
|
REAL(dp) :: FRLMIN
|
||||||
|
REAL(dp) :: CFRMAX
|
||||||
|
REAL(dp) :: DFTAIL
|
||||||
|
REAL(dp) :: TSNU
|
||||||
|
REAL(dp) :: VTNU
|
||||||
|
REAL(dp) :: DDNU
|
||||||
|
REAL(dp) :: CNU1
|
||||||
|
REAL(dp) :: CNU2
|
||||||
|
INTEGER :: IELNU
|
||||||
|
INTEGER :: NFTAIL
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - LINOVR
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: NITJ(MFREQ)
|
||||||
|
INTEGER :: IJLIN(MFREQ)
|
||||||
|
INTEGER*2 :: ITRLIN_ARR(MITJ,MFREQ)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - LINFRQ
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: NLINES(MFREQ)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - PHOEXP
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: AIJBF(MFREQ)
|
||||||
|
REAL(dp) :: BFCS_ARR(MCROSS,MFREQC)
|
||||||
|
INTEGER :: IFREQB(MFREQC)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - FREAUX
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: W0E(MFREQ)
|
||||||
|
REAL(dp) :: BNUE(MFREQ)
|
||||||
|
REAL(dp) :: WC(MFREQ)
|
||||||
|
INTEGER :: IJTC(MTRANS)
|
||||||
|
INTEGER :: IJALI(MFREQ)
|
||||||
|
INTEGER :: IJEX(MFREQ)
|
||||||
|
INTEGER :: IJFR(MFREQ)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - COMPIF
|
||||||
|
!==========================================================================
|
||||||
|
LOGICAL :: LINEXP(MTRANS)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - SURFAC
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FLUX(MFREQ)
|
||||||
|
REAL(dp) :: FH(MFREQ)
|
||||||
|
REAL(dp) :: Q0(MFREQ)
|
||||||
|
REAL(dp) :: UU0(MFREQ)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - FILES
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PSY0(MTOT,MDEPTH)
|
||||||
|
REAL(dp) :: PSY1(MTOT,MDEPTH)
|
||||||
|
REAL(dp) :: PSY2(MTOT,MDEPTH)
|
||||||
|
REAL(dp) :: PSY3(MTOT,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - PRESSR
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PTOTAL(MDEPTH)
|
||||||
|
REAL(dp) :: PGS(MDEPTH)
|
||||||
|
REAL(dp) :: PRADT(MDEPTH)
|
||||||
|
REAL(dp) :: PRADA(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - HEQAUX
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: PRD0
|
||||||
|
INTEGER :: IHECOR
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - OPMEAN
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ABROSD(MDEPTH)
|
||||||
|
REAL(dp) :: SUMDPL(MDEPTH)
|
||||||
|
REAL(dp) :: ABPLAD(MDEPTH)
|
||||||
|
REAL(dp) :: ABPMIN
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - CHARFX
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: QFIX(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - WINDBL
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ALBE(MFREQ)
|
||||||
|
INTEGER :: IWINBL
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - DFEALI
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DJMAX
|
||||||
|
INTEGER :: NTRALI
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - OPACAD
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ABAD
|
||||||
|
REAL(dp) :: EMAD
|
||||||
|
REAL(dp) :: SCAD
|
||||||
|
REAL(dp) :: DAT
|
||||||
|
REAL(dp) :: DAN
|
||||||
|
REAL(dp) :: DET
|
||||||
|
REAL(dp) :: DEN
|
||||||
|
REAL(dp) :: DST
|
||||||
|
REAL(dp) :: DSN
|
||||||
|
REAL(dp) :: DDN(MLEVEL)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - MODCON
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FLXC(MDEPTH)
|
||||||
|
REAL(dp) :: DELTA(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - RESDER
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: RSAT
|
||||||
|
REAL(dp) :: RSBT
|
||||||
|
REAL(dp) :: RSAN
|
||||||
|
REAL(dp) :: RSBN
|
||||||
|
REAL(dp) :: RSAX(MLEVEL)
|
||||||
|
REAL(dp) :: RSBX(MLEVEL)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - GRAYTS
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: TAUROS(MDEPTH)
|
||||||
|
REAL(dp) :: TAUFLX(MDEPTH)
|
||||||
|
REAL(dp) :: TAUTHE(MDEPTH)
|
||||||
|
REAL(dp) :: THETA(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - TAURSS
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: TROSS(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - TCONST
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: TDISK
|
||||||
|
INTEGER :: ITCONS
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - HYDADD
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PHMOL(MDEPTH)
|
||||||
|
REAL(dp) :: ANEREL
|
||||||
|
INTEGER :: IHM
|
||||||
|
INTEGER :: IH2
|
||||||
|
INTEGER :: IH2P
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - ELDNSP
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ANP
|
||||||
|
REAL(dp) :: AHTOT
|
||||||
|
REAL(dp) :: AHMOL
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - RRVALS
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: RR(99,99)
|
||||||
|
REAL(dp) :: ABNDD(99,MDEPTH)
|
||||||
|
REAL(dp) :: ENEV(99,30)
|
||||||
|
INTEGER :: IONIZ(99)
|
||||||
|
INTEGER :: IREF
|
||||||
|
INTEGER :: IREFA
|
||||||
|
LOGICAL :: LGR(99)
|
||||||
|
LOGICAL :: LRM(99)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - STATEP
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: Q
|
||||||
|
REAL(dp) :: QM
|
||||||
|
REAL(dp) :: DQT
|
||||||
|
REAL(dp) :: DQN
|
||||||
|
REAL(dp) :: DQM
|
||||||
|
REAL(dp) :: ENER
|
||||||
|
REAL(dp) :: ENTR
|
||||||
|
REAL(dp) :: QREF
|
||||||
|
REAL(dp) :: DQTR
|
||||||
|
REAL(dp) :: DQNR
|
||||||
|
REAL(dp) :: PFHYD
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - ODFCHT
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: CHANT(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - STRAUX
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: XK0(MLINH)
|
||||||
|
REAL(dp) :: XK
|
||||||
|
REAL(dp) :: DBETA
|
||||||
|
REAL(dp) :: BETAD
|
||||||
|
REAL(dp) :: ADH
|
||||||
|
REAL(dp) :: DIVH
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 :: STDPAR
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: ELSTD
|
||||||
|
INTEGER :: IDSTD
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 氢 Stark 加宽表参数
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PRFHYD(MLINH,MHWL,MHT,MHE)
|
||||||
|
REAL(dp) :: WLHYD(MLINH,MHWL)
|
||||||
|
REAL(dp) :: WLH(MHWL,MLINH)
|
||||||
|
REAL(dp) :: XTLEM(MHT,MLINH)
|
||||||
|
REAL(dp) :: XNELEM(MHE,MLINH)
|
||||||
|
INTEGER :: NWLHYD(MLINH)
|
||||||
|
INTEGER :: NWLH(MLINH)
|
||||||
|
INTEGER :: NTH(MLINH)
|
||||||
|
INTEGER :: NEH(MLINH)
|
||||||
|
INTEGER :: ILINH(4,22)
|
||||||
|
INTEGER :: IHYDPR
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! Xenon 相关参数
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: PRFXB(MLINH,MHWL,MHT,MHE)
|
||||||
|
REAL(dp) :: PRFXR(MLINH,MHWL,MHT,MHE)
|
||||||
|
REAL(dp) :: ALXEN(MLINH,MHWL)
|
||||||
|
REAL(dp) :: XTXEN(MHT,MLINH)
|
||||||
|
REAL(dp) :: XNEXEN(MHE,MLINH)
|
||||||
|
REAL(dp) :: XNEMIN
|
||||||
|
INTEGER :: NWLXEN(MLINH)
|
||||||
|
INTEGER :: NTHXEN(MLINH)
|
||||||
|
INTEGER :: NEHXEN(MLINH)
|
||||||
|
INTEGER :: ILXEN(4,22)
|
||||||
|
INTEGER :: IHXENB
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - LTEGRP
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: TAUFIR
|
||||||
|
REAL(dp) :: TAULAS
|
||||||
|
REAL(dp) :: ABROS0
|
||||||
|
REAL(dp) :: TSURF
|
||||||
|
REAL(dp) :: ALBAVE
|
||||||
|
REAL(dp) :: DION0
|
||||||
|
REAL(dp) :: DM1
|
||||||
|
REAL(dp) :: ABPLA0
|
||||||
|
INTEGER :: NNEWD
|
||||||
|
INTEGER :: NDGREY
|
||||||
|
INTEGER :: IDGREY
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - COMPTF
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: DLNFR(MFREQ)
|
||||||
|
REAL(dp) :: BNUS(MFREQ)
|
||||||
|
REAL(dp) :: CDER10(MFREQ)
|
||||||
|
REAL(dp) :: CDER1P(MFREQ)
|
||||||
|
REAL(dp) :: CDER1M(MFREQ)
|
||||||
|
REAL(dp) :: CDER20(MFREQ)
|
||||||
|
REAL(dp) :: CDER2P(MFREQ)
|
||||||
|
REAL(dp) :: CDER2M(MFREQ)
|
||||||
|
REAL(dp) :: DELJ(MFREQ,MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - VISPAR
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: TVISC(MDEPTH)
|
||||||
|
REAL(dp) :: DTVIST(MDEPTH)
|
||||||
|
REAL(dp) :: DTVISN(MDEPTH)
|
||||||
|
REAL(dp) :: DTVISR(MDEPTH)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 不透明度表参数
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FRTB1
|
||||||
|
REAL(dp) :: FRTB2
|
||||||
|
REAL(dp) :: RTAB1
|
||||||
|
REAL(dp) :: RTAB2
|
||||||
|
REAL(dp) :: TTAB1
|
||||||
|
REAL(dp) :: TTAB2
|
||||||
|
|
||||||
|
INTEGER :: numfreq
|
||||||
|
INTEGER :: numrho
|
||||||
|
INTEGER :: numtemp
|
||||||
|
INTEGER :: numrh(mtabt)
|
||||||
|
|
||||||
|
REAL(dp) :: tempvec(mtabt)
|
||||||
|
REAL(dp) :: rhovec(mtabr)
|
||||||
|
REAL(dp) :: rhomat(mtabt,mtabr)
|
||||||
|
|
||||||
|
REAL(dp) :: frtab(mfrtab)
|
||||||
|
REAL(dp) :: frtlim
|
||||||
|
REAL(dp) :: absopac_arr(mtabt,mtabr,mfrtab)
|
||||||
|
|
||||||
|
REAL(dp) :: raytab(mtabt,mtabr)
|
||||||
|
REAL(dp) :: raysc(mdepth)
|
||||||
|
|
||||||
|
INTEGER :: ibinop
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 氢不透明度表参数
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: hglim
|
||||||
|
INTEGER :: ihgom
|
||||||
|
|
||||||
|
REAL(dp) :: FRGTB1
|
||||||
|
REAL(dp) :: FRGTB2
|
||||||
|
REAL(dp) :: EGTAB1
|
||||||
|
REAL(dp) :: EGTAB2
|
||||||
|
REAL(dp) :: TGTAB1
|
||||||
|
REAL(dp) :: TGTAB2
|
||||||
|
|
||||||
|
INTEGER :: nugfreq
|
||||||
|
INTEGER :: nugele
|
||||||
|
INTEGER :: nugtemp
|
||||||
|
|
||||||
|
REAL(dp) :: temvec(mtabth)
|
||||||
|
REAL(dp) :: elevec(mtabeh)
|
||||||
|
|
||||||
|
REAL(dp) :: frgtab(mfhtab)
|
||||||
|
REAL(dp) :: hydcrs(mtabth,mtabeh,mfhtab)
|
||||||
|
|
||||||
|
END MODULE modelq_module
|
||||||
@@ -0,0 +1,123 @@
|
|||||||
|
MODULE odfpar_module
|
||||||
|
!==============================================================================
|
||||||
|
! TLUSTY ODF (Opacity Distribution Functions) 参数模块
|
||||||
|
! 原始文件:ODFPAR.FOR
|
||||||
|
!
|
||||||
|
! 包含不透明度分布函数相关的参数和数据
|
||||||
|
!==============================================================================
|
||||||
|
|
||||||
|
USE impli_module
|
||||||
|
USE basics_module
|
||||||
|
IMPLICIT NONE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! ODF 参数
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER, PARAMETER :: MFODF = 180 ! ODF 最大频率数
|
||||||
|
INTEGER, PARAMETER :: MHOD = 3 ! H-ODF 维数
|
||||||
|
INTEGER, PARAMETER :: MFRO = MFREQL ! ODF 频率范围
|
||||||
|
INTEGER, PARAMETER :: MDODF = 3 ! ODF 导数维数
|
||||||
|
INTEGER, PARAMETER :: MKULEV = 7000 ! 最大 Kuler 能级数
|
||||||
|
INTEGER, PARAMETER :: MLINE = 1140000 ! 最大谱线数
|
||||||
|
INTEGER, PARAMETER :: MCFE = 7824000 ! 最大碰撞拟合元素数
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! REAL*4 类型数组
|
||||||
|
!==========================================================================
|
||||||
|
REAL*4 :: SIGFE
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - ODFION
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: INODF1(MION)
|
||||||
|
INTEGER :: INODF2(MION)
|
||||||
|
INTEGER :: INBFCS(MION)
|
||||||
|
INTEGER :: IKOBS(MION)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - ODFCTR
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FRODF(MLEVEL)
|
||||||
|
INTEGER :: NFRODF(MHOD)
|
||||||
|
INTEGER :: INDODF(MLEVEL)
|
||||||
|
INTEGER :: JNDODF(MTRANS)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - ODFFRQ
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: FROS(MFRO,MHOD)
|
||||||
|
REAL(dp) :: WNUS(MFRO,MHOD)
|
||||||
|
REAL(dp) :: XDO(3,MHOD)
|
||||||
|
INTEGER :: KDO(4,MHOD)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - ODFMOD
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: I1ODF(MLEVEL)
|
||||||
|
INTEGER :: I2ODF(MLEVEL)
|
||||||
|
INTEGER :: NQLODF(MLEVEL)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - ODFSTK
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: XKIJ(MHOD,NLMX)
|
||||||
|
REAL(dp) :: WL0(MHOD,NLMX)
|
||||||
|
REAL(dp) :: FIJ(MHOD,NLMX)
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - SPLCOM
|
||||||
|
!==========================================================================
|
||||||
|
REAL*4 :: SIGFE_ARR(MDODF,MCFE)
|
||||||
|
REAL(dp) :: FRS1
|
||||||
|
REAL(dp) :: FRS2
|
||||||
|
REAL(dp) :: DXNU
|
||||||
|
REAL(dp) :: XJID(MDEPTH)
|
||||||
|
INTEGER :: JIDI(MDEPTH)
|
||||||
|
INTEGER :: JIDR(MDODF)
|
||||||
|
INTEGER :: JIDS
|
||||||
|
INTEGER :: JIDN
|
||||||
|
INTEGER :: NFRS1
|
||||||
|
INTEGER :: NFTT
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - OPALIM
|
||||||
|
!==========================================================================
|
||||||
|
INTEGER :: M1FILE(NLMX,MHOD)
|
||||||
|
INTEGER :: M2FILE(NLMX,MHOD)
|
||||||
|
INTEGER :: IMERG
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - OPLIMT
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: ALLIM1
|
||||||
|
REAL(dp) :: ABLIM1
|
||||||
|
REAL(dp) :: ABLIM2
|
||||||
|
REAL(dp) :: ABLIM3
|
||||||
|
|
||||||
|
!==========================================================================
|
||||||
|
! 公共变量块 - LEVCOM
|
||||||
|
!==========================================================================
|
||||||
|
REAL(dp) :: EMKU(MLEVEL,2)
|
||||||
|
REAL(dp) :: YMKU(MLEVEL,2)
|
||||||
|
REAL(dp) :: XEV(MLEVEL,MION)
|
||||||
|
REAL(dp) :: XOD(MLEVEL,MION)
|
||||||
|
REAL(dp) :: EU(2*MLEVEL)
|
||||||
|
INTEGER :: JEN(2*MLEVEL)
|
||||||
|
REAL(dp) :: EEV(MKULEV)
|
||||||
|
REAL(dp) :: AEV(MKULEV)
|
||||||
|
REAL(dp) :: SEV(MKULEV)
|
||||||
|
REAL(dp) :: WEV(MKULEV)
|
||||||
|
REAL(dp) :: EOD(MKULEV)
|
||||||
|
REAL(dp) :: AOD(MKULEV)
|
||||||
|
REAL(dp) :: SOD(MKULEV)
|
||||||
|
REAL(dp) :: WOD(MKULEV)
|
||||||
|
INTEGER :: KSEV(MKULEV)
|
||||||
|
INTEGER :: KSOD(MKULEV)
|
||||||
|
INTEGER :: NEVKU(MION)
|
||||||
|
INTEGER :: NODKU(MION)
|
||||||
|
INTEGER :: NLEVKU
|
||||||
|
INTEGER :: NLINKU
|
||||||
|
INTEGER :: KEVE
|
||||||
|
INTEGER :: KODD
|
||||||
|
|
||||||
|
END MODULE odfpar_module
|
||||||
Regular → Executable
Regular → Executable
Regular → Executable
@@ -1 +0,0 @@
|
|||||||
/home/fmq/program/tlusty/tl208-s54/data
|
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/home/fmq/program/tlusty/tl208-s54/data
|
||||||
Regular → Executable
@@ -1 +0,0 @@
|
|||||||
/home/fmq/program/tlusty/tl208-s54/data
|
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/home/fmq/program/tlusty/tl208-s54/data
|
||||||
@@ -1 +0,0 @@
|
|||||||
/home/fmq/program/tlusty/tl208-s54/data/gfATO.bin
|
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/home/fmq/program/tlusty/tl208-s54/data/gfATO.bin
|
||||||
@@ -1 +0,0 @@
|
|||||||
/home/fmq/program/tlusty/tl208-s54/data/gfMOL.bin
|
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/home/fmq/program/tlusty/tl208-s54/data/gfMOL.bin
|
||||||
@@ -1 +0,0 @@
|
|||||||
/home/fmq/program/tlusty/tl208-s54/data/gfTiO.bin
|
|
||||||
Symlink
+1
@@ -0,0 +1 @@
|
|||||||
|
/home/fmq/program/tlusty/tl208-s54/data/gfTiO.bin
|
||||||
Regular → Executable
Regular → Executable
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user