Graphite MBD binding energy: Difference between revisions

From VASP Wiki
No edit summary
 
(9 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Template:Bulk_systems}}
{{Template:Bulk_systems - Tutorial}}


== 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 66: Line 71:




== Calculation ==
== Running this example ==
 
To run this example, execute the <code>run.sh</code> bash-script:
<pre>
#
# 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


Semilocal DFT at the GGA level underestimates
#
long-range dispersion interactions.
# When vaspcmd is not available and $vasp_std,
In the case of graphite, PBE predicts the
# $vasp_gam, and/or $vasp_ncl are not set as environment
interlayer binding energy of ~1 meV/atom
# variables, you can specify them here
which is too small compared to the RPA
[ -z "`echo $vasp_std`" ] && vasp_std="mpirun -np 8 /path-to-your-vasp/vasp_std"
reference of 0.048 eV/atom
[ -z "`echo $vasp_gam`" ] && vasp_gam="mpirun -np 8 /path-to-your-vasp/vasp_gam"
<ref name="lebegue"/>.
[ -z "`echo $vasp_ncl`" ] && vasp_ncl="mpirun -np 8 /path-to-your-vasp/vasp_ncl"
In contrast, the pairwise correction scheme of
Tkatchenko and Scheffler, overestimates
this quantity strongly (0.083 eV/atom, see example
{{TAG|Graphite TS binding energy}}). In this example 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 {{TAG|Many-body dispersion energy}}).


Once again, the calculation is performed in two steps
#
(single-point calculations) in which the energy for
# The real work starts here
bulk graphite and for graphene are obtained.
#
The binding energy is computed automatically and it
is written in the file results.dat.


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 102: Line 131:
<ref name="lebegue">[https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.105.196401 S. Lebègue, J. Harl, Tim Gould, J. G. Ángyán, G. Kresse, and J. F. Dobson, Phys. Rev. Lett. 105, 196401 (2010).]</ref>
<ref name="lebegue">[https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.105.196401 S. Lebègue, J. Harl, Tim Gould, J. G. Ángyán, G. Kresse, and J. F. Dobson, Phys. Rev. Lett. 105, 196401 (2010).]</ref>
</references>
</references>
----
[[VASP_example_calculations|To the list of examples]] or to the [[The_VASP_Manual|main page]]
{{Template:Bulk_systems}}


[[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