Now let us compute the band.
&control
calculation = 'bands'
prefix='graphene',
tstress = .true.
tprnfor = .true.
pseudo_dir = './',
outdir='./work/'
disk_io='low'
wf_collect=.true.
/
&system
ibrav = 4,
celldm(1) = 4.602,
celldm(3) = 4,
nat = 2,
ntyp = 1,
ecutwfc = 30.0,
ecutrho = 150.0,
occupations = 'smearing'
smearing = 'm-p'
degauss = 0.01
nbnd = 16
/
&electrons
mixing_beta = 0.7
conv_thr = 1.0d-8
/
ATOMIC_SPECIES
C 12.0107 C.pz-van_ak.UPF
ATOMIC_POSITIONS {alat}
C 0.00 0.00 0.00
C 0.00 0.57735026918962576451 0.00
K_POINTS {tpiba_b}
4
0.00000000 0.00000000 0.00000000 20
0.66666667 0.00000000 0.00000000 20
0.50000000 0.28867500 0.00000000 20
0.00000000 0.00000000 0.00000000 20
To do it. we need to run pw.x with another input file, which will be called "graphene.band.in". The file looks similar to "graphene.scf.in" that we have used previously. The main difference is that the 'band' is used for the parameter "calculation". The number of band to be drawn is set to be 16 (nbnd=16). Here, K_POINTS is given differently. The points are specified in unit of 2π/a, where a is equal to the one given in celldm(1). Note that the points are described in cartesian coodinated.
Those points are connected by straight line and the band is calculated along the line. The integer given in the fourth column indicates that each line is divided by 20 mesh points and at those points the band is calculated.
Then, type
$mpirun -np 4 pw.x < graphene.band.in
We need another procedure. We have to run "bands.x", which is a program different from "pw.x" used above.
In this case, make the input file 'bands.in" from the 6 lines shown below. and run as
$mpirun -np4 bands.x < bands.in
to obtain information on the band in "graphene.band".
&bands
outdir = './work/',
prefix='graphene',
filband='graphene.band',
lsym=.true.
/