Graphite MBD binding energy: Difference between revisions
Vaspmaster (talk | contribs) |
Vaspmaster (talk | contribs) |
||
Line 74: | Line 74: | ||
To run this example, execute the <code>run.sh</code> bash-script: | 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 | |||
# | |||
# 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 | |||
</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. | 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. |
Revision as of 21:14, 24 June 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
References
Back to the main page.