Bethe-Salpeter kernel: Difference between revisions

From The Yambo Project
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
''Prerequisites''
You have now all ingredients to calculate the kernel
 
[[File:BSE1_Eq3.png|none|x100px]]
 
 
(and thus the two-particle Hamiltonian matrix elements).
 
Start by generating the input by invoking yambo with the option "-o b -k bse -V qp"  from the command line:
 
$ yambo -o b -k bse -V qp -F 02_3D_BSE_kernel.in
 
The input opens in the standard editor. The relevant input parameters to be changed are
 
[[Variables#BSENGexx|BSENGexx]] = 30 Ry
[[Variables#BSENGBlk|BSENGBlk]] = 4 Ry
% [[Variables#BSEBands|BSEBands]]
  6 | 10 |     
%
The first two are the cutoff for the summations on the reciprocal lattice vectors which appear in the expressions for ''V'' (BSENGexx) and ''W'' (BSENGBlk) here above. 
 
The third parameter gives the range of quasiparticle states (their band index) that define the basis of quasiparticle pairs that we need to describe the excitons (in the energy range of interest).
For example since we have 8 occupied bands, here we consider the pairs of bands: ''6-9'', ''6-10'', ''7-9'', ''7-10'', ''8-9'', ''8-10'' (those are 6 pairs of bands = 2 valence times 3 conduction bands).
 
For each of those pairs we then consider all '''k''' points in the Brillouin zone available from the DFT calculations. Since we have a ''6 x 6 x 2'' grid, this amounts to 72 '''k''' points in the Brillouin zone.
 
Then finally we are using a basis of ''6 x 72 = 432'' ''vc'''''k''' pairs to represent the excitons of the system. 
 
The values for these 3 parameters are chosen from convergence studies, as discussed in the [[How to choose the input parameters|next tutorial]].
 
Another parameter to modify is
% [[Variables#KfnQP_E|KfnQP_E]]
  1.440000 | 1.000000 | 1.000000 |
%
This gives the quasiparticle corrections to the Kohn-Sham eigenvalues and  is deduced either from experiment or previous [[How to obtain the quasi-particle band structure of a bulk material: h-BN|GW calculations]].
The corrections consist in a shift (first value) of the conduction bands in eV and renormalization of the conduction and valence bandwidths (second and third value).
Alternatively we can directly input corrections calculated from a previous GW calculation as we will learn later in this tutorial.
 
Run the calculation by invoking yambo in the command line:
$ yambo -F 02_3D_BSE_kernel.in -J 3D_BSE
In the log (either in standard output or in l_optics_bse_bsk), after various setup/loading, the kernel is calculated: 
<01s> [05.04.03] Kernel loop
<02s> Kernel |########################################| [100%] --(E) --(X)
 
In the report r_optics_bse_bsk the information relative to this runlevel are reported under the section:
 
 
[05] Response Functions in Transition space
===========================================
 
 
Take some time to inspect the log and the report. For example try to find where the input parameters are reported, the dimension of the 2-particle hamiltonian and if these match your expectations.
 
This run does not produce any human readable output. The kernel is stored in a database in the 3D_BSE directory
 
3D_BSE/ndb.BS_Q1
 
 
<--!''Prerequisites''


  Run [[Initialization]]
  Run [[Initialization]]
Line 79: Line 137:
or  
or  
  $ yambo -F 03_bse_Ws_2D.in -J 2D (for 2D)
  $ yambo -F 03_bse_Ws_2D.in -J 2D (for 2D)
-->

Revision as of 18:41, 16 April 2017

You have now all ingredients to calculate the kernel

BSE1 Eq3.png


(and thus the two-particle Hamiltonian matrix elements).

Start by generating the input by invoking yambo with the option "-o b -k bse -V qp" from the command line:

$ yambo -o b -k bse -V qp -F 02_3D_BSE_kernel.in

The input opens in the standard editor. The relevant input parameters to be changed are

BSENGexx = 30 Ry
BSENGBlk = 4 Ry
% BSEBands
 6 | 10 |       
%

The first two are the cutoff for the summations on the reciprocal lattice vectors which appear in the expressions for V (BSENGexx) and W (BSENGBlk) here above.

The third parameter gives the range of quasiparticle states (their band index) that define the basis of quasiparticle pairs that we need to describe the excitons (in the energy range of interest). For example since we have 8 occupied bands, here we consider the pairs of bands: 6-9, 6-10, 7-9, 7-10, 8-9, 8-10 (those are 6 pairs of bands = 2 valence times 3 conduction bands).

For each of those pairs we then consider all k points in the Brillouin zone available from the DFT calculations. Since we have a 6 x 6 x 2 grid, this amounts to 72 k points in the Brillouin zone.

Then finally we are using a basis of 6 x 72 = 432 vck pairs to represent the excitons of the system.

The values for these 3 parameters are chosen from convergence studies, as discussed in the next tutorial.

Another parameter to modify is

% KfnQP_E 
 1.440000 | 1.000000 | 1.000000 |
%

This gives the quasiparticle corrections to the Kohn-Sham eigenvalues and is deduced either from experiment or previous GW calculations. The corrections consist in a shift (first value) of the conduction bands in eV and renormalization of the conduction and valence bandwidths (second and third value). Alternatively we can directly input corrections calculated from a previous GW calculation as we will learn later in this tutorial.

Run the calculation by invoking yambo in the command line:

$ yambo -F 02_3D_BSE_kernel.in -J 3D_BSE 

In the log (either in standard output or in l_optics_bse_bsk), after various setup/loading, the kernel is calculated:

<01s> [05.04.03] Kernel loop
<02s> Kernel |########################################| [100%] --(E) --(X)

In the report r_optics_bse_bsk the information relative to this runlevel are reported under the section:


[05] Response Functions in Transition space
===========================================


Take some time to inspect the log and the report. For example try to find where the input parameters are reported, the dimension of the 2-particle hamiltonian and if these match your expectations.

This run does not produce any human readable output. The kernel is stored in a database in the 3D_BSE directory

3D_BSE/ndb.BS_Q1


<--!Prerequisites

Run Initialization
Run Static screening

Run GW in PPA


Create the input

$ yambo -F 03_bse_Ws.in -b -o b -k sex -V qp   -J 3D (for a 3D)

or

$ yambo -F 03_bse_Ws_2D.in -b -o b -k sex -V qp -r  -J 2D (for a 2D)


Open it and change some of the input variables First change BSEBands which specify the range of bands to be used in the construction of the BS kernel Remember that the BS kernel is written in Bloch space and its size is given by

BS kernel size = Valence Bands × Conduction Bands × K-points in the whole BZ


For h-BN put:

 % BSEBands
 4 |  12 |                   # [BSK] Bands range


For h-BN 2D put:

 % BSEBands
 2 |  6 |                   # [BSK] Bands range

Then change the number of G-components (in number of RL or in energy cutoff) for the exchange(BSENGexx) and correlation (BSENGBlk) part of the BS kernel Both for h-BN or h-BN 2D put

 BSENGexx=  30 Ry    # [BSK] Exchange components
 BSENGBlk=  2 Ry    # [BSK] Screened interaction block size


The GW energies are required in the excitonic hamiltonian. If the rigid scissor assumption is a good approximation for the material of interest the simplest way is to give the value of the minimum GW correction precalculated by you or found in the literature.


For hBN bulk:

 % KfnQP_E
   value0000 | 1.000000 | 1.000000 |        # [EXTQP BSK BSS] E parameters  (c/v) eV|adim|adim

For hBN-2D:

 % KfnQP_E
   value | 1.000000 | 1.000000 |        # [EXTQP BSK BSS] E parameters  (c/v) eV|adim|adim

Note that if you know also the values of the conduction and valence streachings you can insert them instead of using the default values of 1.


Instead if you have already generated a ndb.QP database for the full set of k-points and energies of the excitonic hamiltonian, you can read it in this way

for hBN bulk:

KfnQPdb= " E < ./3D/ndb.QP "              # [EXTQP BSK BSS] Database

for hBN-2D:

KfnQPdb= " E < ./2D/ndb.QP "              # [EXTQP BSK BSS] Database


Close the input and run the code

$ yambo -F 03_bse_Ws.in -J 3D ( for 3D)

or

$ yambo -F 03_bse_Ws_2D.in -J 2D (for 2D)

-->