qvasp绘制二维k平面能带
用真实石墨烯数据生成k平面网格、提取指定能带,并正确处理倒空间坐标。
阅读本篇目录
常规能带沿高对称线展示能量,二维k平面则能展示同一条带在一片倒空间区域的变化。本例使用鸢算科技集群实际石墨烯C2计算,先做9×9×1 SCF,再在qvasp生成的26个点上计算本征值,提取第4和第5条带。本例为非自旋极化;自旋极化数据应分别提取并核对两通道。
下载实际结构、本征值和绘图脚本。使用qvasp2.26、VASP6.5.1 GPU版;原始计算与相邻点之间的绘图连线要区分,5×5粗网格不能证明Dirac点或微小带隙已经收敛。
1 先完成SCF#
本例六角原胞晶格常数2.46 Å,z方向真空晶胞长20 Å,POSCAR如下:
C
1.000000000000000
2.4600000000000000 0.0000000000000000 0.0000000000000000
-1.2300000000000000 2.1304224933097191 0.0000000000000000
0.0000000000000000 0.0000000000000000 20.0000000000000000
C
2
Direct
0.0000000000000000 0.0000000000000000 0.5000000000000000
0.3333333333333357 0.6666666666666643 0.5000000000000000
0.00000000E+00 0.00000000E+00 0.00000000E+00
0.00000000E+00 0.00000000E+00 0.00000000E+00
用自己的普通SCF流程生成CHGCAR,并记录SCF费米能。实际SCF KPOINTS为:
Graphene SCF
0
Gamma
9 9 1
0 0 0
2 生成二维平面KPOINTS#
在新目录中操作,避免覆盖SCF的网格:
module load qvasp/2.26
qvasp -3dkpoints
依次输入中心 0 0、半宽 0.5、每方向点数 5:
0 0
0.5
5
这里的坐标是倒格矢分量。当前原生实现每方向步长为2×半宽/点数,本例规则网格取−0.5、−0.3、−0.1、0.1、0.3,另外附加一个(0.5,0.5,0)点。因此KPOINTS总数是26,不是简单的25点,也不是包含两端的5等分。
3 在固定电荷密度上计算#
将已经完成的SCF结果复制到平面计算目录:
cp ../scf/CONTCAR POSCAR
cp ../scf/CHGCAR .
cp ../scf/POTCAR .
cp ../scf/INCAR .
nano INCAR
保留ENCUT=450 eV、EDIFF=1E-6等实际设置,将电荷和输出改为:
ICHARG = 11
IBRION = -1
NSW = 0
LCHARG = .FALSE.
LWAVE = .FALSE.
使用刚生成的26点KPOINTS,经Slurm提交计算,正常结束后检查EIGENVAL。不要在普通登录会话直接启动VASP。
4 提取第4和第5条带#
qvasp -3dband
按提示先输入实际SCF费米能,再输入 4,生成 3d-band.dat。保存后再提取第5条带:
cp 3d-band.dat band4.dat
qvasp -3dband
cp 3d-band.dat band5.dat
两次必须采用同一SCF能量参考。本例原生表格包含5×5=25个规则点,不包含最后那个额外点;额外点仍是一次真实VASP计算,不能说它没有计算过。
5 对六角胞使用真实笛卡尔倒空间坐标#
原生表头采用各倒格矢分量乘2π/晶格长度的简化坐标。对正交胞更直观,对六角胞不能直接称为真正的kx、ky。应使用完整倒格矩阵:
module load ase/3.29.0
cp ../scf/OUTCAR SCF.OUTCAR
python plane.py .
资料包脚本读取实际EIGENVAL和POSCAR,用完整倒格矢变换,生成 plane-Cartesian.csv;26个真实点均保留。只使用资料包练习结果时,运行 python plane.py即可。

坐标单位Å⁻¹,能量相对同一个SCF费米能。增加网格密度、选择穿过关注特征的平面、检查空带数和计算收敛,才有助于分析真实的带形、交叉或有效质量;绘图插线本身不会增加计算精度。