In this tutorial how to draw a band structure is described by taking gold (Au) in the face centered cubic structure as an example
First, perform an SCF calculation to get the charge density.
&control calculation='scf' restart_mode='from_scratch', pseudo_dir = '/home/ikutaro/QE/pseudo/' outdir='./tmp' prefix='au' tprnfor = .true. tstress = .true. forc_conv_thr = 1.d-4 nstep=10000 / &system ibrav = 2 A = 4.00 !A = 4.079 nat = 1 ntyp = 1 ecutwfc = 40.0 ecutrho = 400.0 occupations='smearing' smearing='mp' degauss=0.01 nbnd=24 !input_dft='vdW-DF2-B86R' !assume_isolated = 'esm', esm_bc='bc1' / &electrons diagonalization='cg' conv_thr = 1.0e-12 mixing_beta = 0.1 / &ions ion_dynamics='bfgs' / &cell cell_dynamics='bfgs' / ATOMIC_SPECIES Au 0.0000 au_pbe_v1.uspp.F.UPF ATOMIC_POSITIONS (crystal) Au 0.000000000000 0.000000000000 0.00000000000 K_POINTS (automatic) 16 16 16 0 0 0
mpirun -np 8 < au_scf.in > au_scf.out
For the cell optimization, use the input file like follows
&control calculation='vc-relax' restart_mode='from_scratch', pseudo_dir = '/home/ikutaro/QE/pseudo/' outdir='./tmp' prefix='au' tprnfor = .true. tstress = .true. forc_conv_thr = 1.d-4 nstep=10000 / &system ibrav = 2 A = 4.00 !A = 4.079 nat = 1 ntyp = 1 ecutwfc = 40.0 ecutrho = 400.0 occupations='smearing' smearing='mp' degauss=0.01 nbnd=24 !input_dft='vdW-DF2-B86R' !assume_isolated = 'esm', esm_bc='bc1' / &electrons diagonalization='cg' conv_thr = 1.0e-12 mixing_beta = 0.1 / &ions ion_dynamics='bfgs' / &cell cell_dynamics='bfgs' / ATOMIC_SPECIES Au 0.0000 au_pbe_v1.uspp.F.UPF ATOMIC_POSITIONS (crystal) Au 0.000000000000 0.000000000000 0.00000000000 K_POINTS (automatic) 16 16 16 0 0 0Here we use default values for the pressure tolerance.
mpirun -np 8 < au_scf.in > au_scf.out
Having connfirmed the convergence of the SCF calculation, we are ready to perform the band structure calculation. Here is an input file for the band structure calculation.
&control calculation='bands' restart_mode='from_scratch', pseudo_dir = '/home/ikutaro/QE/pseudo/' outdir='./tmp' prefix='au' tprnfor = .true. tstress = .true. forc_conv_thr = 1.d-4 nstep=10000 / &system ibrav = 2 A = 4.00 !A = 4.079 nat = 1 ntyp = 1 ecutwfc = 40.0 ecutrho = 400.0 occupations='smearing' smearing='mp' degauss=0.01 nbnd=24 !input_dft='vdW-DF2-B86R' !assume_isolated = 'esm', esm_bc='bc1' / &electrons diagonalization='cg' conv_thr = 1.0e-12 mixing_beta = 0.1 / &ions ion_dynamics='bfgs' / &cell cell_dynamics='bfgs' / ATOMIC_SPECIES Au 0.0000 au_pbe_v1.uspp.F.UPF ATOMIC_POSITIONS (crystal) Au 0.000000000000 0.000000000000 0.00000000000 K_POINTS tpiba_b 5 0.0 0.0 0.0 50.0 1.0 0.0 0.0 50.0 1.0 0.5 0.0 50.0 0.5 0.5 0.5 50.0 0.0 0.0 0.0 0.0
In this example, we draw a band structure along
In the cartesian coordinate, and in the following how to specify the k-points along the symmetry points.
The KPOINTS card starts like
K_POINTS tpiba_b
If you want to use the k-points in the unit of the reciprocal lattice vector, use
K_POINTS crystal_b
Then set the number of high symmetry points. In this case
5
The number is followed by the k-points and the mesh (number of intervals)
0.0 0.0 0.0 50.0 1.0 0.0 0.0 50.0 1.0 0.5 0.0 50.0 0.5 0.5 0.5 50.0 0.0 0.0 0.0 0.0
which define the segments of the high symmetry line in the Brillouin zone. In this example, total number of k-points is 50+50+50+50+1=201. In general, something like
K_POINTS tpiba_b | crystal_b NKSEG K1X K1Y K1Z NKMESH1 K2X K2Y K2Z NKMESH2 ... KNX KNY KNZ NKMESHN
and the i-th k-point in the first segment (for instance) is determined by
kx(i) = (K2X -K1X) * (i-1) / NKMESH1
ky(i) = (K2Y - K1Y) * (i-1) / NKMESH1
kz(i) = (K2Z - K1Z) * (i-1) / NKMESH1
NOTE: To define the high symmetry points and lines, XCrySDen can be used. The SeeK-path is also useful.
mpirun -np 8 < au_bands.in > au_bands.outNOTE: Make sure you use the same number of cores/cpus as that for the SCF calculation.
&bands outdir='./tmp' prefix='au' filband='au_band' lsym=.true. /
mpirun -np 8 bands.x < pp_bands.in > pp_bands.outYou will obtain
$ gnuplot $ > plot 'au_band.gnu'If you want to set the energy origin to the Fermi level, it may be like
$ > plot 'au_and.gnu' using ($1):($2-17.1096)The value "17.1096" is the the Fermi level, taken from the previsou SCF calculation. The band structure of gold thus obtained can be visualized as follows: To generate the above figure, "band.gp" as attached was used.