top of page

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.
/

bottom of page