VASP能带不可约表示与简并标签
用硅的实际波函数,在Γ、X、L点识别简并和对称性标签。
阅读本篇目录
能带图上几条线重合,可能与晶体对称性有关。不可约表示给这些电子态附上对称性标签,帮助整理简并、轨道混合和交叉的分析线索。本例不要求先学完整群论:先准备波函数,再提取标签,最后把标签与能量和简并数放在一起看。
1. 示例和软件#
采用鸢算科技集群实际计算的两原子金刚石硅:Fd-3m空间群,编号227;PBE PAW64、ENCUT=550 eV、EDIFF=1E-6、6×6×6 Gamma网格、12条能带,未包含SOC。晶胞和原子位置固定,使用既有结构优化结果。
VASP 6.6.1的V100版本采用NVHPC 25.3/CUDA 12.8构建。本篇分析前8条能带,在Γ、X、L三点使用IrRep 3.3.0与irreptables 3.1.0读取WAVECAR,不需要修改VASP源码。
这里的“3重简并”指未显式包含SOC时的空间表示维数,没有再乘一个自旋因子2。加入SOC后,需要使用自旋波函数和双群表示,标签也可能改变。
2. 按顺序操作#
下载附件,先建立项目独立分析环境:
bash setup.sh
脚本基于集群的pymatgen/2026.9.24环境建立本目录irrep-env,安装固定版本的IrRep及表示表。首次需要联网,后续可复用。脚本包含Python 3.11的文件命名语法兼容适配,不改变对称性计算算法;不会修改公共软件环境。
在calculations/si-wavefunctions准备合法的Si POTCAR,回到附件根目录提交:
sbatch run.sh
脚本先运行VASP生成自己的WAVECAR,再在三个目录中执行表示分析:ecut50、ecut100、ecut550。WAVECAR是必要输入,不能只拿一张能带图或EIGENVAL代替。
本例需要理解的分析设置为:
-code=vasp
-kpoints=1,112,130
-kpnames=GM,X,L
-IBend=8
-searchcell
-Ecut=50
kpoints中的数字是当前WAVECAR的k点顺序,从1开始,不是任意材料通用编号。这里分别对应原胞倒格坐标(0,0,0)、(0.5,0,0.5)、(0.5,0.5,0.5)。换网格、换晶胞或改变对称性约化后,必须重新核对。
searchcell用于匹配表示表的标准晶胞和原点约定。能带标签必须与同一个晶胞、原点和自旋约定比较。
注意:IrRep的Ecut=50 eV只控制后处理读取的平面波子集,不是把VASP的ENCUT从550 eV降到了50 eV。
3. 实算标签怎样读#
以下能量以Γ点的三重价带为0。每一行代表一个简并能级组:
| k点 | 相对能量 / eV | 简并维数 | IrRep标签 |
|---|---|---|---|
| Gamma | -11.8154 | 1 | GM1+ |
| Gamma | 0.0000 | 3 | GM5+ |
| Gamma | 2.5537 | 3 | GM4- |
| Gamma | 3.1332 | 1 | GM2- |
| X | -7.7467 | 2 | X1 |
| X | -2.7954 | 2 | X3 |
| X | 0.7487 | 2 | X1 |
| X | 9.9343 | 2 | X4 |
| L | -9.5364 | 1 | L2- |
| L | -6.8698 | 1 | L1+ |
| L | -1.1790 | 2 | L3- |
| L | 1.4651 | 1 | L1+ |
| L | 3.3460 | 2 | L3+ |
| L | 7.6992 | 1 | L2- |

例如,Γ点能量零点对应GM5+,维数为3,说明这个能级组包含三个空间简并态。标签中的正负号属于当前标准原点约定下的反演宇称信息,不能直接当作“这是某个原子的s或p轨道”。要研究原子轨道成分,可以同时阅读轨道投影能带教程。
三组后处理截断能50、100、550 eV得到相同标签和简并维数,特征标的最大差异为1.72e-05。这说明本例的标签对该后处理截断设置稳定;并不代替DFT能带本身的k网格、泛函和赝势检查。
4. 提取结果及使用边界#
任务结束后运行:
module load ase/3.29.0
python extract_irrep.py
得到IRREP-DATA.json,包括三组设置的能量、标签、简并维数和稳定性比较。原始分析文件在各ecut目录的irrep-output.json、irreps.dat和irrep.log;参考汇总在RESULTS.json。
本例只选择三个高对称点,并且前8条能带包含空带。因此不使用软件自动打印的拓扑汇总来判断硅的拓扑性质,也不能用这三个点确定完整带隙。研究拓扑指标时,应重新定义占据子空间、所需高对称点集合及SOC/磁性约定。
不同标签为讨论能带混合和交叉提供线索;是否保护一个交叉,还取决于该路径上实际保留的对称性。不要仅凭两条线接近,就把它命名为Weyl点或拓扑节点线。
参考与下载#
IrRep官方说明、官方代码与标准晶胞约定。本文能量和标签来自集群实际VASP波函数。
跟着输入文件操作#
下载本页附件后,先解压到单独目录。下面的目录名与附件一致。
unzip vasp-properties-batch29-*.zip -d vasp-example-29
cd vasp-example-29
cat README.txt
以下展开的是 calculations/si-wavefunctions 这一步的真实示例输入。多结构扫描、位移法和多阶段响应仍按正文顺序准备全部任务;改变材料时,结构、元素顺序和方法参数要一起修改。
cd calculations/si-wavefunctions
ls INCAR POSCAR KPOINTS
nano INCAR
INCAR:展开查看完整示例
SYSTEM = si-sp3
ENCUT = 550
PREC = Accurate
EDIFF = 1E-6
EDIFFG = -0.02
IBRION = -1
NSW = 0
ISIF = 2
ISMEAR = 0
SIGMA = 0.05
LREAL = .FALSE.
LASPH = .TRUE.
LWAVE = .TRUE.
LCHARG = .TRUE.
NELM = 150
ALGO = Normal
ISYM = -1
NBANDS = 12
POSCAR:展开查看完整示例
Si
1.0000000000000000
0.0000000000000000 2.7344629562984917 2.7344629562984917
2.7344629562984917 0.0000000000000000 2.7344629562984917
2.7344629562984917 2.7344629562984917 0.0000000000000000
Si
2
Direct
0.0000000000000000 0.0000000000000000 -0.0000000000000000
0.2500000000000000 0.2500000000000000 0.2500000000000000
KPOINTS:展开查看完整示例
Gamma mesh
0
Gamma
6 6 6
0 0 0
关键参数对照:
| 参数 | 本例值 | 使用时注意 |
|---|---|---|
ISIF |
2 |
决定原子、晶胞形状与体积的自由度;固定晶胞与晶胞优化要按本文目标选择。 |
IBRION |
-1 |
决定离子处理方式:−1为静态,0为分子动力学,2常用于优化;5/6等有限位移任务见正文。 |
NBANDS |
12 |
控制计算能带数;光谱、响应和Wannier窗口通常需要额外空带。 |
LCHARG |
.TRUE. |
控制是否写出CHGCAR;后续固定密度计算需要前一步保存该文件。 |
EDIFF |
1E-6 |
电子自洽收敛阈值,单位eV;本组通常为1E−6。 |
EDIFFG |
-0.02 |
负值以力作为离子优化停止条件;静态、有限位移和MD任务不能据此声称结构已优化。 |
POSCAR的元素顺序决定POTCAR拼接顺序。Direct表示分数坐标,Cartesian表示笛卡尔坐标;有Selective dynamics时,F/T还限制相应原子的移动。KPOINTS第二行为0通常使用自动网格;显式列表、Line-mode路径和均匀网格用途不同,不能互换来做同一种积分。
这个输入由附件根目录的总脚本组织。按正文为各阶段准备POTCAR后,返回附件根目录提交整个流程:
cd ../..
sbatch run.sh
squeue -u "$USER"
run.sh:整个流程的执行顺序
#!/bin/bash
#SBATCH --job-name=vasp-example
#SBATCH --partition=gpu-8v100-16g-hs
#SBATCH --nodes=1
#SBATCH --ntasks=1
#SBATCH --cpus-per-task=1
#SBATCH --gres=gpu:v100-16g:1
#SBATCH --time=04:00:00
#SBATCH --output=vasp-%j.log
set -eo pipefail
source /etc/profile
module purge
module load vasp/6.6.1-v100
ulimit -s unlimited
export OMP_NUM_THREADS=1 MKL_NUM_THREADS=1 OPENBLAS_NUM_THREADS=1
export OMPI_MCA_coll_hcoll_enable=0 NO_STOP_MESSAGE=1
study_dir="$SLURM_SUBMIT_DIR"
cd "$study_dir/calculations/si-wavefunctions"
mpirun --bind-to none -np 1 vasp_std > stdout.log 2>&1
grep -q 'aborting loop because EDIFF is reached' OUTCAR
for cutoff in 50 100 550; do
mkdir -p "$study_dir/ecut${cutoff}"
cd "$study_dir/ecut${cutoff}"
ln -sf ../calculations/si-wavefunctions/POSCAR POSCAR
ln -sf ../calculations/si-wavefunctions/WAVECAR WAVECAR
"$study_dir/irrep-env/bin/irrep" -code=vasp -Ecut=${cutoff} -IBend=8 -kpoints=1,112,130 -kpnames=GM,X,L -searchcell > irrep.log 2>&1
done
作业结束后,在实际VASP输出目录查看最后几步:
tail -n 12 OSZICAR
grep "EDIFF is reached" OUTCAR | tail -n 3
grep "reached required accuracy" OUTCAR
ls -lh CONTCAR
静态计算不要求出现离子优化完成提示;优化任务还要检查最终自由原子力。性质专用输出和后处理仍按正文执行。附件中的参考图与RESULTS文件不会随着你的新任务自动更新。
需要选择后处理软件时,可对照实算教程中的辅助工具表。