|
|
Line 85: |
Line 85: |
| cp {{TAGBL|WAVECAR}} WAVECAR.DIAG | | cp {{TAGBL|WAVECAR}} WAVECAR.DIAG |
| cp {{TAGBL|WAVEDER}} WAVEDER.DIAG | | cp {{TAGBL|WAVEDER}} WAVEDER.DIAG |
|
| |
| == 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 WAVEDER.DIAG {{TAGBL|WAVEDER}}
| |
|
| |
| 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)
| |
|
| |
| {{TAGBL|SYSTEM}} = SrVO3 # system name
| |
| {{TAGBL|ISMEAR}} = 0 # Gaussian smearing
| |
| {{TAGBL|KPAR}} = 2 # parallelization of k-points in two groups
| |
| {{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|PRECFOCK}} = Fast # fast mode for FFTs
| |
| {{TAGBL|ENCUTGW}} = 100 # small energy cutoff for response function suffices for this tutorial
| |
| {{TAGBL|NOMEGA}} = 200 # large number of real frequency points for Hilbert transforms of W and self-energy
| |
|
| |
| 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
| |
|
| |
| === 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 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
| |
| cp WAVECAR.DIAG {{TAGBL|WAVECAR}}
| |
|
| |
| 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
| |
|
| |
| Restart VASP and make a copy of the wavefunction for post-processing
| |
| cp {{TAGBL|WAVECAR}} WAVECAR.HSE
| |
|
| |
| == Post-processing: Density of states and Band structure 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
| |
| *{{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
| |
|
| |
| and requires the apropriate {{TAG|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 {{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.sh DOSCAR.*
| |
| This requires gnuplot to be installed.
| |
|
| |
| === Band structure with <tt>wannier90</tt>===
| |
| The band structure can be calculated via Wannier interpolation using <tt>wannier90</tt> in the library mode
| |
| *{{TAG|INCAR}} (see INCAR.WAN)
| |
| {{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
| |
| Use the corresponding wannier90.win.XXX file as input for <tt>wannier90</tt>
| |
| 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 {{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
| |
|
| |
| :'''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 ===
| |
| VASP allows to interpolate the PBE band structure from the PBE charge density
| |
| cp CHGCAR.DIAG CHGCAR
| |
| cp WAVECAR.DIAG WAVECAR
| |
| by adapting the {{TAG|KPOINTS}} file as follows:
| |
| *{{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
| |
| The following {{TAGBL|INCAR}} file tells VASP to interpolate the band structure:
| |
| *{{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 # use CHGCAR file for interpolation
| |
| {{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
| |
| This PBE band structure 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.
| |
|
| |
|
| == CRPA Calculation == | | == CRPA Calculation == |
Task
Calculation of the Coulomb matrix elements Uijkl in the constrained Random Phase Approximation (CRPA) of SrVO3.
Performing a CRPA calculation with VASP is a 3-step procedure: a DFT groundstate calculation, a calculation to obtain a number of virtual orbitals, and the actual CRPA calculation itself.
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
CRPA Calculation
Calculate the CRPA interaction parameters for the t2g states by using the PBE wavefunction as input
cp WAVECAR.DIAG WAVECAR
cp WAVEDER.DIAG WAVEDER
Use following Wannier projection for the basis:
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
SYSTEM = SrVO3 # system name
ISMEAR = 0 # Gaussian smearing
NCSHMEM = 1 # switch off shared memory for chi
ALGO = CRPA # Switch on CRPA
NBANDS = 96 # CRPA needs many empty states
PRECFOCK = Fast # fast mode for FFTs
NTARGET_STATES = 1 2 3 # exclude wannier states 1 - 3 in screening
LWRITE_WANPROJ = .TRUE. # write wannier projection file
and run VASP. The CRPA interaction values can be found in the 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 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 WAVECAR
cp WAVEDER.DIAG 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:
SYSTEM = SrVO3 # system name
ISMEAR = 0 # Gaussian smearing
NCSHMEM = 1 # switch off shared memory for chi
ALGO = CRPAR # Switch on CRPA on imaginary axis
NBANDS = 96 # CRPA needs many empty states
PRECFOCK = Fast # fast mode for FFTs
NTARGET_STATES = 1 2 3 # exclude wannier states 1 - 3 in screening
NCRPA_BANDS = 21 22 23 # remove bands 21-23 in screening, currently required for space-time algo
NOMEGA = 12 # use 12 imaginary frequency points
NTAUPAR = 4 # distribute 12 time points into 4 groups
Run VASP and make a copy of the output file
cp OUTCAR OUTCAR.CRPAR
The resulting interactions are written for every imaginary frequency point to the 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 OUTCAR:
bare Hubbard U = 16.3485 0.0000
Back to the main page.