SpectraRust/docs/TLUSTY_IO_FILES.md
2026-03-23 15:45:52 +08:00

250 lines
8.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TLUSTY 输入输出文件完整文档
## 概述
TLUSTY 使用 Fortran 风格的文件单元号Unit Numbers进行 I/O 操作。
本文档记录 TLUSTY 所有文件单元的用途、格式和内容。
**相关文档**: SYNSPEC I/O 文件见 `docs/SYNSPEC_IO_FILES.md`
---
## 第一部分:核心输入/输出
| 单元号 | 文件名 | 用途 | 方向 | 格式 | 说明 |
|--------|--------|------|------|------|------|
| **5** | stdin | 主输入文件 | 输入 | 格式化 | 命令行输入,包含所有模型参数 |
| **6** | stdout | 标准输出 | 输出 | 格式化 | 进度信息、警告、错误消息 |
| **7** | fort.7 | 模型输出 | 输出 | 格式化 | 最终模型数据(温度、密度、布居数) |
| **8** | fort.8 | 模型输入 | 输入 | 格式化 | 初始模型或重启模型数据 |
---
## 第二部分:迭代输出
| 单元号 | 文件名 | 用途 | 方向 | 格式 | 说明 |
|--------|--------|------|------|------|------|
| **9** | fort.9 | 收敛历史 | 输出 | 格式化 | 每次迭代的温度、电子密度变化 |
| **10** | fort.10 | 警告/慢收敛 | 输出 | 格式化 | 收敛问题诊断信息 |
| **11** | fort.11 | 辐射压力 | 输出 | 格式化 | 深度点辐射压力数据 |
| **12** | fort.12 | 模型快照 | 输出 | 格式化 | 迭代中间状态的模型数据 |
| **13** | fort.13 | 通量输出 | 输出 | 格式化 | 频率点通量数据 |
| **14** | fort.14 | 角度分布 | 输出 | 格式化 | 辐射强度角度分布 |
---
## 第三部分:状态/调试输出
| 单元号 | 文件名 | 用途 | 方向 | 格式 | 说明 |
|--------|--------|------|------|------|------|
| **16** | fort.16 | 能级布居详情 | 输出 | 格式化 | 详细布居数变化信息 |
| **17** | fort.17 | 迭代模型 | 输出 | 格式化 | 迭代过程中的模型状态 |
| **18** | fort.18 | 迭代日志 | 输出 | 格式化 | 迭代步骤日志(调试用) |
| **20** | fort.20 | 备份模型 | 输出 | 格式化 | 模型备份(用于重启) |
| **22** | fort.22 | 模型快照 | 输出 | 格式化 | 另一种格式的模型快照 |
---
## 第四部分ODF/不透明度文件
| 单元号 | 文件名 | 用途 | 方向 | 格式 | 说明 |
|--------|--------|------|------|------|------|
| **40** | RBF.DAT | 辐射bracketing | 输入 | 格式化 | 辐射场参数文件 |
| **82** | fort.82 | 谱线统计 | 输出 | 格式化 | 谱线频率范围统计 |
| **84** | fort.84 | 参数值 | I/O | 格式化 | 参数优化值 |
| **86** | fort.86 | 冷却率 | 输出 | 格式化 | 各深度点冷却率 |
| **87** | fort.87 | 冷却分解 | 输出 | 格式化 | 按离子分解的冷却率 |
| **88** | fort.88 | 冷却对比 | 输出 | 格式化 | 冷却率对比数据 |
---
## 第五部分:控制参数文件
| 单元号 | 文件名 | 用途 | 方向 | 格式 | 说明 |
|--------|--------|------|------|------|------|
| **44** | fort.44 | 收敛控制 | 输入 | 格式化 | 自定义收敛参数 |
| **57** | (动态) | 准静态线数据 | 输入 | 格式化 | ALLARD 准静态线 |
| **58** | (动态) | He 数据 | 输入 | 格式化 | 氦原子数据表 |
| **59** | (动态) | He 数据 | 输入 | 格式化 | 氦原子数据表 |
| **69** | fort.69 | 计时信息 | 输出 | 格式化 | 性能计时数据 |
---
## 第六部分:临时/暂存文件
| 单元号 | 文件名 | 用途 | 方向 | 格式 | 说明 |
|--------|--------|------|------|------|------|
| **91** | (SCRATCH) | 暂存1 | I/O | **无格式** | 二进制暂存 |
| **92** | (SCRATCH) | 暂存2 | I/O | **无格式** | 二进制暂存 |
| **93** | (SCRATCH) | 暂存3 | I/O | **无格式** | 二进制暂存 |
---
## 第七部分:原子数据文件
### 7.1 能级数据文件 (*.dat)
| 模式 | 示例文件 | 说明 |
|------|---------|------|
| `[元素][离子].dat` | h1.dat, he1.dat, c1.dat | 原子能级数据 |
| `[元素][离子]_[n]+[m]lev.dat` | al2_20+9lev.dat | 自定义能级数 |
| `[元素][离子]hyd.dat` | al4hyd.dat | 氢化物数据 |
### 7.2 光谱数据文件 (*.t)
| 模式 | 示例文件 | 说明 |
|------|---------|------|
| `[元素][离子].t` | c1.t, ca1.t, al1.t | Kurucz 光谱线数据 |
### 7.3 CIA 数据 (碰撞诱导吸收)
| 文件名 | 说明 |
|--------|------|
| `CIA_H2H.dat` | H₂-H 碰撞吸收 |
| `CIA_H2H2.dat` | H₂-H₂ 碰撞吸收 |
| `CIA_H2He.dat` | H₂-He 碰撞吸收 |
| `CIA_HHe.dat` | H-He 碰撞吸收 |
### 7.4 Stark 加宽数据
| 文件名 | 说明 |
|--------|------|
| `lemke.dat` | Lemke H Stark 线宽 |
| `tremblay.dat` | Tremblay H Stark 线宽 |
| `laquasi.dat` | Lyman-α 准静态轮廓 |
| `lbquasi.dat` | Lyman-β 准静态轮廓 |
| `lgquasi.dat` | Lyman-γ 准静态轮廓 |
| `lhquasi.dat` | Lyman 系其他线 |
### 7.5 其他数据文件
| 文件名 | 说明 |
|--------|------|
| `absopac.dat` | 吸收不透明度 |
| `ioniz.dat` | 电离数据 |
| `irwin_bc.dat` | Irwin 边界条件 |
| `irwin_orig.dat` | Irwin 原始数据 |
| `ptab.dat` | 压力表 |
| `stab.dat` | 自由能表 |
| `xenomorph.blue.dat` | XENOMORPH 蓝端 |
| `xenomorph.red.dat` | XENOMORPH 红端 |
| `RBF.DAT` | 辐射场边界 |
---
## 第八部分:文件格式详解
### 8.1 fort.5 (主输入)
```fortran
35000. 4.0 ! TEFF, GRAV (有效温度K, log g)
T T ! LTE, LTGRAY (LTE开关, 灰大气开关)
'' ! 可选参数文件名(空=无)
*-----------------------------------------------------------------
* frequencies
50 ! NFREAD (频率点数)
*-----------------------------------------------------------------
* data for atoms
8 ! NATOMS (原子种类数)
* mode abn modpf
2 0 0 ! 模式, 丰度, 配分函数模式
...
*-----------------------------------------------------------------
* data for ions
*iat iz nlevs ilast ilvlin nonstd typion filei
1 0 9 0 100 0 ' H 1' './data/h1.dat'
...
```
### 8.2 fort.7/fort.8 (模型文件)
```fortran
! 头部: ND, NUMPAR
70 3
! 质量深度数组
1.000E+00 9.500E-01 ... 1.000E-10
! 每个深度点
! TEMP(ID) ELEC(ID) DENS(ID) [TOTN(ID)] [POPUL(1..NLEVEL)]
```
### 8.3 fort.9 (收敛历史)
```fortran
RELATIVE CHANGES OF VECTOR PSI
ITER ID TEMP NE POP RAD MAXIMUM ilev ifr
1 70 1.23E-02 2.45E-01 1.00E+00 0.00E+00 2.45E-01 5 10
...
```
---
## 第九部分:有 I/O 的模块分析
| 模块 | 主要 I/O 操作 | 复杂度 |
|------|--------------|--------|
| **INITIA** | 打开所有输入文件 | 高 |
| **OUTPUT** | 写入 fort.7, fort.12, fort.22 | 中 |
| **READBF** | 读取原子数据文件 | 低 |
| **PRSENT** | 打印进度到 fort.6 | 低 |
| **TIMING** | 写入 fort.69 | 低 |
| **OPFRAC** | 读取 ODF 文件 | 中 |
| **INILAM** | 初始化谱线数据 | 高 |
| **KURUCZ** | 读取 Kurucz 格式模型 | 中 |
| **NSTPAR** | 读取非标准参数 | 中 |
| **MOLEQ** | 分子数据处理 | 中 |
| **OPDATA** | 读取不透明度数据 | 中 |
| **RDATA** | 读取原子数据 | 低 |
| **SIGAVE** | Stark 加宽数据 | 低 |
---
## 第十部分:重构优先级
### 高优先级(核心 I/O必须实现
| 文件 | 单元 | 用途 |
|------|------|------|
| fort.5 | 5 | 主输入 |
| fort.6 | 6 | 标准输出 |
| fort.7 | 7 | 模型输出 |
| fort.8 | 8 | 模型输入 |
### 中优先级(诊断/中间文件)
| 文件 | 单元 | 用途 |
|------|------|------|
| fort.9 | 9 | 收敛历史 |
| fort.11 | 11 | 辐射压力 |
| fort.12 | 12 | 模型快照 |
### 低优先级(调试/可选)
| 文件 | 单元 | 用途 |
|------|------|------|
| fort.10 | 10 | 警告 |
| fort.14 | 14 | 角度分布 |
| fort.16-18 | 16-18 | 调试 |
| fort.69 | 69 | 计时 |
| fort.82,84,86-88 | | ODF 诊断 |
---
## 附录:测试文件清单 (tests/tlusty/hhe/)
| 文件 | 大小 | 说明 |
|------|------|------|
| hhe35lt.5 | 984 B | 输入文件 |
| fort.7 | 45 KB | 模型输出 |
| fort.8 | 45 KB | 模型输入 |
| fort.9 | 139 KB | 收敛历史 |
| fort.10 | 1.2 KB | 警告 |
| fort.11 | 8 KB | 辐射压力 |
| fort.12 | 45 KB | 模型快照 |
| fort.14 | 96 KB | 角度分布 |
| fort.17 | 4.7 KB | 迭代模型 |
| fort.18 | 480 KB | 详细日志 |
| fort.22 | 45 KB | 模型快照 |
| fort.69 | 3.3 KB | 计时 |
| fort.82 | 4.5 KB | 谱线统计 |
| fort.84 | 1.9 KB | 参数值 |