CRPA of SrVO3: Difference between revisions

From VASP Wiki
(40 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{Template:gw}}
{{Template:GW - Tutorial}}
The following tutorial describes how to perform CRPA calculations, which is available as of VASP 6.
== Task ==  
== Task ==  
 
Calculation of the Coulomb matrix elements <math>U_{ijkl}(\omega=0)</math> in the constrained Random Phase Approximation ([[Constrained Random Phase Approximation|CRPA]]) of SrVO<sub>3</sub> between the Vanadium t<sub>2g</sub> states.
Calculation of the Coulomb matrix elements U<sub>ijkl</sub> in the constrained Random Phase Approximation ([[Constrained Random Phase Approximation|CRPA]]) of SrVO<sub>3</sub> for the Vanadium t<sub>2g</sub> states.
----
----


Line 10: Line 10:
The easiest way to run this example is to execute:
The easiest way to run this example is to execute:
  ./doall.sh
  ./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.
In any case, one can consider the <tt>doall.sh</tt> script to be an overview of the steps described below.
Line 21: Line 18:
*{{TAG|INCAR}} (see INCAR.DFT)
*{{TAG|INCAR}} (see INCAR.DFT)
   
   
  {{TAGBL|SYSTEM}}  = SrVO3                       # system name
  {{TAGBL|SYSTEM}}  = SrVO3   # system name
  {{TAGBL|NBANDS}} = 36                           # small number  of bands
  {{TAGBL|NBANDS}} = 36       # small number  of bands
  {{TAGBL|ISMEAR}} = 0                             # Gaussian smearing
  {{TAGBL|ISMEAR}} = 0         # Gaussian smearing
  {{TAGBL|EDIFF}} = 1E-8                           # high precision for groundstate calculation
  {{TAGBL|EDIFF}} = 1E-8       # high precision for groundstate calculation
  {{TAGBL|KPAR}} = 2                               # parallelization of k-points in two groups
  {{TAGBL|KPAR}} = 2           # parallelization of k-points in two groups


Copy the aforementioned file to {{TAG|INCAR}}:
Copy the aforementioned file to {{TAG|INCAR}}:
Line 52: Line 49:
The {{TAG|KPOINTS}} file describes how the first Brillouin zone is sampled.
The {{TAG|KPOINTS}} file describes how the first Brillouin zone is sampled.
In the first step we use a uniform k-point sampling:
In the first step we use a uniform k-point sampling:
*{{TAG|KPOINTS}} (see KPOINTS.BULK)
*{{TAG|KPOINTS}}
<pre>
<pre>
Automatically generated mesh
Automatically generated mesh
      0
0
Gamma
Gamma
  4 4 4
  4 4 4
Line 62: Line 59:


'''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.
'''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 KPOINTS.BULK KPOINTS


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


== Obtain DFT virtual orbitals and long-wave limit ==
== Obtain DFT virtual orbitals and long-wave limit ==
Line 73: Line 67:
*{{TAG|INCAR}} (see INCAR.DIAG)
*{{TAG|INCAR}} (see INCAR.DIAG)
   
   
  {{TAGBL|SYSTEM}} = SrVO3                         # system name
  {{TAGBL|SYSTEM}} = SrVO3     # system name
  {{TAGBL|ISMEAR}} = 0                             # Gaussian smearing
  {{TAGBL|ISMEAR}} = 0         # Gaussian smearing
  {{TAGBL|KPAR}} = 2                               # parallelization of k-points in two groups
  {{TAGBL|KPAR}} = 2           # parallelization of k-points in two groups
  {{TAGBL|ALGO}} = Exact                           # exact diagonalization
  {{TAGBL|ALGO}} = Exact       # exact diagonalization
  {{TAGBL|NELM}} = 1                               # one electronic step suffices, since WAVECAR from previous step is present
  {{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|LOPTICS}} = .TRUE.                       # we need d phi/ d k  for GW calculations for long-wave limit
  {{TAGBL|LOPTICS}} = .TRUE.   # we need d phi/ d k  for GW calculations for long-wave limit


Restart VASP.
Restart VASP.
Line 110: Line 104:
*{{TAG|INCAR}} (see INCAR.CRPA)
*{{TAG|INCAR}} (see INCAR.CRPA)
   
   
  {{TAGBL|SYSTEM}} = SrVO3                         # system name
  {{TAGBL|SYSTEM}} = SrVO3           # system name
  {{TAGBL|ISMEAR}} = 0                             # Gaussian smearing
  {{TAGBL|ISMEAR}} = 0               # Gaussian smearing
  {{TAGBL|NCSHMEM}} = 1                           # switch off shared memory for chi
  {{TAGBL|NCSHMEM}} = 1               # switch off shared memory for chi
  {{TAGBL|ALGO}} = CRPA                           # Switch on CRPA
  {{TAGBL|ALGO}} = CRPA               # Switch on CRPA
  {{TAGBL|NBANDS}} = 96                           # CRPA needs many empty states
  {{TAGBL|NBANDS}} = 96               # CRPA needs many empty states
  {{TAGBL|PRECFOCK}} = Fast                       # fast mode for FFTs
  {{TAGBL|PRECFOCK}} = Fast           # fast mode for FFTs
  {{TAGBL|NTARGET_STATES}} = 1 2 3                 # exclude wannier states 1 - 3 in screening
  {{TAGBL|NTARGET_STATES}} = 1 2 3   # exclude wannier states 1 - 3 in screening
  {{TAGBL|LWRITE_WANPROJ}} = .TRUE.               # write wannier projection file
  {{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
and run VASP. The CRPA interaction values for <math>\omega=0</math> can be found in the {{TAG|OUTCAR}}:
spin components:  1  1, frequency:    0.0000    0.0000
  screened Coulomb repulsion U_iijj between MLWFs:
  screened Coulomb repulsion U_iijj between MLWFs:
including an averaged value:
        1        2        3
    1    3.3746    2.3385    2.3385
    2    2.3385    3.3746    2.3385
    3    2.3385    2.3385    3.3746
screened Coulomb repulsion U_ijji between MLWFs:
        1        2        3
    1    3.3746    0.4429    0.4429
    2    0.4429    3.3746    0.4429
    3    0.4429    0.4429    3.3746
screened Coulomb repulsion U_ijij between MLWFs:
        1        2        3
    1    3.3746    0.4429    0.4429
    2    0.4429    3.3746    0.4429
    3    0.4429    0.4429    3.3746
averaged interaction parameter
  screened Hubbard U =    3.3746  -0.0000
  screened Hubbard U =    3.3746  -0.0000
Make a copy of the output file
screened Hubbard u =    2.3385    0.0000
  cp {{TAGBL|OUTCAR}} OUTCAR.CRPA
  screened Hubbard J =    0.4429  -0.0000


=== CRPA calculation on full imaginary frequency axis (optional) ===
:'''N.B.:''' The frequency point <math>\omega</math> can be set by {{TAG|OMEGAMAX}} in the INCAR. For instance to evaluate the CRPA interaction matrix at <math>\omega=10</math> eV, add
To calculate the CRPA interaction for a set of imaginary frequency points use once again the PBE wavefunction as input
  {{TAGBL|OMEGAMAX}} = 10
to the INCAR and restart VASP. In contrast, adding following two lines to the {{TAG|INCAR}}
  {{TAGBL|OMEGAMAX}} = 10
  {{TAGBL|NOMEGAR}} = 0
tells VASP to calculate the interaction on the imaginary frequency axis at <math>\omega=i 10</math>. This can be used to evaluate <math>U</math> at a specific Matsubara frequency point.
 
In addition, the bare Coulomb interaction matrix is calculated for a high {{TAG|VCUTOFF}} and low energy cutoff {{TAG|ENCUTGW}} and written in that order to the {{TAG|OUTCAR}} file. Look for the lines similar to:
 
spin components:  1  1
bare Coulomb repulsion V_iijj between MLWFs:
        1        2        3
    1  16.3485  15.0984  15.0984
    2  15.0984  16.3485  15.0984
    3  15.0984  15.0984  16.3485
bare Coulomb repulsion V_ijji between MLWFs:
        1        2        3
    1  16.3485    0.5351    0.5351
    2    0.5351  16.3485    0.5351
    3    0.5351    0.5351  16.3485
bare Coulomb repulsion V_ijij between MLWFs:
        1        2        3
    1  16.3485    0.5351    0.5351
    2    0.5351  16.3485    0.5351
    3    0.5351    0.5351  16.3485
averaged bare interaction
bare Hubbard U =  16.3485  -0.0000
bare Hubbard u =  15.0984  -0.0000
bare Hubbard J =    0.5351    0.0000
 
=== CRPA calculation with spacetime Algorithm ===
Note that the same frequency grid is used as for {{TAG|ALGO}}=RPA (RPA correlation energy calculation) and can not be changed directly.
To calculate the CRPA interaction for a set of automatically chosen imaginary frequency points use once again the PBE wavefunction as input
  cp WAVECAR.DIAG {{TAGBL|WAVECAR}}
  cp WAVECAR.DIAG {{TAGBL|WAVECAR}}
  cp WAVEDER.DIAG {{TAGBL|WAVEDER}}
  cp WAVEDER.DIAG {{TAGBL|WAVEDER}}
This step requires uses the WANPROJ file from previous step, no wannier90.win file is necessary.
Currently, this step requires uses the {{TAG|WANPROJ}} file from previous step, no wannier90.win file is necessary.


Select the space-time CRPA algorithm with following file:
Select the space-time CRPA algorithm with following file:
*{{TAG|INCAR}} (see INCAR.CRPAR)
*{{TAG|INCAR}} (see INCAR.CRPAR)
   
   
  {{TAGBL|SYSTEM}} = SrVO3                         # system name
  {{TAGBL|SYSTEM}} = SrVO3             # system name
  {{TAGBL|ISMEAR}} = 0                             # Gaussian smearing
  {{TAGBL|ISMEAR}} = 0                 # Gaussian smearing
  {{TAGBL|NCSHMEM}} = 1                           # switch off shared memory for chi
  {{TAGBL|NCSHMEM}} = 1               # switch off shared memory for chi
  {{TAGBL|ALGO}} = CRPAR                           # Switch on CRPA on imaginary axis
  {{TAGBL|ALGO}} = CRPAR               # Switch on CRPA on imaginary axis
  {{TAGBL|NBANDS}} = 96                           # CRPA needs many empty states
  {{TAGBL|NBANDS}} = 96               # CRPA needs many empty states
  {{TAGBL|PRECFOCK}} = Fast                       # fast mode for FFTs
  {{TAGBL|PRECFOCK}} = Fast           # fast mode for FFTs
  {{TAGBL|NTARGET_STATES}} = 1 2 3                 # exclude wannier states 1 - 3 in screening
  {{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|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|NOMEGA}} = 12               # use 12 imaginary frequency points
  {{TAGBL|NTAUPAR}} = 4                           # distribute 12 time points into 4 groups
  {{TAGBL|NTAUPAR}} = 4               # distribute 12 time points into 4 groups


Run VASP and make a copy of the output file
Run VASP and make a copy of the output file
  cp {{TAGBL|OUTCAR}} OUTCAR.CRPAR
  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
After a successful run, the interaction values are written to the {{TAG|OUTCAR}} file. Here is the result for the first frequency point:
  grep "screened Hubbard U" OUTCAR
spin components:  1  1, frequency:    0.0000    0.2248
resulting in following output
  screened Coulomb repulsion U_iijj between MLWFs:
        1        2        3
    1    3.3798    2.3436    2.3436
    2    2.3436    3.3798    2.3436
    3    2.3436    2.3436    3.3798
screened Coulomb repulsion U_ijji between MLWFs:
        1        2        3
    1    3.3798    0.4433    0.4433
    2    0.4433    3.3798    0.4433
    3    0.4433    0.4433    3.3798
screened Coulomb repulsion U_ijij between MLWFs:
        1        2        3
    1    3.3798    0.4433    0.4433
    2    0.4433    3.3798    0.4433
    3    0.4433    0.4433    3.3798
averaged interaction parameter
  screened Hubbard U =    3.3798  -0.0000
  screened Hubbard U =    3.3798  -0.0000
  screened Hubbard U =    3.4172  -0.0000
  screened Hubbard u =    2.3436   0.0000
screened Hubbard U =   3.5169  -0.0000
  screened Hubbard J =    0.4433   -0.0000
  screened Hubbard U =    3.7418  -0.0000
 
screened Hubbard U =    4.2069   -0.0000
:'''N.B.:''' The number of frequency points should be large enough to guarantee for an accurate Fourier transformation of the CRPA polarizability matrix from the imaginary time to imaginary frequency domain. See [[ACFDT/RPA calculations#Low_scaling_ACFDT.2FRPA_algorithm|ACFDT/RPA calculations]] for more information.
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


== Downloads ==
[[Media:CRPA of SrVO3.tgz| CRPA_of_SrVO3.tgz]]


{{Template:gw}}
{{Template:GW - Tutorial}}


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


[[Category:Examples]]
[[Category:Examples]][[Category:VASP6]][[Category:CRPA]]

Revision as of 08:47, 14 November 2019

The following tutorial describes how to perform CRPA calculations, which is available as of VASP 6.

Task

Calculation of the Coulomb matrix elements in the constrained Random Phase Approximation (CRPA) of SrVO3 between the Vanadium t2g states.


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

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.

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 for can be found in the OUTCAR:

spin components:  1  1, frequency:    0.0000    0.0000

screened Coulomb repulsion U_iijj between MLWFs:
        1         2         3
   1    3.3746    2.3385    2.3385
   2    2.3385    3.3746    2.3385
   3    2.3385    2.3385    3.3746

screened Coulomb repulsion U_ijji between MLWFs:
        1         2         3
   1    3.3746    0.4429    0.4429
   2    0.4429    3.3746    0.4429
   3    0.4429    0.4429    3.3746

screened Coulomb repulsion U_ijij between MLWFs:
        1         2         3
   1    3.3746    0.4429    0.4429
   2    0.4429    3.3746    0.4429
   3    0.4429    0.4429    3.3746 

averaged interaction parameter
screened Hubbard U =    3.3746   -0.0000
screened Hubbard u =    2.3385    0.0000
screened Hubbard J =    0.4429   -0.0000
N.B.: The frequency point can be set by OMEGAMAX in the INCAR. For instance to evaluate the CRPA interaction matrix at eV, add
 OMEGAMAX = 10

to the INCAR and restart VASP. In contrast, adding following two lines to the INCAR

 OMEGAMAX = 10 
 NOMEGAR = 0 

tells VASP to calculate the interaction on the imaginary frequency axis at . This can be used to evaluate at a specific Matsubara frequency point.

In addition, the bare Coulomb interaction matrix is calculated for a high VCUTOFF and low energy cutoff ENCUTGW and written in that order to the OUTCAR file. Look for the lines similar to:

spin components:  1  1

bare Coulomb repulsion V_iijj between MLWFs:
        1         2         3
   1   16.3485   15.0984   15.0984
   2   15.0984   16.3485   15.0984
   3   15.0984   15.0984   16.3485

bare Coulomb repulsion V_ijji between MLWFs:
        1         2         3
   1   16.3485    0.5351    0.5351
   2    0.5351   16.3485    0.5351
   3    0.5351    0.5351   16.3485

bare Coulomb repulsion V_ijij between MLWFs:
        1         2         3
   1   16.3485    0.5351    0.5351
   2    0.5351   16.3485    0.5351
   3    0.5351    0.5351   16.3485

averaged bare interaction
bare Hubbard U =   16.3485   -0.0000
bare Hubbard u =   15.0984   -0.0000
bare Hubbard J =    0.5351    0.0000

CRPA calculation with spacetime Algorithm

Note that the same frequency grid is used as for ALGO=RPA (RPA correlation energy calculation) and can not be changed directly. To calculate the CRPA interaction for a set of automatically chosen imaginary frequency points use once again the PBE wavefunction as input

cp WAVECAR.DIAG WAVECAR
cp WAVEDER.DIAG WAVEDER

Currently, 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

After a successful run, the interaction values are written to the OUTCAR file. Here is the result for the first frequency point:

spin components:  1  1, frequency:    0.0000    0.2248

screened Coulomb repulsion U_iijj between MLWFs:
        1         2         3
   1    3.3798    2.3436    2.3436
   2    2.3436    3.3798    2.3436
   3    2.3436    2.3436    3.3798

screened Coulomb repulsion U_ijji between MLWFs:
        1         2         3
   1    3.3798    0.4433    0.4433
   2    0.4433    3.3798    0.4433
   3    0.4433    0.4433    3.3798

screened Coulomb repulsion U_ijij between MLWFs:
        1         2         3
   1    3.3798    0.4433    0.4433
   2    0.4433    3.3798    0.4433
   3    0.4433    0.4433    3.3798

averaged interaction parameter
screened Hubbard U =    3.3798   -0.0000
screened Hubbard u =    2.3436    0.0000
screened Hubbard J =    0.4433   -0.0000
N.B.: The number of frequency points should be large enough to guarantee for an accurate Fourier transformation of the CRPA polarizability matrix from the imaginary time to imaginary frequency domain. See ACFDT/RPA calculations for more information.

Downloads

CRPA_of_SrVO3.tgz

Back to the main page.