# 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 | 参数值 |