Graphite MBD binding energy: Difference between revisions

From VASP Wiki
 
(5 intermediate revisions by 2 users not shown)
Line 3: Line 3:
== Task ==
== Task ==


Determine the interlayer binding energy of graphite in its experimental structure using the MBD@rsSCS method of Tchatchenko ''et al.'' to account for van der Waals interactions.
In this example you will determine the interlayer binding energy of graphite in its experimental structure using the MBD@rsSCS method of Tchatchenko ''et al.'' to account for van der Waals interactions.
 
Semilocal DFT at the GGA level underestimates long-range dispersion interactions.
In the case of graphite, PBE predicts the interlayer binding energy of ~1 meV/atom which is too small compared to the RPA reference of 0.048 eV/atom <ref name="lebegue"/>.
In contrast, the pairwise correction scheme of Tkatchenko and Scheffler, overestimates  this quantity strongly (0.083 eV/atom, see the [[Graphite TS binding energy]] example).
Here we show that this problem can be eliminated by if many-body effects in dispersion energy are taken into account using the MBD@rsSCS method of Tchatchenko et al. (see [[Many-body dispersion energy]]).


== Input ==
== Input ==
Line 68: Line 73:
== Running this example ==
== Running this example ==


Once again, the calculation is performed in two steps
To run this example, execute the <code>run.sh</code> bash-script:
(single-point calculations) in which the energy for
<pre>
bulk graphite and for graphene are obtained.
#
The binding energy is computed automatically and it
# To run VASP this script calls $vasp_std
is written in the file results.dat.
# (or posibly $vasp_gam and/or $vasp_ncl).
# These variables can be defined by sourcing vaspcmd
. vaspcmd 2> /dev/null
 
#
# When vaspcmd is not available and $vasp_std,
# $vasp_gam, and/or $vasp_ncl are not set as environment
# variables, you can specify them here
[ -z "`echo $vasp_std`" ] && vasp_std="mpirun -np 8 /path-to-your-vasp/vasp_std"
[ -z "`echo $vasp_gam`" ] && vasp_gam="mpirun -np 8 /path-to-your-vasp/vasp_gam"
[ -z "`echo $vasp_ncl`" ] && vasp_ncl="mpirun -np 8 /path-to-your-vasp/vasp_ncl"
 
#
# The real work starts here
#


The computed value of 0.050 eV/A is now fairly close to
# Here the work starts
the RPA reference of 0.048 eV/atom
rm results.dat
<ref name="lebegue"/>.
 
drct=$(pwd)
 
for i in graphene graphite
do
  cd $drct/$i
  $vasp_std
done
 
cd $drct
 
# obtain total energy for graphite
en2=$(grep "free  ene" graphite/OUTCAR |tail -1|awk '{print $5}')
 
# obtain total energy for graphene
en1=$(grep "free  ene" graphene/OUTCAR |tail -1|awk '{print $5}')
 
# compute interlayer binding energy (eV/atom)
deltaE=$(echo print $en2/4 - $en1/2 |python)
 
echo "Binding energy (eV/atom): " $deltaE >results.dat
</pre>
 
Note that the calculation is performed in two steps (two separate single-point calculations) in which the energy for bulk graphite and for graphene are obtained.
The binding energy is computed automatically and it is written in the file <code>results.dat</code>.
(N.B.: for the latter ''python'' needs to be available.)
 
The computed value of 0.050 eV/A is now fairly close to the RPA reference of 0.048 eV/atom <ref name="lebegue"/>.


== Download ==
== Download ==
[http://www.vasp.at/vasp-workshop/examples/graphiteBinding_mbd.tgz graphiteBinding_mdb.tgz]
[[Media:GraphiteBinding mbd.tgz| graphiteBinding_mdb.tgz]]


== References ==
== References ==
Line 87: Line 133:
   
   
{{Template:Bulk_systems}}
{{Template:Bulk_systems}}
Back to the [[The_VASP_Manual|main page]].


[[Category:Examples]]
[[Category:Examples]]

Latest revision as of 13:25, 14 November 2019

Task

In this example you will determine the interlayer binding energy of graphite in its experimental structure using the MBD@rsSCS method of Tchatchenko et al. to account for van der Waals interactions.

Semilocal DFT at the GGA level underestimates long-range dispersion interactions. In the case of graphite, PBE predicts the interlayer binding energy of ~1 meV/atom which is too small compared to the RPA reference of 0.048 eV/atom [1]. In contrast, the pairwise correction scheme of Tkatchenko and Scheffler, overestimates this quantity strongly (0.083 eV/atom, see the Graphite TS binding energy example). Here we show that this problem can be eliminated by if many-body effects in dispersion energy are taken into account using the MBD@rsSCS method of Tchatchenko et al. (see Many-body dispersion energy).

Input

POSCAR

  • Graphite:
graphite
1.0
1.22800000 -2.12695839  0.00000000
1.22800000  2.12695839  0.00000000
0.00000000  0.00000000  6.71
4
direct
   0.00000000  0.00000000  0.25000000
   0.00000000  0.00000000  0.75000000
   0.33333333  0.66666667  0.25000000
   0.66666667  0.33333333  0.75000000

  • Graphene:
graphite
1.0
1.22800000 -2.12695839  0.00000000
1.22800000  2.12695839  0.00000000
0.00000000  0.00000000  20.
2
direct
   0.00000000  0.00000000  0.25000000
   0.33333333  0.66666667  0.25000000

INCAR

IVDW = 202           
LVDWEXPANSION =.TRUE. 
NSW = 1 
IBRION = 2
ISIF = 4
PREC = Accurate
EDIFFG = 1e-5
LWAVE = .FALSE.
LCHARG = .FALSE.
ISMEAR = -5
SIGMA = 0.01
EDIFF = 1e-6
ALGO = Fast
NPAR = 2

KPOINTS

  • Graphite:
Monkhorst Pack
0
gamma
16 16 8
0 0 0
  • Graphene:
Monkhorst Pack
0
gamma
16 16 1
0 0 0


Running this example

To run this example, execute the run.sh bash-script:

#
# To run VASP this script calls $vasp_std
# (or posibly $vasp_gam and/or $vasp_ncl).
# These variables can be defined by sourcing vaspcmd
. vaspcmd 2> /dev/null

#
# When vaspcmd is not available and $vasp_std,
# $vasp_gam, and/or $vasp_ncl are not set as environment
# variables, you can specify them here
[ -z "`echo $vasp_std`" ] && vasp_std="mpirun -np 8 /path-to-your-vasp/vasp_std"
[ -z "`echo $vasp_gam`" ] && vasp_gam="mpirun -np 8 /path-to-your-vasp/vasp_gam"
[ -z "`echo $vasp_ncl`" ] && vasp_ncl="mpirun -np 8 /path-to-your-vasp/vasp_ncl"

#
# The real work starts here
#

# Here the work starts
rm results.dat

drct=$(pwd)

for i in graphene graphite
do
  cd $drct/$i
  $vasp_std
done

cd $drct

# obtain total energy for graphite 
en2=$(grep "free  ene" graphite/OUTCAR |tail -1|awk '{print $5}') 

# obtain total energy for graphene
en1=$(grep "free  ene" graphene/OUTCAR |tail -1|awk '{print $5}')

# compute interlayer binding energy (eV/atom)
deltaE=$(echo print $en2/4 - $en1/2 |python)

echo "Binding energy (eV/atom): " $deltaE >results.dat

Note that the calculation is performed in two steps (two separate single-point calculations) in which the energy for bulk graphite and for graphene are obtained. The binding energy is computed automatically and it is written in the file results.dat. (N.B.: for the latter python needs to be available.)

The computed value of 0.050 eV/A is now fairly close to the RPA reference of 0.048 eV/atom [1].

Download

graphiteBinding_mdb.tgz

References