Header Ads Widget

Ab initio Calculations Using Q-Espresso Code

Last Posts

10/recent/ticker-posts

How to do structural and electronic calculations of Graphene-based materials

We will do calculations for 3 non bulk structures: graphene, graphane and graphene oxide

 

1. Graphene

a. Presentation 


 
• Graphene has a 2-atom hexagonal unit cell in the xy plane:

 ibrav=4, celldm(1)=4.6542890,
celldm(3)=some suitably large value, e.g. 3.0)
(remember: celldm(1) in Bohr radii, celldm(3)=c/a;
alternatively: A=2.463, C=7.389, in Å)

• Atomic positions:
 ATOMIC POSITIONS (alat)
C 0.000000 0.000000 0.000000
C 0.000000 0.5773503 0.000000

 or, equivalently:
 

ATOMIC POSITIONS (crystal) 

C 0.000000 0.000000 0.000000

C 0.333333 0.6666666 0.000000

• K-points: use a dense grid in the xy plane only, e.g.

K POINTS (automatic)
9 9 1 0 0 0
(a uniform 9×9×1 grid, centered on k = (0, 0, 0) )

• Run the scf calculation for graphene, file graphene.in (or graphene-alt.in), analyze
the output.

We need 2 files

graphene.in

&control
    calculation='scf',
    prefix='Graphene_1x1_PBE',
    pseudo_dir = './',        
    outdir='./OUT_GRAPHENE',
/
 &system
    ibrav= 4, celldm(1) =4.6542890, celldm(3)=3.0, nat= 2, ntyp= 1,
    ecutwfc =20, ecutrho =200,
    occupations='smearing', smearing='gaussian', degauss=0.01,
 /
 &electrons
    conv_thr = 1.0d-8
 /
ATOMIC_SPECIES
C  12.0107 C.pbe-rrkjus.UPF
ATOMIC_POSITIONS {alat}
C    0.000000    0.000000    0.000000
C    0.000000    0.5773503   0.000000
K_POINTS {automatic}
9 9 1 0 0 0

or graphene-alt.in

&control
    calculation='scf',
    prefix='Graphene_1x1_PBE',
    pseudo_dir = './',        
    outdir='./OUT_GRAPHENE',
/
 &system
    ibrav= 4, a=2.463, c=7.389, celldm(3)=3.0, nat= 2, ntyp= 1,
    ecutwfc =20, ecutrho =200,
    occupations='smearing', smearing='gaussian', degauss=0.01,
 /
 &electrons
    conv_thr = 1.0d-8
 /
ATOMIC_SPECIES
C  12.0107 C.pbe-rrkjus.UPF
ATOMIC_POSITIONS {crystal}
C    0.0000000    0.0000000    0.000000
C    0.3333333    0.6666666    0.000000
K_POINTS {automatic}
9 9 1 0 0 0


C.pbe-rrkjus.UPF

You can download the file using the following command
$ wget https://www.quantum-espresso.org/upf_files/C.pbe-rrkjus.UPF --no-check-certificate

 

b. SCF calculation

 

algerien1970@linux-wipm:~/abinitio/QE-tutorials/Graphene> pw.x < graphene.in |tee graphene.out

.

the Fermi energy is 0.9191 ev

! total energy = -22.76551949 Ry
estimated scf accuracy < 4.3E-10 Ry
smearing contrib. (-TS) = -0.00027861 Ry
internal energy E=F+TS = -22.76524088 Ry

The total energy is F=E-TS. E is the sum of the following terms:
one-electron contribution = -56.38824991 Ry
hartree contribution = 30.33115909 Ry
xc contribution = -7.01815938 Ry
ewald contribution = 10.31000931 Ry

convergence has been achieved in 6 iterations

Writing output data file ./OUT_GRAPHENE/Graphene_1x1_PBE.save/

init_run : 0.16s CPU 1.17s WALL ( 1 calls)
electrons : 0.80s CPU 0.94s WALL ( 1 calls)

Called by init_run:
wfcinit : 0.04s CPU 0.34s WALL ( 1 calls)
potinit : 0.04s CPU 0.25s WALL ( 1 calls)
hinit0 : 0.07s CPU 0.49s WALL ( 1 calls)

Called by electrons:
c_bands : 0.48s CPU 0.59s WALL ( 6 calls)
sum_band : 0.13s CPU 0.14s WALL ( 6 calls)
v_of_rho : 0.15s CPU 0.32s WALL ( 7 calls)
newd : 0.06s CPU 0.08s WALL ( 7 calls)
mix_rho : 0.01s CPU 0.01s WALL ( 6 calls)

Called by c_bands:
init_us_2 : 0.02s CPU 0.02s WALL ( 156 calls)
cegterg : 0.45s CPU 0.56s WALL ( 72 calls)

Called by *egterg:
cdiaghg : 0.04s CPU 0.40s WALL ( 343 calls)
h_psi : 0.39s CPU 0.41s WALL ( 355 calls)
s_psi : 0.01s CPU 0.01s WALL ( 355 calls)
g_psi : 0.01s CPU 0.01s WALL ( 271 calls)

Called by h_psi:
h_psi:calbec : 0.01s CPU 0.02s WALL ( 355 calls)
vloc_psi : 0.37s CPU 0.37s WALL ( 355 calls)
add_vuspsi : 0.01s CPU 0.01s WALL ( 355 calls)

General routines
calbec : 0.01s CPU 0.03s WALL ( 427 calls)
fft : 0.05s CPU 0.62s WALL ( 88 calls)
ffts : 0.00s CPU 0.04s WALL ( 13 calls)
fftw : 0.38s CPU 0.39s WALL ( 3992 calls)
interpolate : 0.01s CPU 0.05s WALL ( 7 calls)

Parallel routines

PWSCF : 1.03s CPU 2.85s WALL


This run was terminated on: 19:39: 3 27Dec2021

=------------------------------------------------------------------------------=
JOB DONE.
=------------------------------------------------------------------------------=


 

c. Band calculation

 Can you reproduce the “cones” of the band structure at the Fermi surface? The most difficult (?) part is to figure out a suitable path of k-points.

You may either use the “k-path selection” tool of xcrysden ...


.... or the SeeK-path web site at http://materialscloud.org/tools/seekpath:




We have used the site https://www.materialscloud.org/work/tools/seekpath

 

Click on browse and the input file graphene.in  and click on calculate my structure.

We will get the following picture


From the picture we  can choose the suitable path and the coordinates of points of high symmetry

 We have chosen the following path 


    0.0000000000      0.0000000000     0.0000000000  G
    0.3333333333     0.3333333333     0.0000000000   K
    0.5000000000     0.3333333333     0.0000000000   M
    0.0000000000     0.0000000000     0.0000000000   G

and we have the graphene.bands.in file for bands calculation

graphene.bands.in

&CONTROL
    calculation='bands',
    prefix='Graphene_1x1_PBE',
    pseudo_dir = './',        
    outdir='./OUT_GRAPHENE',
/
&SYSTEM
    ibrav= 4, celldm(1) =4.6542890, celldm(3)=3.0, nat= 2, ntyp= 1,
    ecutwfc =20, ecutrho =200,
    occupations='smearing', smearing='gaussian', degauss=0.01,
/
&ELECTRONS
        conv_thr = 1.0d-8
/
ATOMIC_SPECIES
C  12.0107 C.pbe-rrkjus.UPF
ATOMIC_POSITIONS {alat}
C 0.000000 0.000000 0.000000
C 0.000000 0.5773503 0.000000
K_POINTS {crystal_b}
4
# Gamma-K-M-Gamma
0.0000000000 0.0000000000 0.0000000000 20 ! G
0.3333333333 0.3333333333 0.0000000000 10 ! K
0.0000000000 0.5000000000 0.0000000000 17 ! M
0.0000000000 0.0000000000 0.0000000000 0 ! G

 

algerien1970@linux-wipm:~/abinitio/QE-tutorials/Graphene> pw.x < graphene.bands.in |tee graphene.bands.out

 .


Writing output data file ./OUT_GRAPHENE/Graphene_1x1_PBE.save/

init_run : 0.10s CPU 0.56s WALL ( 1 calls)
electrons : 0.23s CPU 0.72s WALL ( 1 calls)

Called by init_run:
wfcinit : 0.00s CPU 0.00s WALL ( 1 calls)
potinit : 0.03s CPU 0.11s WALL ( 1 calls)
hinit0 : 0.06s CPU 0.32s WALL ( 1 calls)

Called by electrons:
c_bands : 0.23s CPU 0.72s WALL ( 1 calls)
v_of_rho : 0.02s CPU 0.03s WALL ( 1 calls)
newd : 0.01s CPU 0.04s WALL ( 1 calls)

Called by c_bands:
init_us_2 : 0.00s CPU 0.00s WALL ( 5 calls)
cegterg : 0.21s CPU 0.32s WALL ( 7 calls)

Called by *egterg:
cdiaghg : 0.02s CPU 0.44s WALL ( 111 calls)
h_psi : 0.17s CPU 0.22s WALL ( 118 calls)
s_psi : 0.00s CPU 0.00s WALL ( 118 calls)
g_psi : 0.00s CPU 0.00s WALL ( 106 calls)

Called by h_psi:
h_psi:calbec : 0.01s CPU 0.05s WALL ( 118 calls)
vloc_psi : 0.16s CPU 0.16s WALL ( 118 calls)
add_vuspsi : 0.00s CPU 0.00s WALL ( 118 calls)

General routines
calbec : 0.00s CPU 0.05s WALL ( 118 calls)
fft : 0.01s CPU 0.24s WALL ( 12 calls)
ffts : 0.00s CPU 0.03s WALL ( 1 calls)
fftw : 0.14s CPU 0.15s WALL ( 1202 calls)
interpolate : 0.00s CPU 0.03s WALL ( 1 calls)
davcio : 0.00s CPU 0.00s WALL ( 10 calls)

Parallel routines

PWSCF : 0.48s CPU 2.30s WALL


This run was terminated on: 20:41: 4 28Dec2021

=------------------------------------------------------------------------------=
JOB DONE.
=------------------------------------------------------------------------------=


Now we plot the band structure using the following input file 

graphene.band2.in

&bands
! prefix must be the same as in the band calculation
prefix = 'Graphene_1x1_PBE'
! outdir must be the same as in the band calculation
outdir='OUT_GRAPHENE/'
filband = 'graphene-bands.dat'
lsym=.true.
/

 

algerien1970@linux-wipm:~/abinitio/QE-tutorials/Graphene> bands.x < graphene.band2.in |tee graphene.band2.out

.
.
the symmetry operations in each class and the name of the first element:

E 1

2C6 5 6

2C3 7 8

C2 2

3C2' 4 12 11

3C2'' 3 9 10

i 13

2S3 17 18

2S6 19 20

s_h 14

3s_d 16 24 23

3s_v 15 21 22


Band symmetry, D_6h(6/mmm) point group:

e( 1 - 1) = -18.66768 eV 1 --> A_1g
e( 2 - 2) = -6.72117 eV 1 --> A_2u
e( 3 - 4) = -2.15231 eV 2 --> E_2g
e( 5 - 5) = 3.76534 eV 1 --> A_1g
e( 6 - 6) = 7.13200 eV 1 --> A_2u
e( 7 - 8) = 9.25251 eV 2 --> E_1u

**************************************************************************

BANDS : 0.86s CPU 1.10s WALL


This run was terminated on: 20:58:45 28Dec2021

=------------------------------------------------------------------------------=
JOB DONE.
=------------------------------------------------------------------------------=


algerien1970@linux-wipm:~/abinitio/QE-tutorials/Graphene> plotband.x

     Input file > graphene-bands.dat
Reading 8 bands at 5 k-points
Range: -18.6690 13.6490eV Emin, Emax, [firstk, lastk] > -18.6690 13.6490
high-symmetry point: 0.0000 0.0000 0.1667 x coordinate 0.0000
high-symmetry point: 0.0000 0.0000 0.0000 x coordinate 0.1667
high-symmetry point: 0.3333 0.5774 0.0000 x coordinate 0.8333
high-symmetry point: 0.5000 0.6736 0.0000 x coordinate 1.0258
high-symmetry point: 0.0000 0.0000 0.0000 x coordinate 1.8647
output file (gnuplot/xmgr) > graphene-bands.plot
bands in gnuplot/xmgr format written to file graphene-bands.plot
output file (ps) >
stopping ...

 

gnuplot> plot "graphene-bands.dat.gnu" using 1:2 with lines

 


 

d. Graphene (3×3 supercell)

 • The previous calculation is periodic in the xy plane, has a slab geometry in the z direction, with a large vacuum space separating layers and a fictitious periodicity (no crystalline states).  We want now to build a supercell in the xy plane.

• Let us build a 3 × 3 supercell in the xy, file graphene3x3.in:


– Primitive lattice vectors a and b are multiplied by 3: celldm(1)=13.9628670
– Primitive lattice vector c remains the same, so: celldm(3)=1.0. If you want the same k-point grid, just use K POINTS (automatic) with 3 3 1 0 0 0 grid
– Reciprocal lattice vectors in the xy plane are divided by 3 (look at the output)
– There are 9 times the atoms of the original unit cell (that is, 18 atoms)
– There are ∼ 9 times more Kohn-Sham energies per k-point


• Provided that the two k-point grids are equivalent (please check!):


– The energy of the supercell E SC = 9E U C almost exactly (UC=unit cell)
– all SC (ki ) are (almost) equal to some U C (kj ) if kj refolds into ki


 

graphene3x3.in

&control
calculation='scf',
restart_mode='from_scratch',
prefix='Graphene_3x3_PBE',
tprnfor =.t.,
pseudo_dir = '../pseudo',
outdir='../tmp',
/
&system
ibrav= 4, celldm(1) =13.9628670, celldm(3)=1.0, nat=18, ntyp= 1,
ecutwfc =20, ecutrho =200 ,
occupations='smearing', smearing='gaussian', degauss=0.01,
/
&electrons
conv_thr = 1.0d-8
/
ATOMIC_SPECIES
C 12.0107 C.pbe-rrkjus.UPF
ATOMIC_POSITIONS {angstrom}
C 0.0000000000 0.0000000000 0.0
C -1.2314742556 2.1329759788 0.0
C -2.4629485111 4.2659519577 0.0
C 2.4629485111 0.0000000000 0.0
C 1.2314742556 2.1329759788 0.0
C 0.0000000000 4.2659519577 0.0
C 4.9258970222 0.0000000000 0.0
C 3.6944227666 2.1329759788 0.0
C 2.4629485111 4.2659519577 0.0
C 0.0000000000 1.4219840618 0.0
C -1.2314742556 3.5549600406 0.0
C -2.4629485111 5.6879360194 0.0
C 2.4629485111 1.4219840618 0.0
C 1.2314742556 3.5549600406 0.0
C 0.0000000000 5.6879360194 0.0
C 4.9258970222 1.4219840618 0.0
C 3.6944227666 3.5549600406 0.0
C 2.4629485111 5.6879360194 0.0
K_POINTS {automatic}
3 3 1 0 0 0

2. Graphane

 • Graphane is like graphene, with a H atom bound to each C atom, on opposite sides. You need to optimize atomic positions, i.e. find the minimum-energy structure (zero forces).

• File graphane.in is a modified version of graphene.in, with
–  calculation=’relax’ for structural optimization, new namelist IONS
–  ntyp=2 (2 types of atoms), nat=4 (4 atoms in the cell)
–  ATOMIC POSITION card with 4 initial positions (C-H distance ∼ 1 Å)
–  ATOMIC SPECIES card with 2 species of atoms and pseudopotentials


 • Run the structural optimization, analyze the output: it consists of several scf steps,
followed by calculation of forces and generation of new positions

Geometrical optimization

graphane.in

&control
calculation='relax',
restart_mode='from_scratch',
prefix='Graphane_1x1_PBE',
pseudo_dir = './',
outdir='./OUT_GRAPHANE',
/
&system
ibrav= 4, celldm(1) =4.6542890, celldm(3)=3, nat= 4, ntyp= 2,
ecutwfc =20, ecutrho =200 ,
occupations='smearing', smearing='gaussian', degauss=0.01,
/
&electrons
conv_thr = 1.0d-8
/
&ions
/
ATOMIC_SPECIES
C 12.0107 C.pbe-rrkjus.UPF
H 1.00007 H.pbe-rrkjus.UPF
ATOMIC_POSITIONS {crystal}
C 0.000000 0.000000 0.500000
C 0.333333 0.666667 0.500000
H 0.000000 0.000000 0.900000
H 0.333333 0.666667 0.900000
K_POINTS {automatic}
9 9 1 0 0 0

H.pbe-rrkjus.UPF

You can download the file using the following command
$ wget https://www.quantum-espresso.org/upf_files/H.pbe-rrkjus.UPF --no-check-certificate

 

algerien1970@linux-wipm:~/abinitio/QE-tutorials/Graphene> pw.x < graphane.in |tee graphane.out

 

.
Final energy             =     -24.9710814357 Ry

File ./OUT_GRAPHANE/Graphane_1x1_PBE.bfgs deleted, as requested
Begin final coordinates

ATOMIC_POSITIONS (crystal)
C -0.0000000000 -0.0000000000 0.4776008843
C 0.3333330000 0.6666670000 0.4776008843
H 0.0000000000 0.0000000000 0.9223991157
H 0.3333330000 0.6666670000 0.9223991157
End final coordinates

 

In the picture, the final structure of graphane, exhibiting “buckling”


 

 

3. Graphene oxide

 • The first stage of graphene oxidation is the formation of an epoxy bridge. Let us add an O atom on a 3 × 3 supercell of graphene


• File graphene3x3-O.in is a modified version of graphene3x3.in, with


–  calculation=’relax’ for structural optimization, new namelist IONS
–  ntyp=2 (2 types of atoms), nat=19 (19 atoms in the cell)
–  ATOMIC POSITION card with 19 initial positions (C-O distance ∼ 1.5 Å)
–  ATOMIC SPECIES card with 2 species of atoms and pseudopotentials

graphene3x3-O.in

&control
calculation='relax',
restart_mode='from_scratch',
prefix='Graphene_3x3_PBE',
pseudo_dir = './',
outdir='./OUT_GRAPHENE-OXIDE',
/
&system
ibrav= 4, celldm(1) =13.9628670, celldm(3)=1.0, nat=19, ntyp= 2,
ecutwfc =20, ecutrho =200 ,
occupations='smearing', smearing='gaussian', degauss=0.01,
/
&electrons
conv_thr = 1.0d-8
/
&ions
/
ATOMIC_SPECIES
C 12.0107 C.pbe-rrkjus.UPF
O 16.0 O.pbe-rrkjus.UPF
ATOMIC_POSITIONS {angstrom}
C 0.0000000000 0.0000000000 0.0
C -1.2314742556 2.1329759788 0.0
C -2.4629485111 4.2659519577 0.0
C 2.4629485111 0.0000000000 0.0
C 1.2314742556 2.1329759788 0.0
C 0.0000000000 4.2659519577 0.0
C 4.9258970222 0.0000000000 0.0
C 3.6944227666 2.1329759788 0.0
C 2.4629485111 4.2659519577 0.0
C 0.0000000000 1.4219840618 0.0
C -1.2314742556 3.5549600406 0.0
C -2.4629485111 5.6879360194 0.0
C 2.4629485111 1.4219840618 0.0
C 1.2314742556 3.5549600406 0.0
C 0.0000000000 5.6879360194 0.0
C 4.9258970222 1.4219840618 0.0
C 3.6944227666 3.5549600406 0.0
C 2.4629485111 5.6879360194 0.0
O 1.2314738 2.843966 1.305583
K_POINTS {gamma}
#K_POINTS {gamma}
# 3 3 1 0 0 0

O.pbe-rrkjus.UPF

You can download the file using the following command
$ wget https://www.quantum-espresso.org/upf_files/O.pbe-rrkjus.UPF --no-check-certificate
 

 

Optimization

algerien1970@linux-wipm:~/abinitio/QE-tutorials/Graphene> pw.x < graphene3x3-O.in |tee graphene3x3-O.out


End of BFGS Geometry Optimization

Final energy = -236.2942145486 Ry

File ./OUT_GRAPHENE-OXIDE/Graphene_3x3_PBE.bfgs deleted, as requested
Begin final coordinates

ATOMIC_POSITIONS (angstrom)
C -0.0141387556 -0.0147731860 -0.0282360482
C -1.2089532079 2.1119416582 -0.1131024095
C -2.4629485111 4.2844743445 -0.1739825240
C 2.4770872667 -0.0147731860 -0.0282360482
C 1.2314742556 2.1166372843 0.3097931951
C -0.0340310026 4.2619688384 0.0323396303
C 4.9258970222 0.0137360254 -0.0761888673
C 3.6719017189 2.1119416582 -0.1131024095
C 2.4969795137 4.2619688384 0.0323396303
C -0.0339942675 1.4258090758 0.0330698138
C -1.2089169528 3.5759082378 -0.1133471861
C -2.4629485111 5.6741593929 -0.0758605109
C 2.4969427786 1.4258090758 0.0330698138
C 1.2314742556 3.5712391458 0.3092911292
C -0.0141346412 5.7027097089 -0.0286293425
C 4.9258970222 1.4034582642 -0.1738379771
C 3.6718654638 3.5759082378 -0.1133471861
C 2.4770831523 5.7027097089 -0.0286293425
O 1.2314738000 2.8445570516 1.6221796395
End final coordinates


 Reference: Using PWscf: basics (write-up, exercises, March 2018)

 

For more information check the following links;

https://q-espresso-algerien1970.blogspot.com/p/dos-and-bandstructure-of-graphene.html 

https://github.com/pranabdas/espresso/tree/master/src/graphene

https://flex.phys.tohoku.ac.jp/english/pukiwiki-e/index.php?plugin=attach&refer=QuantumEspresso(Open)&openfile=QE-Tutorial.pdf 

https://github.com/28shambhavi/Quantum-Espresso-DOP/tree/master/Graphene

https://www.cp2k.org/exercises:2014_ethz_mmm:bs 

https://lists.quantum-espresso.org/pipermail/users/2016-November/036994.html

https://wiki.physics.udel.edu/phys824/Band_structure_of_graphene,_massless_Dirac_fermions_as_low-energy_quasiparticles,_Berry_phase,_and_all_that 

https://github.com/giovannipizzi/seekpath

Post a Comment

0 Comments