Bandstructure of SrVO3 in GW: Difference between revisions

From VASP Wiki
No edit summary
 
(39 intermediate revisions by 4 users not shown)
Line 1: Line 1:
{{Template:gw}}
{{Template:GW - Tutorial}}
 
== Task ==  
== Task ==


Calculation of the GW bandstructure of SrVO<sub>3</sub> using VASP and [http://www.wannier.org WANNIER90].
Calculation of the GW bandstructure of SrVO<sub>3</sub> using VASP and [http://www.wannier.org WANNIER90].
Line 19: Line 18:
In any case, one can consider the <tt>doall.sh</tt> script to be an overview of the steps described below.
In any case, one can consider the <tt>doall.sh</tt> script to be an overview of the steps described below.


== The DFT groundstate calculation and bandstructure with <tt>wannier90</tt>==
== DFT groundstate calculation ==
The first step is a conventional DFT (in this case PBE) groundstate calculation.


Everthing starts with a conventional DFT (in this case LDA) groundstate calculation:
*{{TAG|INCAR}} (see INCAR.DFT)
 
*{{TAG|INCAR}} (see INCAR.DFT)  
  {{TAGBL|SYSTEM}}  = SrVO3                       # system name
  {{TAGBL|System}}  = SrVO3
  {{TAGBL|NBANDS}} = 36                           # small number  of bands
  {{TAGBL|NBANDS}} = 36
  {{TAGBL|ISMEAR}} = 0                            # Gaussian smearing
  {{TAGBL|ISMEAR}} = -5
{{TAGBL|EMIN}} = -20 ; {{TAGBL|EMAX}} = 20 ; {{TAGBL|NEDOS}} = 1000  # usefull energy range for density of states
  {{TAGBL|EDIFF}} = 1E-8                          # high precision for groundstate calculation
  {{TAGBL|EDIFF}} = 1E-8                          # high precision for groundstate calculation
  {{TAGBL|KPAR}} = 2
  {{TAGBL|KPAR}} = 2                               # parallelization of k-points in two groups
{{TAGBL|LORBIT}} = 11
{{TAGBL|LWANNIER90_RUN}} = .TRUE.                #execute wannier90 in library mode


Copy the aforementioned file to {{TAG|INCAR}}:
Copy the aforementioned file to {{TAG|INCAR}}:
Line 37: Line 33:
  cp INCAR.DFT INCAR
  cp INCAR.DFT INCAR


*{{TAG|KPOINTS}}
The {{TAG|POSCAR}} file describes the structure of the system:
<pre>
Automatically generated mesh
      0
Gamma
4 4 4
0 0 0
</pre>
 
'''Mind''': this is definitely not dense enough for a high-quality description of SrVO<sub>3</sub>, but in the interest of speed we will live with it.


*{{TAG|POSCAR}}
*{{TAG|POSCAR}}
Line 64: Line 51:
  +0.0000000000  +0.5000000000  +0.5000000000
  +0.0000000000  +0.5000000000  +0.5000000000
</pre>
</pre>
The {{TAGBL|POSCAR}} can be visualized with [http://p4vasp.at p4v] or [http://www.jp-minerals.org/vesta/en/download.html VESTA] and remains unchanged in the following.


*wannier90.win (see wannier90.win.dft)
[[File:SrVO3_structure.png|340px]]
 
[http://www.wannier.org WANNIER90] takes its input from the file {{FILE|wannier90.win}}.
To construct Wannier functions for the Vanadium ''t<sub>2g</sub>'' manifold in SrVO<sub>3</sub>, and plot the dispersion of the associated bands along R-G-X-M, one may use the following settings:


The {{TAG|KPOINTS}} file describes how the first Brillouin zone is sampled.
In the first step we use a uniform k-point sampling:
*{{TAG|KPOINTS}} (see KPOINTS.BULK)
<pre>
<pre>
bands_plot = true
Automatically generated mesh
 
      0
begin kpoint_path
Gamma
R  0.50000000  0.50000000  0.50000000  G  0.00000000  0.00000000  0.00000000
  4 4 4
G  0.00000000  0.00000000  0.00000000  X  0.50000000  0.00000000  0.00000000
  0 0 0
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
 
num_wann =    3
 
num_bands=    3
 
 
# DFT energy window
dis_win_min = 6.4
dis_win_max = 9.0
 
begin projections
V:dxy;dxz;dyz
end projections
</pre>
</pre>


Copy the above to {{FILE|wannier90.win}}:
'''Mind''': this is definitely not dense enough for a high-quality description of SrVO<sub>3</sub>, but in the interest of speed we will live with it.
Copy the aforementioned file to {{TAG|KPOINTS}}:


  cp wannier90.win.dft wannier90.win
  cp KPOINTS.BULK KPOINTS


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


If all went well, the Vanadium ''t<sub>2g</sub>'' band dispersion thus obtained, may conveniently be visualized with ''gnuplot'':
== 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}}):


gnuplot -persist ./wannier90_band.gnu
*{{TAG|INCAR}} (see INCAR.PBE)
 
:'''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).
  {{TAGBL|SYSTEM}} = SrVO3                         # system name
 
  {{TAGBL|ISMEAR}} = 0                            # Gaussian smearing
'''Mind''': Here the eigenvalues have been shifted such that the Fermi level is a 0 eV.
  {{TAGBL|KPAR}} = 2                               # parallelization of k-points in two groups
 
  {{TAGBL|ALGO}} = Exact                           # exact diagonalization
=== Analysis of the DOS ===
  {{TAGBL|NELM}} = 1                               # one electronic step suffices, since WAVECAR from previous step is present
 
In the above we have set:
 
{{TAGBL|LORBIT}} = 11
 
Therefore, in addition to the total density-of-states (DOS), the {{FILE|DOSCAR}} file contains blocks of information with the site-projected ''lm''-decomposed DOS as well. The site-projected ''lm''-decomposed band character is written to the {{FILE|PROCAR}} file.
 
To plot the total DOS and the Vanadium ''t<sub>2g</sub>'' and ''e<sub>g</sub>'' partial-DOS using ''gnuplot'', execute the following command:
 
./plotdos
 
'''Mind''': Check the {{FILE|OUTCAR}} file for the position of the Fermi level. These DOSs have not been shifted such that the Fermi level is at 0 eV.
 
== Obtain DFT virtual orbitals ==
 
*{{TAG|INCAR}} (see INCAR.DIAG)
 
  {{TAGBL|System}} = SrVO3
   
  #{{TAGBL|ISMEAR}} = -5                          # does not work for LOPTICS=.TRUE.
  {{TAGBL|ISMEAR}} = 1 ; {{TAGBL|SIGMA}} = 0.2
{{TAGBL|EMIN}} = -20 ; {{TAGBL|EMAX}} = 20 ; {{TAGBL|NEDOS}} = 1000  # usefull energy range for density of states
   
  {{TAGBL|ALGO}} = Exact  ; {{TAGBL|NELM}} = 1               # exact diagonalization one step suffices
{{TAGBL|EDIFF}} = 1E-8                          # high precision for groundstate calculation
  {{TAGBL|NBANDS}} = 96                            # need for a lot of bands in GW
  {{TAGBL|NBANDS}} = 96                            # need for a lot of bands in GW
  {{TAGBL|LOPTICS}} = .TRUE.                      # we need d phi/ d k  for GW calculations
  {{TAGBL|LOPTICS}} = .TRUE.                      # we need d phi/ d k  for GW calculations for long-wave limit
     
{{TAGBL|KPAR}} = 2
 
Copy the aforementioned file to {{TAG|INCAR}}:
 
cp INCAR.DIAG INCAR
 
and restart VASP.
 
At this stage it is a good idea to make a safety copy of the {{FILE|WAVECAR}} and {{FILE|WAVEDER}} files since we will repeatedly need them in the calculations that follow:


  cp WAVECAR WAVECAR.DFT.96bands
Restart VASP.
  cp WAVEDER WAVEDER.DFT.96bands
At this stage it is a good idea to make a safety copy of the {{TAG|WAVECAR}} and {{TAG|WAVEDER}} files since we will repeatedly need them in the calculations that follow:
  cp {{TAGBL|WAVECAR}} WAVECAR.PBE
  cp {{TAGBL|WAVEDER}} WAVEDER.PBE
Also make a backup of the charge density for later:
cp {{TAGBL|CHGCAR}} CHGCAR.PBE


=== The dielectric function ===
=== The dielectric function ===  


The frequency dependent dielectric function in the independent-particle (IP) picture is written to the {{FILE|OUTCAR}} and {{FILE|vasprun.xml}} files.
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
In the {{FILE|OUTCAR}} you should search for


Line 161: Line 104:
   frequency dependent      REAL DIELECTRIC FUNCTION (independent particle, no local field effects)
   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
== 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:
  ./plotoptics2
cp WAVECAR.PBE {{TAGBL|WAVECAR}}
 
  cp WAVEDER.PBE {{TAGBL|WAVEDER}}
== The 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)
 
  {{TAGBL|System}} = SrVO3
  {{TAGBL|SYSTEM}} = SrVO3                         # system name
     
  {{TAGBL|ISMEAR}} = 0                            # Gaussian smearing
  {{TAGBL|ISMEAR}} = -5
  {{TAGBL|KPAR}} = 2                              # parallelization of k-points in two groups
  {{TAGBL|EMIN}} = -20 ; {{TAGBL|EMAX}} = 20 ; {{TAGBL|NEDOS}} = 1000  # usefull energy range for density of states
{{TAGBL|ALGO}} = GW0                            # GW with iteration in G, W kept on DFT level
   
{{TAGBL|NELM}} = 1                              # one electronic step suffices, since WAVECAR from previous step is present
  {{TAGBL|NBANDS}} = 96                            # need for a lot of bands in GW
  {{TAGBL|NBANDS}} = 96                            # need for a lot of bands in GW
   
  {{TAGBL|PRECFOCK}} = Fast                        # fast mode for FFTs
{{TAGBL|ALGO}} = GW0                            #
  {{TAGBL|ENCUTGW}} = 100                          # small energy cutoff for response function suffices for this tutorial
{{TAGBL|NELM}} = 1                              # one step so this is really G0W0
  {{TAGBL|NOMEGA}} = 200                          # large number of real frequency points for Hilbert transforms of W and self-energy
  {{TAGBL|PRECFOCK}} = Fast                        # select fast mode for FFT's
  {{TAGBL|ENCUTGW}} = 100                          # energy cutoff for response function
  {{TAGBL|NOMEGA}} = 200                          # metal, we need a lot of frequency points
   
{{TAGBL|KPAR}} = 2


Copy the aforementioned file to {{TAG|INCAR}}:
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|vasprun.xml}} vasprun.GW0.xml


cp INCAR.GW0 INCAR
== HSE hybrid functional ==


and restart VASP.
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.PBE {{TAGBL|WAVECAR}}


=== Analysis of the DOS and bandstructure with <tt>wannier90</tt> ===
Use the following {{TAG|INCAR}} file:
*{{TAG|INCAR}} (see INCAR.HSE)
{{TAGBL|SYSTEM}} = SrVO3                        # system name
{{TAGBL|ISMEAR}} = 0                            # Gaussian smearing
{{TAGBL|KPAR}} = 2                              # parallelization of k-points in two groups
{{TAGBL|ALGO}} = Eigenval                        # calulate eigenvalues
{{TAGBL|NELM}} = 1                              # one electronic step suffices, since WAVECAR from previous step is present
{{TAGBL|NBANDS}} = 48                            # small number of bands suffice
{{TAGBL|PRECFOCK}} = Fast                        # fast mode for FFTs
{{TAGBL|LHFCALC}} = .TRUE.                      # switch on Hartree-Fock routines to calculate exact exchange
{{TAGBL|HFSCREEN}} = 0.2                        # HSE06 screening parameter


*{{TAG|INCAR}} (see INCAR.NONE)
Restart VASP and make a copy of the wavefunction for post-processing
cp {{TAGBL|WAVECAR}} WAVECAR.HSE


{{TAGBL|System}}  = SrVO3
== Post-processing: Density of states and Bandstructure for PBE, GW and HSE ==
   
{{TAGBL|ISMEAR}} = -5
{{TAGBL|EMIN}} = -20 ; {{TAGBL|EMAX}} = 20 ; {{TAGBL|NEDOS}} = 1000  # usefull energy range for density of states
   
{{TAGBL|ALGO}} = None ; {{TAGBL|NELM}} = 1                # exact diagonalization one step suffices
{{TAGBL|NBANDS}} = 96                            # need for a lot of bands in GW
   
{{TAGBL|LORBIT}} = 11
   
{{TAGBL|LWANNIER90_RUN}} = .TRUE.


Again, copy the aforementioned file to {{TAG|INCAR}}:
===  Density of States ===
The DOS of the PBE, GW and HSE solution can be calculated in a post-processing step with
*{{TAG|INCAR}} (see INCAR.DOS)
{{TAGBL|SYSTEM}} = SrVO3                        # system name
{{TAGBL|ISMEAR}} = -5                            # Bloechl's tetrahedron method (requires at least 3x3x3 k-points)
{{TAGBL|ALGO}} = NONE                            # no electronic changes required
{{TAGBL|NELM}} = 1                              # one electronic step suffices, since WAVECAR from previous step is present
{{TAGBL|NBANDS}} = 48                            # number of bands used
{{TAGBL|EMIN}} = -20 ; {{TAGBL|EMAX}} = 20                # smallest/largest energy included in calculation
{{TAGBL|NEDOS}} = 1000                          # sampling points for DOS
{{TAGBL|LORBIT}} = 11                            # calculate l-m decomposed DOS
{{TAGBL|LWAVE}} = .FALSE.                        # do not overwrite WAVECAR
{{TAGBL|LCHARG}} = .FALSE.                      # do not overwrite CHGCAR


  cp INCAR.GW0 INCAR
and requires the apropriate {{TAG|WAVECAR}} file from one of the previous steps. Copy
cp WAVECAR.PBE WAVECAR
or
cp WAVECAR.GW0 WAVECAR
or
cp WAVECAR.HSE WAVECAR
and restart VASP. The density of states is written to {{TAG|DOSCAR}}, make a copy of this file
  cp {{TAGBL|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_comp.sh DOSCAR.???
This requires gnuplot to be installed.


And use the following input for <tt>wannier90</tt>:
[[File:DOS_SrVO3_comparison.png|480px]]
*wannier90.win (see wannier90.win.gw)
<pre>
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                                                                                                                                               
                                                                                                                                                             
num_wann =    3                                                                                                                                               
                                                                                                                                                             
num_bands=    3                                                                                                                                               
                                                                                                                                                             
exclude_bands : 1-20, 24-96                                                                                                                                   
                                                                                                                                                             
begin projections                                                                                                                                             
V:dxy;dxz;dyz                                                                                                                                                 
end projections
</pre>


and restart VASP.
===  Bandstructure with <tt>wannier90</tt>===
The bandstructure can be calculated via Wannier interpolation using <tt>wannier90</tt> in the library mode
*{{TAG|INCAR}} (see INCAR.WAN.XXX)
{{TAGBL|SYSTEM}} = SrVO3                        # system name
{{TAGBL|ISMEAR}} = 0                            # Gaussian smearing
{{TAGBL|ALGO}} = NONE                            # no electronic changes required
{{TAGBL|NELM}} = 1                              # one electronic step suffices, since WAVECAR from previous step is present
{{TAGBL|NBANDS}} = 48                            # number of bands used
{{TAGBL|LWAVE}} = .FALSE.                        # do not overwrite WAVECAR
{{TAGBL|LCHARG}} = .FALSE.                      # do not overwrite CHGCAR
{{TAGBL|LWANNIER90_RUN}} = .TRUE.                # run wannier90 in library mode
# As of vasp-6.4.3 define wannier90 interpolation from INCAR as follows:
# For older versions copy wannier90.win.XXX to wannier90.win and use INCAR.WAN as input for vasp
{{TAGBL|NUM_WANN}} = 3
{{TAGBL|WANNIER90_WIN}} = "
# use this energy window for t2g states for GW
dis_win_min = 7.4
dis_win_max = 9.95
begin projections
V:dxy;dxz;dyz
end projections
# plot bands
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
"


If all went well, the Vanadium ''t<sub>2g</sub>'' band dispersion thus obtained, may conveniently be visualized with ''gnuplot'':
{{NB|mind|Prior VASP.6.4.3 a proper wannier90.win.XXX file should be used instead.}}
Use the corresponding INCAR.WAN.XXX file as input for <tt>wannier90</tt>
cp INCAR.WAN.XXX INCAR
where XXX=PBE, GW0 or HSE.


Use the corresponding WAVECAR.XXX file as input
cp WAVECAR.XXX {{TAGBL|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
  gnuplot -persist ./wannier90_band.gnu


:'''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).


To plot the total DOS and the Vanadium ''t<sub>2g</sub>'' and ''e<sub>g</sub>'' partial-DOS using ''gnuplot'', execute the following command:
=== The preferred way to calculate the PBE bandstructure ===


./plotdos
Provided one has a self-consistent charge density ({{FILE|CHGCAR}}) file of sufficient quality (generated using a regular grid of k-points of sufficient density) one may read this charge density and keep it fixed ({{TAG|ICHARG}}=11).
For density functional calculations this charge density completely defines the Hamiltonian and using this Hamiltonian one may non-selfconsistently determine the orbitals and corresponding eigenenergies at arbitrary k-points.
This is a very convenient way to calculate the bandstructure.


'''Mind''': Check the {{FILE|OUTCAR}} file for the position of the Fermi level. These DOSs have not been shifted such that the Fermi level is at 0 eV.
First we copy the self-consistent charge density of one of our previous calculations:
 
  cp CHGCAR.PBE CHGCAR
  cp WAVECAR.PBE WAVECAR


=== The dielectric function ===
The bandstructure is conventionally plotted along lines of high symmetry in the 1st Brillouin zone.
 
The easiest way to specify these is by means of the so-called ''linemode'':
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
*{{TAG|KPOINTS}} (see KPOINTS.BSTR)
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


./plotchi
'''N.B.:''' using these ''k''-points for a ''self-consistent'' calculation ({{TAG|ICHARG}}<10) would be a very bad idea since such and irregular sampling of the 1st Brillouin zone will not yield sensible charge densities.


== A comparison to the HSE hybrid functional ==
Use the following {{TAGBL|INCAR}} file:
*{{TAG|INCAR}} (see INCAR.BSTR)
{{TAGBL|SYSTEM}} = SrVO3                        # system name
{{TAGBL|ISMEAR}} = 0                            # Gaussian smearing
{{TAGBL|EDIFF}} = 1E-7                          # tight convergence criterion
{{TAGBL|NBANDS}} = 36                            # 36 bands are sufficient
{{TAGBL|LWAVE}} = .FALSE.                        # do not overwrite WAVECAR
{{TAGBL|LCHARG}} = .FALSE.                      # do not overwrite CHGCAR
{{TAGBL|ICHARG}} = 11                            # read the charge density from the CHGCAR file and keep it fixed
{{TAGBL|LORBIT}} = 11                            # compute lm-decomposed states
{{TAGBL|EMIN}} = -20 ; {{TAGBL|EMAX}} = 20                # smallest/largest energy included in calculation
{{TAGBL|NEDOS}} = 1000                          # sampling points for DOS


To illustrate the kind of results one would obtain for SrVO<sub>3</sub> using the [[Hartree-Fock_and_HF/DFT_hybrid_functionals#range_separated|DFT/Hartree-Fock hybrid functional HSE]], without actually doing a full selfconsistent calculation, we will recalculate the one-electron energies and DOS ({{TAG|ALGO}}=Eigenval) using the HSE functional with DFT orbitals as input:
'''N.B.:''' Mind that this approach works only for density functional calculations (''e.g.'' PBE or LDA) and is not applicable to orbital dependent functionals (like hybrid functionals) or in case of GW calculations.


*{{TAG|INCAR}} (see INCAR.HSE)
This PBE bandstructure and the Wannier-interpolated structures of the PBE, HSE and GW calculation can be compared via
./plotbands.sh


{{TAGBL|System}}  = SrVO3
[[File:SrVO3 bandstructure.png|600px]]
   
{{TAGBL|ISMEAR}} = -5
{{TAGBL|EMIN}} = -20 ; {{TAGBL|EMAX}} = 20 ; {{TAGBL|NEDOS}} = 1000  # usefull energy range for density of states
   
{{TAGBL|EDIFF}} = 1E-8                          # high precision for groundstate calculation
   
{{TAGBL|KPAR}} = 2
{{TAGBL|LHFCALC}} = .TRUE.  ; {{TAGBL|HFSCREEN}} = 0.2  ; {{TAGBL|NBANDS}} = 48
{{TAGBL|PRECFOCK}} = Fast  ; {{TAGBL|NELM}} = 1
{{TAGBL|ALGO}} = Eigenval
   
{{TAGBL|LWAVE}} = .FALSE.                        # do not write the wave functions
   
{{TAGBL|LORBIT}} = 11 
   
{{TAGBL|LWANNIER90_RUN}} = .TRUE.


== Download ==
[[Media:SrVO3 GW band.zip| SrVO3_GW_band.zip]]


Copy the aforementioned file to {{TAG|INCAR}}:
{{Template:GW - Tutorial}}
 
cp INCAR.HSE INCAR
 
Use the following [http://www.wannier.org WANNIER90] input:
*wannier90.win (see wannier90.win.hse)
<pre>
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
 
num_wann =    3
 
num_bands=    3
 
exclude_bands : 1-20, 24-48
 
begin projections
V:dxy;dxz;dyz
end projections
</pre>
 
Copy the above to {{FILE|wannier90.win}}:
 
cp wannier90.win.hse wannier90.win
 
*{{TAG|WAVECAR}}
'''Mind''': This calculation (and the ones following below) needs to restart from a set of converged DFT wave functions, therefore:
 
cp WAVECAR.DFT.96bands WAVECAR
 
and run vasp.
 
If all went well, the Vanadium ''t<sub>2g</sub>'' band dispersion thus obtained, may conveniently be visualized with ''gnuplot'':
 
gnuplot -persist ./wannier90_band.gnu
 
:'''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).
 
'''Mind''': Here the eigenvalues have been shifted such that the Fermi level is a 0 eV.
 
To plot the total DOS and the Vanadium ''t<sub>2g</sub>'' and ''e<sub>g</sub>'' partial-DOS using ''gnuplot'', execute the following command:
 
./plotdos
 
'''Mind''': Check the {{FILE|OUTCAR}} file for the position of the Fermi level. These DOSs have not been shifted such that the Fermi level is at 0 eV.
 
== Download ==
[http://www.vasp.at/vasp-workshop/examples/SrVO3_GW_band.tgz SrVO3_GW_band.tgz]
{{Template:gw}}


Back to the [[The_VASP_Manual|main page]].
Back to the [[The_VASP_Manual|main page]].


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

Latest revision as of 10:44, 12 June 2024

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

The POSCAR can be visualized with p4v or VESTA and 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.PBE
cp WAVEDER WAVEDER.PBE

Also make a backup of the charge density for later:

cp CHGCAR CHGCAR.PBE

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)

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.PBE WAVECAR
cp WAVEDER.PBE 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

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.PBE 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.PBE 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_comp.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

  • INCAR (see INCAR.WAN.XXX)
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

# As of vasp-6.4.3 define wannier90 interpolation from INCAR as follows:
# For older versions copy wannier90.win.XXX to wannier90.win and use INCAR.WAN as input for vasp
NUM_WANN = 3
WANNIER90_WIN = "

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

begin projections
V:dxy;dxz;dyz
end projections

# plot bands
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
"


Mind: Prior VASP.6.4.3 a proper wannier90.win.XXX file should be used instead.

Use the corresponding INCAR.WAN.XXX file as input for wannier90

cp INCAR.WAN.XXX INCAR

where XXX=PBE, GW0 or HSE.

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).

The preferred way to calculate the PBE bandstructure

Provided one has a self-consistent charge density (CHGCAR) file of sufficient quality (generated using a regular grid of k-points of sufficient density) one may read this charge density and keep it fixed (ICHARG=11). For density functional calculations this charge density completely defines the Hamiltonian and using this Hamiltonian one may non-selfconsistently determine the orbitals and corresponding eigenenergies at arbitrary k-points. This is a very convenient way to calculate the bandstructure.

First we copy the self-consistent charge density of one of our previous calculations:

 cp CHGCAR.PBE CHGCAR
 cp WAVECAR.PBE WAVECAR

The bandstructure is conventionally plotted along lines of high symmetry in the 1st Brillouin zone. The easiest way to specify these is by means of the so-called linemode:

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

N.B.: using these k-points for a self-consistent calculation (ICHARG<10) would be a very bad idea since such and irregular sampling of the 1st Brillouin zone will not yield sensible charge densities.

Use the following INCAR file:

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                            # read the charge density from the CHGCAR file and keep it fixed
LORBIT = 11                            # compute lm-decomposed states
EMIN = -20 ; EMAX = 20                 # smallest/largest energy included in calculation
NEDOS = 1000                           # sampling points for DOS

N.B.: Mind that this approach works only for density functional calculations (e.g. PBE or LDA) and is not applicable to orbital dependent functionals (like hybrid functionals) or in case of GW calculations.

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

./plotbands.sh

Download

SrVO3_GW_band.zip

Back to the main page.