sisl从SIESTA本征值提取DOS与绘图
sdata读取实际Si2 EIG和KP,用两种Gaussian展宽生成DOS表格和图,说明费米能、k点权重、自旋简并与态数积分。
阅读本篇目录
本篇将真实SIESTA输出接到终端DOS处理。数据来自鸢算科技集群Si2的DZP/150Ry实际计算:2个Si、26个空间轨道、44条k点记录,非磁单自旋块。后处理用sisl0.16.4/Python3.11,NumPy/SciPy/Matplotlib,不重新计算DFT。
1. 准备实际文件#
下载EIG/KP、完整脚本和真实参考结果,保存为sisl-cli.zip并在新目录解压:
unzip sisl-cli.zip -d sisl-cli
cd sisl-cli
module load sisl/0.16.4
head -n 3 inputs/si.EIG
head -n 3 inputs/si.KP
sdata inputs/si.EIG --help
EIG保存费米能与各k点本征值,KP提供相同k点顺序的权重。不能拿另一个网格的KP配这个EIG;本例44项权重之和为1。
需要重新生成全部图和数据时,在可用CPU分区sbatch job.slurm;模板按56物理核整节点申请。在已分配的CPU作业中也可bash run.sh。包内参考在reference-*目录,新运行写入独立results/analysis/figures。
2. 一条命令提取DOS和图片#
mkdir work
sdata inputs/si.EIG --kp-file inputs/si.KP \
--dos 0.02 0.1 gaussian --out work/dos-0p1.txt --plot work/dos-0p1.png
--kp-file放在--dos前,先读取权重。三个DOS参数依次为能量步长0.02eV、Gaussian展宽0.1eV和分布类型。表格第一列为相对SIESTA费米能的能量eV,第二列为DOS。
再运行0.2eV展宽:
sdata inputs/si.EIG --kp-file inputs/si.KP \
--dos 0.02 0.2 gaussian --out work/dos-0p2.txt --plot work/dos-0p2.png
展宽增大使谱峰更平滑,但不会增加物理信息。参数和原生图例中以kT或K标记的量在这里控制Gaussian展宽,不表示这份Si数据真的在相应温度平衡。
3. 只看费米能附近,并叠加两种展宽#
sdata inputs/si.EIG --kp-file inputs/si.KP --energy=-10:10 \
--dos 0.02 0.1 gaussian --dos 0.02 0.2 gaussian \
--out work/dos-window.txt --plot work/dos-window.png
head work/dos-window.txt
同一能量网格下,两次--dos将两种展宽保存在一张图和同一表里:能量、0.1eV DOS、0.2eV DOS共三列。--energy=-10:10的等号可以避免负号被终端参数解析器当成另一个选项。

图来自原生sdata,图例中的温度标签只是对应展宽的换算;能量零点为SIESTA文件中的费米能。若比较不同体系或不同计算,先统一能量参照,不能只把每张图都平移到零就比较绝对能级。
4. 积分出来26是什么意思#
从全能窗表格积分:
python - <<'PY'
import numpy as np
x = np.loadtxt('work/dos-0p1.txt')
print(np.trapezoid(x[:,1], x[:,0]))
PY
本例完整精度原生数据的积分:
| 展宽 | 全能窗空间轨道态数 |
|---|---|
| 0.1eV | 25.999996301 |
| 0.2eV | 25.999997018 |
**26是本基组在非磁单块中的空间轨道数,不是占据电子数。**sdata此处没有自动乘上非磁自旋简并2;若需要自旋求和的全部单粒子态数,可将这份单块DOS乘2,但仍不能把全能窗积分当价电子数。Si2的8个价电子需结合占据和自旋简并统计。
费米能附近的dos-window.txt只覆盖−10到10eV,不包含所有高能轨道,因此不能用它核对全态数。完整DZP高能谱也受有限基组影响,不宜把远离目标能窗的峰直接作为精确实验谱。
5. 表格精度与独立检查#
CLI表格默认写六位有效数字。配套脚本保留原表格,并通过sisl的原生文件ArgumentParser接口取得完整精度DOS;再用原EIG的本征值、KP权重和独立Gaussian求和核对:两种展宽的最大差均约10⁻¹⁵。它同时检查CLI表格是否为同一数据的正确序列化。
运行完整包后:
cat analysis/SUMMARY.json
ls results/dos-fullprecision-*.txt
这解释了为什么直接从CLI文本重算的最后几位可能与表中完整精度值略有区别;不应为了末位差异改动原始输出。
需要轨道投影PDOS、Hamiltonian本征态等操作,可继续sisl DOS与PDOS和真实SIESTA文件读取。几何与密度网格见前一篇。本篇演示sdata对EIG的实际入口,不把它称为所有文件格式和stoolbox专用功能的完整覆盖。
命令入口也可参考sisl官方CLI说明,具体参数与行为以上述安装版0.16.4的帮助和实际文件为准。