Tlusty208 和 Synspec54 安装与简单使用

1. 简介

Tlusty 和 Synspec 是用于计算恒星大气模型和合成光谱的软件包。本指南涵盖安装、配置、编译、测试及 Python 工具 Synple 的使用。

2. 下载与安装

2.1 下载文件

主文件:

1
wget https://www.as.arizona.edu/~hubeny/tlusty208-package/tl208-s54.tar.gz

可选文件(根据需求选择):

  1. 线列表(原子、分子谱线数据):

    1
    wget https://www.as.arizona.edu/~hubeny/tlusty208-package/linelist.tar.gz
  2. 铁数据(用于金属线空白模型):

    1
    wget https://www.as.arizona.edu/~hubeny/tlusty208-package/irondata.tar.gz
  3. 消光表(预计算的消光数据):

    1
    wget https://www.as.arizona.edu/~hubeny/tlusty208-package/optables.tar.gz

2.2 解压文件

1
2
3
4
tar xvfz tl208-s54.tar.gz
tar xvfz linelist.tar.gz # 若需要线列表
tar xvfz irondata.tar.gz # 若需要铁数据
tar xvfz optables.tar.gz # 若需要消光表

2.3 目录结构

解压后生成的目录结构如下:

1
2
3
4
5
6
7
8
tl208-s54/
├── tlusty/ # Tlusty 源代码
├── synspec/ # Synspec 源代码
├── data/ # 原子数据、分子数据等
├── tests/ # 测试案例
│ ├── tlusty/ # Tlusty 测试
│ └── synspec/ # Synspec 测试
└── gui/ # 图形界面程序

3. 环境变量配置

3.1 设置主目录变量

1
2
3
4
5
6
7
8
9
10
# tcsh
setenv TL208 ~/tlusty208-package
setenv LINELIST $T208/linelist
setenv IRON $TL208/irondata
setenv OPTABLES $TL208/optables
# bash
export TL208=~/tlusty208-package
export LINELIST=$TL208/linelist
export IRON=$TL208/irondata
export OPTABLES=$TL208/optables

3.2 编译线列表转换工具

1
2
3
cd $LINELIST/linelist
gfortran -o list2bin.exe list2bin.f
./Bin # 生成二进制线列表文件(gfATO.bin 等)

3.3 链接额外数据

进入 data 目录并运行链接线表:

1
2
3
4
cd $TL208/tl208-s54/data
./Linklist # 链接线列表(需设置 LINELIST 环境变量)
./Linkiron # 链接铁数据(需设置 IRON 环境变量)
./Linkopta # 链接消光表(需设置 OPTABLES 环境变量)

4. 编译程序

4.1 编译 Tlusty

1
2
3
4
cd $TL208/tl208-s54/tlusty
gfortran -fno-automatic -O3 -o tlusty.exe tlusty208.f
# 若内存不足,添加参数:
gfortran -fno-automatic -mcmodel=large -O3 -o tlusty.exe tlusty208.f

4.2 编译 Synspec

1
2
3
4
cd $TL208/tl208-s54/synspec
gfortran -fno-automatic -O3 -o synspec.exe synspec54.f
# 若内存不足,添加参数:
gfortran -fno-automatic -mcmodel=large -o synspec.exe synspec54.f

5. 运行测试

5.1 测试 Tlusty

Tlusty 包含多种测试模型,可用于验证安装。测试案例通常包括计算一个局部热动平衡(LTE)模型,然后仅使用连续谱的非局部热动平衡(NLTC)模型,最后是包含谱线的非局部热动平衡(NLTL)模型。

运行所有测试案例:

1
2
cd $TL208/tl208-s54/tests/tlusty
./Runtest

或运行单个测试案例:

1
2
cd $TL208/tl208-s54/tests/tlusty/hhe
./R1

单独运行某个模型:

1
2
3
cd $TL208/tl208-s54/tests/tlusty
../../../RTlusty h20 # 运行氢测试
../../../RTlusty he30g # 运行氦测试

测试子目录说明:

  • hhe:H-He 非局部热动平衡(NLTE)模型
  • bstar:B 型星金属线空白模型
  • cwd:DA 白矮星模型
  • disk:吸积盘垂直结构模型
  • optab:使用消光表的测试

5.2 测试 Synspec

Synspec 同样包含多种测试案例,用于验证光谱合成功能。

运行所有测试案例:

1
2
cd $TL208/tl208-s54/tests/synspec
./Runtest # 运行原子光谱测试

运行消光表测试:

1
2
cd $TL208/tl208-s54/tests/synspec/optab
./R1 # 生成消光表 optab11_7f.dat

单独运行某个光谱合成:

1
2
cd $TL208/tl208-s54/tests/synspec
../../../RSynspec h20 # 计算氢模型光谱

测试子目录说明:

  • hhe:H-He 模型的合成光谱
  • bstar:B 型星模型的合成光谱
  • kurucz:Kurucz 模型的合成光谱
  • optab:消光表生成与验证

6. 使用帮助

6.1 Tlusty 模型计算

  1. 准备输入文件(模型参数文件 .5
  2. 运行计算:
    1
    RTlusty model_name
  3. 输出文件:
    • model_name.6:计算日志
    • model_name.7:模型大气结构
    • model_name.asc:可读模型(如果请求)

6.2 Synspec 光谱合成

  1. 准备输入文件(使用 Tlusty 模型和额外控制文件)
  2. 运行计算:
    1
    RSynspec model_name
  3. 输出文件:
    • model_name.spec:合成光谱
    • model_name.cont:连续谱
    • model_name.iden:谱线识别表

6.3 后处理工具

ROTIN 程序用于旋转展宽和仪器轮廓处理:

1
2
3
cd $TL208/tl208-s54/synspec
gfortran -o rotin.exe rotin.f
./rotin.exe < rotin.input # 旋转和仪器展宽

7. 常见问题解答

  1. 内存不足错误

    • 使用 -mcmodel=large 重新编译
    • 减少模型复杂度(频率点、能级数量)
  2. 线列表问题

    • 确保链接脚本正确执行
    • 检查环境变量设置是否正确
  3. 收敛问题

    • 尝试从更简单的模型开始计算
    • 调整迭代参数(如 NITER)

8. 高级特性

8.1 Python 工具 Synple

Synple 是一个 Python 封装,简化 Tlusty 和 Synspec 的使用:

1
2
3
4
5
6
7
8
9
#下载编译
git clone https://github.com/callendeprieto/synple.git
cd synspec
make clean; make
cd ..
#下载线表
cd linelists
make clean; make
cd ..

详细说明请参考 Synple 文档

8.2 并行计算

某些情况下可使用 OpenMP 进行并行计算:

1
gfortran -fno-automatic -fopenmp -O3 -o tlusty.exe tlusty208.f

TLUSTY详细使用说明

1. 概述

TLUSTY 是由Ivan Hubeny和Thierry Lanz开发的非局部热力学平衡(NLTE)恒星大气和吸积盘模型计算程序。版本208支持混合CL/ALI方法求解辐射转移方程,广泛应用于恒星大气、吸积盘等天体物理场景。


2. 输入文件规范

2.1 主输入文件(*.5

核心参数(第一行)

1
[TEFF, GRAV] 或 [XMSTAR, XMDOT, RSTAR, RELDST]
参数 类型 说明
TEFF 浮点数 表面有效温度(K),用于恒星模式
GRAV 浮点数 表面重力加速度对数(log g),单位cm/s²
XMSTAR 浮点数 中心天体质量:
- >0:经典恒星质量(M☉)
- <0:黑洞质量(绝对值)
- 0:独立盘模型
XMDOT 浮点数 吸积率(g/s或M☉/年)
RSTAR 浮点数 恒星半径(cm/R☉)或黑洞自旋参数(几何单位)
RELDST 浮点数 盘环相对距离:
- 恒星:R/R*
- 黑洞:R/Rg

模型类型(第二行)

1
LTE [LTGRAY]
参数 类型 说明
LTE 布尔值 .TRUE.:计算LTE模型;.FALSE.:计算NLTE模型
LTGRAY 布尔值 .TRUE.:使用LTE灰辐射初始模型;.FALSE.:需提供初始模型文件fort.8

关键词参数文件(第三行)

1
FINSTD
参数 类型 说明
FINSTD 字符串 自定义参数文件名(空字符串表示使用默认参数)

频率点设置(第四行)

1
NFREAD
参数 类型 说明
NFREAD 整数 >0:自动设置频率点;<0:对数等间距设置(点数取绝对值)

2.2 化学物种配置

基础设置

1
NATOMS iabset
参数 类型 说明
NATOMS 整数 最高原子序数:
- <0:使用Opacity Project数据
- 0:仅使用预计算表
- >0:正常模式
iabset 整数 丰度模式(1或2表示使用默认太阳丰度)

元素参数(NATOMS条记录)

1
MODE ABN MODPF
参数 类型 说明
MODE 整数 0: 忽略;1: 隐式处理;2: 显式处理
ABN 浮点数 丰度:
- 0:太阳丰度
- <0:太阳丰度的倍数(绝对值)
- >0:相对丰度
- >1e6:深度依赖丰度
MODPF 整数 分区函数计算模式:
- 0:标准计算
- >0:Opacity Project
- <0:用户自定义

2.3 显式离子配置

离子参数

1
IATII IZII NLEVSI ILASTI ILVLIN NONSTD TYPION FILEI
参数 类型 说明
IATII 整数 元素原子序数(如1=H,2=He)
IZII 整数 电离态(0=中性,1=一次电离)
NLEVSI 整数 显式考虑的能级数
ILASTI 整数 最高电离态标志:
- 0:非最高态
- >0:最高态(1=自动权重,负值终止)
ILVLIN 整数 跃迁处理:
- 2:仅基态跃迁
- >NLEVSI:全跃迁
NONSTD 整数 非标准参数标志(<0需指定超线文件)
TYPION 字符串 离子标识(如’He 2’)
FILEI 字符串 原子数据文件路径

3. 非标准参数(nst文件)

非标准标志文件包含一系列参数覆盖和高级设置,例如:

1
2
3
ND=50,NLAMBD=3,VTB=2.,ISPODF=1,DDNU=50.,CNU1=6.,NITER=0
IELCOR=-1
IFEOS=-4

全部可选参数,默认值,作用为:

参数分类与解释

**1. 物理模型控制参数

参数名 默认值 作用
ISPLIN 0 插值方法标志(0 表示线性插值,其他值可能对应不同插值方式)。
IRTE 0 辐射转移方程求解模式(0 表示默认求解器)。
IBC 3 边界条件类型(如3 表示特定辐射边界条件)。
LTE 0 是否启用局部热平衡(LTE)1 表示启用)。
LTGREY 0 是否启用LTE 灰模型1 表示启用)。
IDISK 0 模拟对象类型:
0 = 恒星大气,>0 = 吸积盘。
HMIX0 0 对流参数,控制对流模型的启用(>0 表示启用对流)。
TRAD 0 外部辐射场温度(>0 表示指定温度,0 表示通过模型计算)。
WDIL 0 外部辐射场的稀释因子(>0 表示指定值,0 表示通过其他参数计算)。

**2. 数值方法控制参数

参数名 默认值 作用
NITER 0 非 LTE 迭代的最大次数(需用户指定,0 表示未设置)。
NMU 3 角积分点数(控制辐射转移方程的离散化精度)。
NLAMBD 1 波长点数(LTE 模式下通常设为 1,非 LTE 模式下需用户指定)。
IFRSET 0 频率点设置模式(>0 表示使用预设频率点)。
NTRANS ITR 总跃迁数(由INITIA 子程序计算)。
NCFOR1, NCFOR2 1, 2 连续谱计算参数(控制不同频率范围的处理方式)。

**3. 吸收/发射控制参数

参数名 默认值 作用
IOPTAB 0 吸收系数表开关:
0 = 不使用预计算表,>0 = 使用表。
IFMOL 0 分子过程开关(>0 表示启用分子吸收/发射)。
IOPHL1, IOPHL2 0 氢线吸收/发射计算开关(>0 表示启用)。
IOPHMI 0 氢分子(H⁻)相关吸收开关。
IOPCH 0 碳氢化合物(CH)相关吸收开关。

**4. 湍流与展宽参数

参数名 默认值 作用
VTB -1 湍流速度(单位需结合代码转换,如1e5 cm/s)。
IVISC 0 粘滞力模型开关(>0 表示启用特定粘滞模型)。
ALPHAV 0.1 粘滞系数(如湍流粘度与压强的比值)。
ZETA0, ZETA1 0.0, 0.0 粘滞力参数(可能控制剪切流动或温度梯度的影响)。

**5. 迭代与加速参数

参数名 默认值 作用
IFRYB 0 迭代方法选择(0 = 标准 CL 方法,>0 = 使用 Rybicki 的加速方法)。
IACC 7 迭代加速方法标志(>0 表示启用 Anderson 加速等方法)。
ITEK 0 迭代终止条件(>0 表示在指定步数后切换到 Kantorovich 迭代)。
ORELAX 1.0 迭代松弛因子(控制收敛速度)。

**6. 几何与深度参数

参数名 默认值 作用
ND 0 大气模型的深度点数(0 表示使用默认值 ND-1)。
TAUFIR 1e-7 表面罗斯兰德光学深度(>0 表示指定值)。
TAULAS 316.0 底层罗斯兰德光学深度(默认值可能针对恒星大气)。
DM1 0.0 吸积盘第一层的质量深度(>0 表示指定值)。

**7. 特殊物理过程开关

参数名 默认值 作用
ICOMPT 0 康普顿散射开关(>0 表示启用)。
IWINBL -1 风空白效应开关:
-1 = 禁用,12 = 启用不同模型。
IQUASI 0 准静态近似开关(>0 表示启用)。
IFMOFF 0 分子屏蔽效应开关(>0 表示启用)。

**8. 原子与能级参数

参数名 默认值 作用
IELCOR -1 能级校正模式(-1 表示自动校正)。
ICHC 0 氢复合过程开关(1 表示启用)。
IFLEV 1 能级计算模式(1 表示简化计算,0 表示全计算)。
NFRECL 0 线轮廓的离散化频率点数(0 表示自动生成)。

**9. 输出与调试控制

参数名 默认值 作用
IPRING 0 调试输出详细程度:
0 = 最终结果,1 = 中间结果,2 = 完全输出。
IPRINI 0 初始模型输出开关(>0 表示输出初始配置)。
IPCONF 0 配置文件输出开关(>0 表示输出详细参数配置)。

**10. 其他关键参数

参数名 默认值 作用
FRCMAX, FRCMIN 1e15 Hz 频率范围的上限和下限(需单位转换)。
REYNUM 3.0 雷诺数(控制湍流模型)。
DPSILG, DPSILT 1e-3 密度/温度梯度的容差参数(用于收敛判断)。
IOPADD 0 其他吸收过程开关(如铁线、碳氢化合物等)。

4. 输出文件说明

文件名 说明
file.6 标准输出(计算过程、诊断信息)
file.7 紧缩模型(最终大气模型,包含温度、密度、能级布居数等)
file.9 收敛日志(迭代过程记录)
file.14 辐射通量(各波长的F_λ值)

5. 示例用法

5.1 非LTE恒星模型

输入文件(hhe35lt.5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
35000. 4.0        ! TEFF, GRAV
T T ! LTE, LTGRAY
'nst' ! no change of general optional parameters
*-----------------------------------------------------------------
* frequencies
50 ! NFREAD
*-----------------------------------------------------------------
* data for atoms
*
8 ! NATOMS
* mode abn modpf
2 0 0
2 0 0
0 0 0
0 0 0
0 0 0
1 0 0
1 0 0
1 0 0
*-----------------------------------------------------------------
* data for ions
*
*iat iz nlevs ilast ilvlin nonstd typion filei
*
1 0 9 0 100 0 ' H 1' './data/h1.dat'
1 1 1 1 0 0 ' H 2' ' '
2 0 14 0 100 0 'He 1' './data/he1.dat'
2 1 14 0 100 0 'He 2' './data/he2.dat'
2 2 1 1 0 0 'He 3' ' '
0 0 0 -1 0 0 ' ' ' '
*
* end

非标准参数(nst

1
2
3
4
ND=50             ! 50个深度点
NLAMBD=3 ! 3个波长点
VTB=2. ! 湍流速度2e5 cm/s
NITER=30 ! 最大30次迭代

运行命令

1
$TLUSTY/RTlusty hhe35lt

也可以从现有模型开始计算:

1
$TLUSTY/RTlusty hhe35nc hhe35lt

6. 可视化示例

收敛日志:

1
2
3
4
import matplotlib.pyplot as plt
import tlusty as tl
plt.ion()
tl.pconv('hhe35lt')

紧缩模型

1
2
3
4
import matplotlib.pyplot as plt
import tlusty as tl
plt.ion()
tl.pconv('hhe35lt')

紧缩模型对比

1
2
3
4
import matplotlib.pyplot as plt
import tlusty as tl
plt.ion()
tl.pconv('hhe35lt')

辐射通量

1
2
3
4
import matplotlib.pyplot as plt
import tlusty as tl
plt.ion()
tl.pconv('hhe35lt')

7. 注意事项

  1. 初始模型:若LTGRAY=F,需提供fort.8初始模型文件
  2. 单位转换XMSTAR单位为太阳质量,RSTAR单位需根据模式选择(cm/R☉或几何单位)
  3. 深度依赖丰度:当ABN>1e6时,需在后续行输入ND个深度点的丰度值

Synspec详细使用说明

1. 概述

SYNSPEC是一个功能强大的恒星光谱合成程序,主要用于计算基于给定恒星大气模型的合成光谱。该程序由Ivan Hubeny和Thierry Lanz开发,版本54(synspec54.f)是一个通用代码,可以基于由TLUSTY生成的大气模型或其他大气模型来计算高分辨率的合成光谱。SYNSPEC处理连续吸收和发射以及谱线轮廓,能够产生包含细节丰富的光谱数据。

2. 程序结构

SYNSPEC的程序结构包含以下主要组件:

2.1 主要源文件

  • synspec54.f: 主程序文件,包含主要的计算逻辑和光谱合成过程
  • PARAMS.FOR: 定义基本参数和常量,如数组维度和物理常数
  • LINDAT.FOR: 定义与谱线数据相关的数组和变量
  • MODELP.FOR: 包含模型大气参数和变量的声明
  • SYNTHP.FOR: 合成光谱相关的参数和变量
  • OPTPAR.FOR: 不透明度计算相关参数
  • WINCOM.FOR: 窗口函数和赤道速度场参数
  • ngrid.f: 波长网格生成程序
  • rotin.f: 旋转和仪器展宽程序

2.2 主要子程序

  • START: 通用输入和初始化程序
  • INPMOD/INKUR: 读取大气模型
  • INIBL0/INIBL1: 初始化线列表和基本参数
  • MOLINI/INMOLI: 初始化分子数据
  • RESOLV/RESOLW: 计算吸收系数和谱线轮廓
  • RTE/RTECD: 辐射转移方程求解
  • OUTPRI: 输出结果
  • IDTAB: 生成谱线鉴别表

3. 输入文件格式

SYNSPEC使用多个输入文件,包括:

3.1 主要输入文件

  1. 控制文件 (fort.1): 基本控制文件,仅包含一个数字,指定是处理恒星大气模型还是吸积盘模型

    • 如果这个数字是 0,或者文件完全缺失,则认为是恒星大气模型
    • 否则,认为是盘模型的一个环
  2. 主输入文件 (file.5): 主控制数据,与用于TLUSTY生成合成光谱所计算模型大气的数据完全相同

  3. 大气模型文件 (file.8): 输入大气模型,通常为之前计算的TLUSTY模型(即TLUSTY的file.7输出),但也可以是Kurucz模型

  4. 线列表文件 (fort.19): 原子线列表,基于Kurucz线列表

  5. 附加输入文件 (fort.55): 用于计算合成光谱的附加输入参数

  6. 化学丰度变化文件 (fort.56, 可选): 指定相对于输入模型大气的化学丰度变化。对于LTE模型或在合成光谱运行中考虑的化学丰度与构建输入模型大气时使用的化学丰度相同的NLTE模型,不需要此文件

  7. 超能级能量带文件 (fort.57, 可选): 只有当输入模型大气是NLTE金属线屏蔽模型,并且用超能级和超线来处理铁峰元素的能级结构时,才需要此文件

3.2 主输入文件格式(file.5)

与TLUSTY使用的格式相同:

1
2
3
4
5
6
7
8
9
10
11
Teff Grav             ! 有效温度和表面重力
LTE LTGREY ! LTE和灰大气逻辑标志
'nst' ! 包含非标准标志的文件名
*
* 频率设置
*
NFREQ ! 频率点数
*
* 原子数据
*
... ! 与TLUSTY相同的原子和离子规格

3.3 附加输入文件格式(fort.55)

fort.55是SYNSPEC程序的输入控制文件,用于定义合成光谱的计算模式、参数和选项。以下是其参数的详细说明:

3.3.1 文件结构

参数按以下顺序读取(自由格式,空格分隔):

1
2
3
4
5
6
7
8
9
imode   idstd   iprin
inmod intrpl ichang ichemc
iophli nunalp nunbet nungam nunbal
ifreq inlte icontl inlist ifhe2
ihydpr ihe1pr ihe2pr
alam0 alast cutof0 cutofs relop space
nmlist, (iunitm(i),i=1,nmlist)
vtb
nmu0 ang0 iflux

3.3.2 参数详解

基础模式参数
参数名 含义 取值说明
imode 运行模式选择: -0:正常合成光谱
- 1:仅计算少数谱线(已废弃)
- 2:仅计算连续谱(含H和He II谱线)
- 10:含分子谱线的合成光谱
- -1:铁幕模式(仅计算特定深度的不透明度)
idstd “标准深度”索引(近似满足T ≈ (2/3) T_eff 的深度点) 通常设为(2/3) × N_DN_D 为模型深度点总数)。仅影响谱线选择参数 relop
iprin 输出信息级别(已废弃) >0 增加输出信息,但很少使用。
输入模型参数
参数名 含义 取值说明
inmod 输入模型类型: -0:Kurucz 模型
- 1:Tlusty 模型
- 2:吸积盘模型
intrpl 模型插值选项(很少使用) 默认设为0
ichang 模型修改选项(很少使用) 默认设为0
ichemc 元素丰度修改标志: ≠0 时需提供 fort.56 文件定义丰度变化。
谱线与不透明度参数
参数名 含义 取值说明
iophli Lα 线远翼处理(已废弃) 建议设为0
nunalp 是否考虑 Lα 卫星线: ≠0 时需提供 laquasi.dat 文件。
nunbet 是否考虑 Lβ 卫星线: ≠0 时需提供 lbquasi.dat 文件。
nungam 是否考虑 Lγ 卫星线: ≠0 时需提供 lgquasi.dat 文件。
nunbal 是否考虑 Hα 卫星线: ≠0 时需提供 lhquasi.dat 文件。
求解器与不透明度控制
参数名 含义 取值说明
ifreq 辐射转移方程求解器选择: -<10:DFE 方案
- ≥10:Feautrier 方案
- 默认 1(DFE)。
inlte NLTE 处理标志: -0:强制 LTE 计算
- >0:指定电离边缘能级的 NLTE 处理模式(值 12)。
icontl 连续谱处理选项(已废弃) 默认设为0
inlist 行列表处理选项(已废弃) 默认设为0
ifhe2 He II 处理方式: ≠0 时将 He II 视为氢类离子。
谱线轮廓参数
参数名 含义 取值说明
ihydpr 氢谱线轮廓特殊处理: ≠0 时需提供 hydprf.dat 文件。
ihe1pr He I 谱线轮廓特殊处理: ≠0 时需提供 he1prf.dat 文件。
ihe2pr He II 谱线轮廓特殊处理: ≠0 时需提供 he2prf.dat 文件。
波长范围与分辨率
参数名 含义 取值说明
alam0 起始波长(Å) 例如1000.0
alast 终止波长(Å) - 若alast < 0:所有波长按真空波长处理
- 默认 >2000 Å 时按空气波长处理。
cutof0 线不透明度截断参数: 仅保留中心不透明度超过cutof0 的谱线(除 H 和 He II)。
cutofs 保留参数(无实际作用) 默认设为0
relop 线截断阈值: 若谱线中心不透明度与标准深度的连续谱不透明度比值< relop,则忽略该线。
space 波长间隔控制参数: 最大波长间隔为space × (alam0 + alast)/(2λ),其中 λ 为波长中点。
分子线列表与湍流速度
参数名 含义 取值说明
nmlist 额外分子线列表数量 nmlist=0,则无需后续参数。
iunitm(i) 额外分子线列表的文件单元号(共nmlist 个) 例如2021 对应 gfMOL.datgfTiO.dat
强度输出参数
参数名 含义 取值说明
vtb 湍流速度(km/s) 若未指定,则使用 Tlusty 输入中的值。
nmu0 角分布点数: -nmu0=0:仅计算总通量
- >0:计算 I_ν(μ)μang01 间等间距分布。
ang0 最小角度余弦值(μ = cosθ 例如0.0 对应垂直方向。
iflux 强度计算标志: 1:启用 I_ν(μ) 计算。

3.3.3 示例输入

1
2
3
4
5
6
7
8
0   10   0
1 0 0 0
0 0 0 0 0
1 0 0 0 0
0 0 0
1000.0 2000.0 1.0e-5 0.0 1.0e-3 0.5
0 0.0
0 0.0 0

3.3.4 注意事项

  1. 省略参数:若无需最后三行(vtb, nmu0, ang0, iflux),则设 nmlist=0vtb 采用 Tlusty 输入值。
  2. 过时参数icontl, inlist, iophli 建议设为默认值。
  3. 文件依赖:若启用卫星线或特殊轮廓,需提供对应数据文件(如 laquasi.dat, hydprf.dat 等)。
  4. 波长单位alam0alast 默认按空气波长处理(λ > 2000 Å)。

3.4 线列表文件格式

线列表文件包含谱线数据:

  • 波长(埃)
  • 振子强度(log gf)
  • 激发能(eV)
  • 谱线阻尼常数
  • 元素和电离状态标识

4. 输出文件格式

SYNSPEC生成多个输出文件:

4.1 主要输出文件

  1. 标准输出文件 (file.6): 包含计算日志,仅在出现问题时才重要

  2. 合成光谱文件 (fort.7*.spec): 存储最终合成光谱的通量数据

    1
    2
    3
    波长1  通量1    ! λ:波长和 H_λ:埃丁顿通量(Eddington flux)
    波长2 通量2
    ...
  3. 连续谱文件 (fort.17*.cont): 存储无谱线的纯连续谱通量数据

    1
    2
    3
    波长1  连续谱通量1    ! λ:波长和 H_cont:连续谱通量(排除所有谱线贡献)
    波长2 连续谱通量2
    ...
  4. 谱线鉴别表 (fort.12*.iden): 谱线标识表,列出所有被选中的谱线及其参数,便于谱线识别

    1
    2
    波长  元素  离子  等效宽度  谱线参数
    ...
  5. 部分等效宽度表 (fort.16*.eqws): 记录各谱线或谱区的等效宽度(Equivalent Width, EW)

4.2 特殊输出选项

  • 特定强度文件 (fort.10): 如果计算特定方向的强度
  • 连续谱特定强度 (fort.18): 连续谱的方向相关强度
  • 单色不透明度 (fort.27): 铁幕模式下的不透明度表

4.3 文件用途总结

文件名 描述 典型用途
fort.6 计算日志文件 调试和错误诊断
fort.7 合成光谱(包含谱线和连续谱) 光谱分析、可视化
fort.17 纯连续谱通量 分离谱线和连续谱贡献
fort.12 谱线标识表 谱线识别和属性查询
fort.16 谱线等效宽度列表 定量评估谱线强度

5. API参考

SYNSPEC没有提供传统意义上的API,但可以通过特定的输入文件和参数以编程方式调用它。以下是shell脚本RSynspec中执行SYNSPEC的方式:

1
$TLUSTY/synspec/synspec.exe < $MOD.5 > $MOD.log

这表明SYNSPEC接受来自标准输入的输入文件,并将输出写入标准输出或指定的文件。

5.1 环境变量

  • TLUSTY: 指向TLUSTY/SYNSPEC安装目录的环境变量

5.2 输入/输出单元

SYNSPEC使用FORTRAN单元进行I/O操作:

  • 单元5: 标准输入(主输入文件)
  • 单元6: 标准输出(详细输出)
  • 单元7: 合成光谱输出
  • 单元8: 大气模型输入
  • 单元12: 谱线鉴别表
  • 单元16: 部分等效宽度表
  • 单元17: 连续谱通量
  • 单元19: 线列表输入
  • 单元55: 附加输入文件
  • 单元69: 时间日志

5.3 核心功能

SYNSPEC的核心功能由以下几个步骤组成:

  1. 读取输入参数和模型大气

    1
    2
    CALL START
    CALL INPMOD / CALL INKUR
  2. 初始化线列表和原子数据

    1
    2
    CALL INIBL0
    CALL INIMOD
  3. 计算吸收系数和谱线轮廓

    1
    CALL RESOLV / CALL RESOLW
  4. 求解辐射转移方程

    1
    CALL RTE / CALL RTECD
  5. 输出结果

    1
    2
    CALL OUTPRI
    CALL IDTAB

6. 示例用法

6.1 基本光谱合成

以下是使用RSynspec脚本计算光谱的基本命令:

1
RSynspec model_name additional_input line_list

例如:

1
RSynspec h20k linelist.dat

6.2 控制光谱范围和分辨率

在单元55的输入文件中设置波长范围和分辨率:

1
2
3
4
5
6
0 1 0                 ! 模式、模型格式、插值标志
0 0 0 0 ! 化学成分等标志
0 0 0 2 0 ! 不透明度和输出控制
0 0 0 0 0 ! 附加标志
0 0 0 0 0
4000. 5000. 0.1 0.0 0.00001 0.0 ! 波长范围4000-5000埃,步长0.1埃

6.3 计算连续谱

将IMODE设置为2来仅计算连续谱:

1
2
2 1 0                 ! 模式=2表示仅连续谱
...

6.4 后处理:旋转和仪器展宽

使用ROTIN程序处理SYNSPEC输出的原始光谱:

1
rotin < rotin.input

其中rotin.input包含旋转速度、仪器展宽类型等参数。

,