本文以氧化锌ZnO为例,计算其能带结构。能带结构的计算需要两个步骤,第一步,进行基态(gs)计算,第二步,进行非占据态(unocc)计算。
基态计算的inp文件如下:
CalculationMode = gs
FromScratch = yes
PeriodicDimensions = 3
ParKPoints = auto
PseudopotentialSet = pseudodojo_pbe
ExperimentalFeatures=yes
BoxShape = parallelepiped
%Spacing
0.14 | 0.14 | 0.14 #单位是Bohr
%
%LatticeVectors
1.0 | 0.0 | 0.0
-0.5 | sqrt(3)/2 | 0.0
0.0 | 0.0 | 1.0
%
a = 3.289*angstrom
b = 5.307*angstrom
%LatticeParameters
a | a | b
%
%ReducedCoordinates
"O" | 1/3 | 2/3 | 0.379214
"O" | 2/3 | 1/3 | 0.879214
"Zn" | 1/3 | 2/3 | 0.000000
"Zn" | 2/3 | 1/3 | 0.500000
%
%KPointsGrid
12 | 12 | 7
%
KPointsUseSymmetries = yes
Output = dos #输出态密度
OutputFormat = xcrysden
基态计算完成后再进行非占据态(unoccupied)计算,其inp文件如下:
CalculationMode = unocc
FromScratch = yes
PeriodicDimensions = 3
ExperimentalFeatures=yes
PseudopotentialSet = pseudodojo_pbe
ParKPoints = auto
BoxShape = parallelepiped
%Spacing
0.14 | 0.14 | 0.14
%
%LatticeVectors
1.0 | 0.0 | 0.0
-0.5 | sqrt(3)/2 | 0.0
0.0 | 0.0 | 1.0
%
a = 3.289*angstrom
b = 5.307*angstrom
%LatticeParameters
a | a | b
%
%ReducedCoordinates
"O" | 1/3 | 2/3 | 0.379214
"O" | 2/3 | 1/3 | 0.879214
"Zn" | 1/3 | 2/3 | 0.000000
"Zn" | 2/3 | 1/3 | 0.500000
%
%KPointsPath #k点扫描路径,见“注1”
14 | 10 | 20 | 14 | 14 | 10 #标明各个点之间的路径需要取样几个k点
0.0 | 0.0 | 0.0 # Gamma point #所以有7个点的坐标,只有6段路径需要标明取样点数
0.0 | 0.5 | 0.0 # M point
-1/3| 2/3 | 0.0 # K point
0.0 | 0.0 | 0.0 # Gamma point
0.0 | 0.0 | 0.5 # A point
0.0 | 0.5 | 0.5 # L point
-1/3| 2/3 | 0.5 # H point
%
KPointsUseSymmetries = no #停止使用对称性
ExtraStates = 8 #额外态设为8个,即考虑最低的8个导带,对于所需要的带隙附近结构足够了
ExtraStatesToConverge = 6 #额外态的收敛数目设为6个,越高的额外态越难收敛,
#6个额外态收敛足矣,省时间
计算完成后,在./static文件夹内会出现 “bandstructure” 文件,其内包含有能带结构数据,通过数据处理将其可视化。
注1:布里渊区中的高对称点