ABACUS 专题

ABACUS 矩阵到PYATB能带与PDOS

原生H/S矩阵、能带、总态密度、轨道投影和完整终端实操。

更新于 2026-10-29约 6 分钟阅读按任务与环境选择适用配置
阅读本篇目录

下载真实Si矩阵、8个PYATB条件、离线依赖和绘图脚本。解压进入附件根目录,先直接提取已有结果:

bash analyze.sh

首次运行会用附件内已固定版本的依赖,在本目录创建 venv,不修改公共环境;图在 reference/figures,数据在 reference/analysis。新解压目录重新执行全部PYATB计算:

sbatch submit.slurm

模板在分配资源中建立 work,顺序运行8个分析条件,再核对与画图。P100模板这里分配主机资源,实际PYATB使用1个CPU进程、1线程,不是GPU加速测试。它读取已有ABACUS矩阵,不重新运行DFT;已有 work 时请新解压,以免覆盖结果。

环境为PYATB1.1.2、mpi4py4.1.1、OpenMPI5.0.10,Python3.11及ASE3.29.0环境内的NumPy/SciPy用于后处理。离线轮子和哈希随附件提供。ABACUS矩阵来源为集群真实Si2计算:3.10.1、LCAO/PBE、80 Ry、8 Bohr DZP、26个NAO、8价电子、电子k网格2³;这些是有限采样教学结果,不能当作已经收敛的材料光谱。

1 ABACUS要先输出什么#

已有LCAO自洽输入中加入:

out_mat_hs2 1
out_mat_r 1

完成SCF后,H(R)、S(R)与r(R)分别在 data-HR-sparse_SPIN0.csr、data-SR-sparse_SPIN0.csr、data-rR-sparse.csr。H/S足以计算能带;本专题光学还需要r矩阵。赝势、轨道、晶胞、元素顺序和费米能必须来自同一套计算,不能混用不同目录的矩阵。

在已经准备好PYATB环境并分配资源的终端,官方工具可生成起始输入:

module load openmpi/5.0.10-cuda12.8
source venv/bin/activate
pyatb_input -i scf -o bands --band --knum 20

这里 scf 是你自己的ABACUS计算目录;工具会在该目录下建立输出目录。本例已实际使用该工具从真实SCF日志提取费米能7.2166391121 eV、4条占据带和8电子,并生成路径。附件的正式输入进一步明确采用Γ–X–W–L–Γ,保留每段20个插值间隔,共81点。不同工具的路径计数约定可能不同,以输出的实际k点为准。

2 看完整PYATB能带输入#

cat inputs/si-bands/Input
INPUT_PARAMETERS
{
    nspin                           1
    package                         ABACUS
    fermi_energy                    7.2166391121
    fermi_energy_unit               eV
    HR_route                        ../../matrices/data-HR-sparse_SPIN0.csr
    SR_route                        ../../matrices/data-SR-sparse_SPIN0.csr
    rR_route                        ../../matrices/data-rR-sparse.csr
    HR_unit                         Ry
    rR_unit                         Bohr
    max_kpoint_num                  2000
}

LATTICE
{
    lattice_constant                1.0
    lattice_constant_unit           Angstrom
    lattice_vector
    0.0  2.714679090192505  2.714679090192505
    2.714679090192505  0.0  2.714679090192505
    2.714679090192505  2.714679090192505  0.0
}

BAND_STRUCTURE
{
 wf_collect 1
 kpoint_mode line
 kpoint_num 5
 high_symmetry_kpoint
 0 0 0 20
 0.5 0 0.5 20
 0.5 0.25 0.75 20
 0.5 0.5 0.5 20
 0 0 0 1
 kpoint_label G,X,W,L,G
}

PYATB输入文件名是首字母大写的 Input;ABACUS的 INPUT 不可直接当作PYATB输入。矩阵路径是相对目录,HR_unit Ry、rR_unit Bohr分别指定原始单位;晶格向量已由输入工具转换为Å,不要再乘一次Bohr换算。8电子的非自旋极化体系对应4条占据带,nspin 1带有自旋简并。

若想在已完成本地环境准备的资源中单独运行一个输入,可按下列方式新建分析目录;这与整套模板二选一:

module load openmpi/5.0.10-cuda12.8
python3 -B setup.py
cd work/cases/si-bands
../../../venv/bin/pyatb

完成后能带在 Out/Band_Structure/band.dat,k坐标在 kpt.dat,原生绘图脚本是 plot_band.py。完整模板会为每个目录记录执行结果并继续后面的条件,建议首先使用 sbatch submit.slurm。

真实Si结构与原生PYATB能带

图显示前8条带,数值核对覆盖全部26条、全部81点:独立求解广义本征问题 H(k)C=S(k)CE 与原生输出最大差约5×10⁻⁹ eV。所有曲线使用同一个SCF费米能作零点,没有分别平移。C†SC、S矩阵正定性和非高对称点能带斜率也分别核对。这个一致性说明提取与单位相符,不代表稀疏SCF采样已满足材料收敛。

3 计算总态密度与轨道投影#

实际PDOS输入为:

cat inputs/si-pdos6/Input
INPUT_PARAMETERS
{
    nspin                           1
    package                         ABACUS
    fermi_energy                    7.2166391121
    fermi_energy_unit               eV
    HR_route                        ../../matrices/data-HR-sparse_SPIN0.csr
    SR_route                        ../../matrices/data-SR-sparse_SPIN0.csr
    rR_route                        ../../matrices/data-rR-sparse.csr
    HR_unit                         Ry
    rR_unit                         Bohr
    max_kpoint_num                  2000
}

LATTICE
{
    lattice_constant                1.0
    lattice_constant_unit           Angstrom
    lattice_vector
    0.0  2.714679090192505  2.714679090192505
    2.714679090192505  0.0  2.714679090192505
    2.714679090192505  2.714679090192505  0.0
}

PDOS
{
 stru_file STRU
 kpoint_mode mp
 mp_grid 6 6 6
 e_range -10 140
 de 0.025
 sigma 0.15
}

mp_grid 6 6 6是PYATB对矩阵模型的插值网格,不会补做新的6³电子SCF。sigma 0.15用于高斯展宽,其定义为 exp[-(ΔE/σ)²]/(σ√π),不能直接等同于标准差,也不是SCF的电子温度。

head -n 8 reference/cases/si-pdos6/Out/PDOS/TDOS.dat

TDOS.dat是能量/eV与总DOS;PDOS.dat按26个原子轨道保存投影。原生还生成 PDOS.xml 与绘图脚本。附件分析把同一套Si的s、p、d轨道分别求和,没有把投影当成独立概率。

实际DOS网格、展宽及轨道分解

Mulliken投影采用非正交基,个别轨道DOS可出现负值,本例最小单轨道值约−0.035 states/eV;原始符号保留,不进行裁零。26个轨道之和仍与总DOS一致。

本例能量窗口−10到140 eV未包含全部高能未占据态:6³网格的窗口积分约51.037个自旋配对态,而完整26轨道空间对应52态。这个差值来自窗口及原生选取方式,不应通过强制归一化改成52。实际作图聚焦费米能附近,完整窗口和边界高斯积分保留在结果文件。

4 最后得到什么#

bash analyze.sh

除原生能带/PDOS外,还得到独立矩阵比较、轨道求和、网格/展宽对照及高清图。自己的计算先保持H/S/r、STRU与轨道文件配套,再分别检查SCF参数和插值网格;增加PYATB网格不能弥补未收敛的原始SCF。原生工具用法可查PYATB官方安装与环境说明。

需要根据你的体系选择资源?联系讨论计算需求。实际可用软件与权限,以当前账户和运行环境为准。

查看配图

放大后可滚动查看细节,按 Esc 关闭。

100%查看原图 ↗