Bandstructure and CRPA of SrVO3: Difference between revisions

From VASP Wiki
No edit summary
No edit summary
 
(18 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Template:gw}}
{{Template:gw}}
== DFT, GW and HSE Calculation ==  
== Task ==  


=== DFT groundstate calculation ===
Calculation of the GW bandstructure of SrVO<sub>3</sub> using VASP and [http://www.wannier.org WANNIER90].
----
 
Performing a GW calculation with VASP is a 3-step procedure: a DFT groundstate calculation, a calculation to obtain a number of virtual orbitals, and the actual GW calculation itself.
In this example we will also see how the results of the GW calculation may be postprocessed with [http://www.wannier.org WANNIER90] to obtain the dispersion of the bands along the usual high symmetry directions in reciprocal space.
 
'''N.B.:''' This example involves quite a number of individual calculations.
The easiest way to run this example is to execute:
./doall.sh
 
And compare the output of the different steps (DFT, GW, HSE) by:
./plotall.sh
 
In any case, one can consider the <tt>doall.sh</tt> script to be an overview of the steps described below.
 
== DFT groundstate calculation ==
The first step is a conventional DFT (in this case PBE) groundstate calculation.
The first step is a conventional DFT (in this case PBE) groundstate calculation.


Line 54: Line 69:
and run VASP. If all went well, one should obtain a {{TAG|WAVECAR}} file containing the PBE wavefunction.
and run VASP. If all went well, one should obtain a {{TAG|WAVECAR}} file containing the PBE wavefunction.


=== Obtain DFT virtual states and long-wave limit ===
== Obtain DFT virtual orbitals and long-wave limit ==
Use following {{TAG|INCAR}} file to increase the number of virtual states and to determine the long-wave limit of the polarizability (stored in {{TAG|WAVEDER}}):
Use following {{TAG|INCAR}} file to increase the number of virtual states and to determine the long-wave limit of the polarizability (stored in {{TAG|WAVEDER}}):


Line 74: Line 89:
  cp {{TAGBL|CHGCAR}} CHGCAR.DIAG
  cp {{TAGBL|CHGCAR}} CHGCAR.DIAG


=== GW Calculation ===
=== The dielectric function ===
The actual GW calculation uses the PBE solution as a basis set:
 
As a bonus, VASP determines the frequency dependent dielectric function in the independent-particle (IP) picture and writes the result to the {{FILE|OUTCAR}} and {{FILE|vasprun.xml}} files.
In the {{FILE|OUTCAR}} you should search for
 
  frequency dependent IMAGINARY DIELECTRIC FUNCTION (independent particle, no local field effects)
 
and
 
  frequency dependent      REAL DIELECTRIC FUNCTION (independent particle, no local field effects)
 
To visualize the real and imaginary parts of the frequency dependent dielectric function (from the {{FILE|vasprun.xml}}) you may execute
 
./plotoptics2
 
== GW Step ==
The actual GW calculation requires a set of one-electron energies and eigenstates. In this case we use the PBE solution obtained from previous step:
  cp WAVECAR.DIAG {{TAGBL|WAVECAR}}
  cp WAVECAR.DIAG {{TAGBL|WAVECAR}}
  cp WAVEDER.DIAG {{TAGBL|WAVEDER}}
  cp WAVEDER.DIAG {{TAGBL|WAVEDER}}


The following {{TAG|INCAR}} file selects a so-called 'single shot' GW calculation:
The following {{TAG|INCAR}} file selects the 'single shot' GW calculation also known as G<sub>0</sub>W<sub>0</sub>:
*{{TAG|INCAR}} (see INCAR.GW0)
*{{TAG|INCAR}} (see INCAR.GW0)
   
   
Line 94: Line 124:
Restarting VASP will overwrite the present {{TAGBL|WAVECAR}} and {{TAGBL|vasprun.xml}} file. Make a copy them for later.  
Restarting VASP will overwrite the present {{TAGBL|WAVECAR}} and {{TAGBL|vasprun.xml}} file. Make a copy them for later.  
  cp {{TAGBL|WAVECAR}} WAVECAR.GW0
  cp {{TAGBL|WAVECAR}} WAVECAR.GW0
cp {{TAGBL|vasprun.xml}} vasprun.GW0.xml
=== The dielectric function ===
To extract the frequency dependent dielectric constant, both in the independent-particle picture as well as including local field effects (either in DFT or in the RPA) and plot the real and imaginary components using ''gnuplot'', execute
./plotchi


=== HSE Calculation ===
== HSE hybrid functional ==
To accelerate the electronic convergence it is wise to start the HSE calculation from the PBE solution:
 
To illustrate the kind of results one would obtain for SrVO<sub>3</sub> using the [[:Category:Hybrid_functionals|DFT/Hartree-Fock hybrid functional HSE]], without actually doing a full self-consistent calculation, we will recalculate the one-electron energies and DOS ({{TAG|ALGO}}=Eigenval) using the HSE functional with DFT orbitals as input
  cp WAVECAR.DIAG {{TAGBL|WAVECAR}}
  cp WAVECAR.DIAG {{TAGBL|WAVECAR}}
cp WAVEDER.DIAG {{TAGBL|WAVEDER}}
 
The HSE wavefunction can be obtained with following control file:
Use the following {{TAG|INCAR}} file:
*{{TAG|INCAR}} (see INCAR.HSE)
*{{TAG|INCAR}} (see INCAR.HSE)
   
   
Line 115: Line 153:
  cp {{TAGBL|WAVECAR}} WAVECAR.HSE
  cp {{TAGBL|WAVECAR}} WAVECAR.HSE


== CRPA Calculation ==
== Post-processing: Density of states and Bandstructure for PBE, GW and HSE ==
Calculate the CRPA interaction parameters for the t2g states by using the PBE wavefunction as input
cp WAVECAR.DIAG {{TAGBL|WAVECAR}}
cp WAVEDER.DIAG {{TAGBL|WAVEDER}}
Use following Wannier projection for the basis:
 
*{{TAG|wannier90.win}} (see wannier90.win.CRPA)
num_wann =    3
num_bands=  96
# PBE energy window of t2g states (band 21-23)
dis_win_min = 6.4
dis_win_max = 9.0
begin projections
  V:dxy;dxz;dyz
end projections
 
Copy this file to wannier90.win
cp wannier90.win.CRPA wannier90.win
 
And use following input file as
*{{TAG|INCAR}} (see INCAR.CRPA)
{{TAGBL|SYSTEM}} = SrVO3                        # system name
{{TAGBL|ISMEAR}} = 0                            # Gaussian smearing
{{TAGBL|NCSHMEM}} = 1                            # switch off shared memory for chi
{{TAGBL|ALGO}} = CRPA                            # Switch on CRPA
{{TAGBL|NBANDS}} = 96                            # CRPA needs many empty states
{{TAGBL|PRECFOCK}} = Fast                        # fast mode for FFTs
{{TAGBL|NTARGET_STATES}} = 1 2 3                # exclude wannier states 1 - 3 in screening
{{TAGBL|LWRITE_WANPROJ}} = .TRUE.                # write wannier projection file
 
and run VASP. The CRPA interaction values can be found in the {{TAG|OUTCAR}} file after following lines
screened Coulomb repulsion U_iijj between MLWFs:
including an averaged value:
screened Hubbard U =    3.3746  -0.0000
Make a copy of the output file
cp {{TAGBL|OUTCAR}} OUTCAR.CRPA
 
=== CRPA calculation on full imaginary frequency axis (optional) ===
To calculate the CRPA interaction for a set of imaginary frequency points use once again the PBE wavefunction as input
cp WAVECAR.DIAG {{TAGBL|WAVECAR}}
cp WAVEDER.DIAG {{TAGBL|WAVEDER}}
This step requires uses the WANPROJ file from previous step, no wannier90.win file is necessary.
 
Select the space-time CRPA algorithm with following file:
*{{TAG|INCAR}} (see INCAR.CRPAR)
{{TAGBL|SYSTEM}} = SrVO3                        # system name
{{TAGBL|ISMEAR}} = 0                            # Gaussian smearing
{{TAGBL|NCSHMEM}} = 1                            # switch off shared memory for chi
{{TAGBL|ALGO}} = CRPAR                          # Switch on CRPA on imaginary axis
{{TAGBL|NBANDS}} = 96                            # CRPA needs many empty states
{{TAGBL|PRECFOCK}} = Fast                        # fast mode for FFTs
{{TAGBL|NTARGET_STATES}} = 1 2 3                # exclude wannier states 1 - 3 in screening
{{TAGBL|NCRPA_BANDS}} = 21 22 23                # remove bands 21-23 in screening, currently required for space-time algo
{{TAGBL|NOMEGA}} = 12                            # use 12 imaginary frequency points
{{TAGBL|NTAUPAR}} = 4                            # distribute 12 time points into 4 groups
 
Run VASP and make a copy of the output file
cp {{TAGBL|OUTCAR}} OUTCAR.CRPAR
The resulting interactions are written for every imaginary frequency point to the {{TAG|OUTCAR}} file.
For instance, to extract the averaged on-site U interaction for each point enter following command
grep "screened Hubbard U" OUTCAR
resulting in following output
screened Hubbard U =    3.3798  -0.0000
screened Hubbard U =    3.4172  -0.0000
screened Hubbard U =    3.5169  -0.0000
screened Hubbard U =    3.7418  -0.0000
screened Hubbard U =    4.2069  -0.0000
screened Hubbard U =    5.0802  -0.0000
screened Hubbard U =    6.5456  -0.0000
screened Hubbard U =    8.6426  -0.0000
screened Hubbard U =  11.0815  -0.0000
screened Hubbard U =  13.3615  -0.0000
screened Hubbard U =  15.0636  -0.0000
screened Hubbard U =  16.0412  -0.0000
Here each line corresponds to an (increasing) imaginary frequency point.
The first line is the CRPA interaction at the lowest frequency point and is roughly the same as the value at 0 calculated in previous step.
The last line (interaction at the highest frequency point) approaches the bare Coulomb interaction in this basis, which is also written to the {{TAG|OUTCAR}}:
bare Hubbard U =  16.3485    0.0000
 
== Post-processing: Density of states and Band structure for PBE, GW and HSE ==


===  Density of States ===  
===  Density of States ===  
Line 227: Line 182:
This requires gnuplot to be installed.
This requires gnuplot to be installed.


===  Band structure with <tt>wannier90</tt>===  
===  Bandstructure with <tt>wannier90</tt>===  
The band structure can be calculated via Wannier interpolation using <tt>wannier90</tt> in the library mode
The bandstructure can be calculated via Wannier interpolation using <tt>wannier90</tt> in the library mode
*{{TAG|INCAR}} (see INCAR.WAN)
*{{TAG|INCAR}} (see INCAR.WAN)
  {{TAGBL|SYSTEM}} = SrVO3                        # system name
  {{TAGBL|SYSTEM}} = SrVO3                        # system name
Line 271: Line 226:
:'''N.B.:''' Most modern versions of <tt>gnuplot</tt> will respond with an error message unless you remove the first line of <tt>wannier90_band.gnu</tt> (some deprecated syntax issue).
:'''N.B.:''' Most modern versions of <tt>gnuplot</tt> will respond with an error message unless you remove the first line of <tt>wannier90_band.gnu</tt> (some deprecated syntax issue).


=== Alternative way to calculate the PBE band structure ===
=== Alternative way to calculate the PBE bandstructure ===
VASP allows to interpolate the PBE band structure from the PBE charge density
VASP allows to interpolate the PBE bandstructure from the PBE charge density
   cp CHGCAR.DIAG CHGCAR
   cp CHGCAR.DIAG CHGCAR
   cp WAVECAR.DIAG WAVECAR
   cp WAVECAR.DIAG WAVECAR
Line 292: Line 247:
  0.50000000  0.50000000  0.00000000  !M
  0.50000000  0.50000000  0.00000000  !M
  0.00000000  0.00000000  0.00000000  !G
  0.00000000  0.00000000  0.00000000  !G
The following {{TAGBL|INCAR}} file tells VASP to interpolate the band structure:
The following {{TAGBL|INCAR}} file tells VASP to interpolate the bandstructure:
*{{TAG|INCAR}} (see INCAR.BSTR)
*{{TAG|INCAR}} (see INCAR.BSTR)
  {{TAGBL|SYSTEM}} = SrVO3                        # system name
  {{TAGBL|SYSTEM}} = SrVO3                        # system name
Line 304: Line 259:
  {{TAGBL|EMIN}} = -20 ; {{TAGBL|EMAX}} = 20                # smallest/largest energy included in calculation
  {{TAGBL|EMIN}} = -20 ; {{TAGBL|EMAX}} = 20                # smallest/largest energy included in calculation
  {{TAGBL|NEDOS}} = 1000                          # sampling points for DOS
  {{TAGBL|NEDOS}} = 1000                          # sampling points for DOS
This PBE band structure and the Wannier-interpolated structures of the PBE, HSE and GW calculation can be compared via
This PBE bandstructure and the Wannier-interpolated structures of the PBE, HSE and GW calculation can be compared via
  ./plotbands.sh
  ./plotbands.sh
:'''N.B.:''' Mind that this approach works only for DFT wavefunctions, like PBE or LDA.


{{Template:gw}}
{{Template:gw}}

Latest revision as of 15:08, 8 April 2022

Task

Calculation of the GW bandstructure of SrVO3 using VASP and WANNIER90.


Performing a GW calculation with VASP is a 3-step procedure: a DFT groundstate calculation, a calculation to obtain a number of virtual orbitals, and the actual GW calculation itself. In this example we will also see how the results of the GW calculation may be postprocessed with WANNIER90 to obtain the dispersion of the bands along the usual high symmetry directions in reciprocal space.

N.B.: This example involves quite a number of individual calculations. The easiest way to run this example is to execute:

./doall.sh

And compare the output of the different steps (DFT, GW, HSE) by:

./plotall.sh

In any case, one can consider the doall.sh script to be an overview of the steps described below.

DFT groundstate calculation

The first step is a conventional DFT (in this case PBE) groundstate calculation.

SYSTEM  = SrVO3                        # system name
NBANDS = 36                            # small number  of bands
ISMEAR = 0                             # Gaussian smearing
EDIFF = 1E-8                           # high precision for groundstate calculation
KPAR = 2                               # parallelization of k-points in two groups

Copy the aforementioned file to INCAR:

cp INCAR.DFT INCAR

The POSCAR file describes the structure of the system:

SrVO3
3.84652  #cubic fit for 6x6x6 k-points
 +1.0000000000  +0.0000000000  +0.0000000000 
 +0.0000000000  +1.0000000000  +0.0000000000 
 +0.0000000000  +0.0000000000  +1.0000000000 
Sr V O
 1 1 3
Direct
 +0.0000000000  +0.0000000000  +0.0000000000 
 +0.5000000000  +0.5000000000  +0.5000000000 
 +0.5000000000  +0.5000000000  +0.0000000000 
 +0.5000000000  +0.0000000000  +0.5000000000 
 +0.0000000000  +0.5000000000  +0.5000000000

This file remains unchanged in the following.

The KPOINTS file describes how the first Brillouin zone is sampled. In the first step we use a uniform k-point sampling:

Automatically generated mesh
       0
Gamma
 4 4 4
 0 0 0

Mind: this is definitely not dense enough for a high-quality description of SrVO3, but in the interest of speed we will live with it. Copy the aforementioned file to KPOINTS:

cp KPOINTS.BULK KPOINTS

and run VASP. If all went well, one should obtain a WAVECAR file containing the PBE wavefunction.

Obtain DFT virtual orbitals and long-wave limit

Use following INCAR file to increase the number of virtual states and to determine the long-wave limit of the polarizability (stored in WAVEDER):

SYSTEM = SrVO3                         # system name
ISMEAR = 0                             # Gaussian smearing
KPAR = 2                               # parallelization of k-points in two groups
ALGO = Exact                           # exact diagonalization
NELM = 1                               # one electronic step suffices, since WAVECAR from previous step is present
NBANDS = 96                            # need for a lot of bands in GW
LOPTICS = .TRUE.                       # we need d phi/ d k  for GW calculations for long-wave limit

Restart VASP. At this stage it is a good idea to make a safety copy of the WAVECAR and WAVEDER files since we will repeatedly need them in the calculations that follow:

cp WAVECAR WAVECAR.DIAG
cp WAVEDER WAVEDER.DIAG

Also make a backup of the charge density for later:

cp CHGCAR CHGCAR.DIAG

The dielectric function

As a bonus, VASP determines the frequency dependent dielectric function in the independent-particle (IP) picture and writes the result to the OUTCAR and vasprun.xml files. In the OUTCAR you should search for

 frequency dependent IMAGINARY DIELECTRIC FUNCTION (independent particle, no local field effects)

and

 frequency dependent      REAL DIELECTRIC FUNCTION (independent particle, no local field effects)

To visualize the real and imaginary parts of the frequency dependent dielectric function (from the vasprun.xml) you may execute

./plotoptics2

GW Step

The actual GW calculation requires a set of one-electron energies and eigenstates. In this case we use the PBE solution obtained from previous step:

cp WAVECAR.DIAG WAVECAR
cp WAVEDER.DIAG WAVEDER

The following INCAR file selects the 'single shot' GW calculation also known as G0W0:

SYSTEM = SrVO3                         # system name
ISMEAR = 0                             # Gaussian smearing
KPAR = 2                               # parallelization of k-points in two groups
ALGO = GW0                             # GW with iteration in G, W kept on DFT level
NELM = 1                               # one electronic step suffices, since WAVECAR from previous step is present
NBANDS = 96                            # need for a lot of bands in GW
PRECFOCK = Fast                        # fast mode for FFTs
ENCUTGW = 100                          # small energy cutoff for response function suffices for this tutorial
NOMEGA = 200                           # large number of real frequency points for Hilbert transforms of W and self-energy

Restarting VASP will overwrite the present WAVECAR and vasprun.xml file. Make a copy them for later.

cp WAVECAR WAVECAR.GW0
cp vasprun.xml vasprun.GW0.xml

The dielectric function

To extract the frequency dependent dielectric constant, both in the independent-particle picture as well as including local field effects (either in DFT or in the RPA) and plot the real and imaginary components using gnuplot, execute

./plotchi

HSE hybrid functional

To illustrate the kind of results one would obtain for SrVO3 using the DFT/Hartree-Fock hybrid functional HSE, without actually doing a full self-consistent calculation, we will recalculate the one-electron energies and DOS (ALGO=Eigenval) using the HSE functional with DFT orbitals as input

cp WAVECAR.DIAG WAVECAR

Use the following INCAR file:

SYSTEM = SrVO3                         # system name
ISMEAR = 0                             # Gaussian smearing
KPAR = 2                               # parallelization of k-points in two groups
ALGO = Eigenval                        # calulate eigenvalues
NELM = 1                               # one electronic step suffices, since WAVECAR from previous step is present
NBANDS = 48                            # small number of bands suffice
PRECFOCK = Fast                        # fast mode for FFTs
LHFCALC = .TRUE.                       # switch on Hartree-Fock routines to calculate exact exchange
HFSCREEN = 0.2                         # HSE06 screening parameter

Restart VASP and make a copy of the wavefunction for post-processing

cp WAVECAR WAVECAR.HSE

Post-processing: Density of states and Bandstructure for PBE, GW and HSE

Density of States

The DOS of the PBE, GW and HSE solution can be calculated in a post-processing step with

SYSTEM = SrVO3                         # system name
ISMEAR = -5                            # Bloechl's tetrahedron method (requires at least 3x3x3 k-points)
ALGO = NONE                            # no electronic changes required
NELM = 1                               # one electronic step suffices, since WAVECAR from previous step is present
NBANDS = 48                            # number of bands used
EMIN = -20 ; EMAX = 20                 # smallest/largest energy included in calculation
NEDOS = 1000                           # sampling points for DOS
LORBIT = 11                            # calculate l-m decomposed DOS
LWAVE = .FALSE.                        # do not overwrite WAVECAR
LCHARG = .FALSE.                       # do not overwrite CHGCAR

and requires the apropriate WAVECAR file from one of the previous steps. Copy

cp WAVECAR.DIAG WAVECAR

or

cp WAVECAR.GW0 WAVECAR

or

cp WAVECAR.HSE WAVECAR

and restart VASP. The density of states is written to DOSCAR, make a copy of this file

cp DOSCAR DOSCAR.XXX

where XXX is either PBE, GW0 or HSE. Visualize the projected DOS for the V-t2g, V-eg and O-p states with the scriptfile

./plotdos.sh DOSCAR.*

This requires gnuplot to be installed.

Bandstructure with wannier90

The bandstructure can be calculated via Wannier interpolation using wannier90 in the library mode

SYSTEM = SrVO3                         # system name
ISMEAR = 0                             # Gaussian smearing
ALGO = NONE                            # no electronic changes required
NELM = 1                               # one electronic step suffices, since WAVECAR from previous step is present
NBANDS = 48                            # number of bands used
LWAVE = .FALSE.                        # do not overwrite WAVECAR
LCHARG = .FALSE.                       # do not overwrite CHGCAR
LWANNIER90_RUN = .TRUE.                # run wannier90 in library mode

Use the corresponding wannier90.win.XXX file as input for wannier90

cp wannier90.win.XXX wannier90.win

where XXX=PBE, GW0 or HSE and looks similar to

bands_plot = true

begin kpoint_path
R  0.50000000  0.50000000  0.50000000  G  0.00000000  0.00000000  0.00000000
G  0.00000000  0.00000000  0.00000000  X  0.50000000  0.00000000  0.00000000
X  0.50000000  0.00000000  0.00000000  M  0.50000000  0.50000000  0.00000000
M  0.50000000  0.50000000  0.00000000  G  0.00000000  0.00000000  0.00000000
end kpoint_path

# number of wannier states
num_wann =    3

# number of bloch bands
num_bands=   96

# GW energy window for t2g states
dis_win_min = 7.4
dis_win_max = 9.95

begin projections
V:dxy;dxz;dyz
end projections

Use the corresponding WAVECAR.XXX file as input

cp WAVECAR.XXX WAVECAR

and restart VASP. If all went well, the Vanadium t2g band dispersion thus obtained, may conveniently be visualized with gnuplot:

gnuplot -persist ./wannier90_band.gnu
N.B.: Most modern versions of gnuplot will respond with an error message unless you remove the first line of wannier90_band.gnu (some deprecated syntax issue).

Alternative way to calculate the PBE bandstructure

VASP allows to interpolate the PBE bandstructure from the PBE charge density

 cp CHGCAR.DIAG CHGCAR
 cp WAVECAR.DIAG WAVECAR

by adapting the KPOINTS file as follows:

Auto
15
Linemode
reciprocal
0.50000000  0.50000000  0.50000000   !R
0.00000000  0.00000000  0.00000000   !G

0.00000000  0.00000000  0.00000000   !G
0.50000000  0.00000000  0.00000000   !X

0.50000000  0.00000000  0.00000000   !X
0.50000000  0.50000000  0.00000000   !M 

0.50000000  0.50000000  0.00000000   !M
0.00000000  0.00000000  0.00000000   !G

The following INCAR file tells VASP to interpolate the bandstructure:

SYSTEM = SrVO3                         # system name
ISMEAR = 0                             # Gaussian smearing
EDIFF = 1E-7                           # tight convergence criterion
NBANDS = 36                            # 36 bands are sufficient
LWAVE = .FALSE.                        # do not overwrite WAVECAR
LCHARG = .FALSE.                       # do not overwrite CHGCAR
ICHARG = 11                            # use CHGCAR file for interpolation
LORBIT = 11                            # compute lm-decomposed states
EMIN = -20 ; EMAX = 20                 # smallest/largest energy included in calculation
NEDOS = 1000                           # sampling points for DOS

This PBE bandstructure and the Wannier-interpolated structures of the PBE, HSE and GW calculation can be compared via

./plotbands.sh
N.B.: Mind that this approach works only for DFT wavefunctions, like PBE or LDA.

Back to the main page.