Bethe-Salpeter: Difference between revisions

From The Yambo Project
Jump to navigation Jump to search
No edit summary
 
(19 intermediate revisions by 2 users not shown)
Line 1: Line 1:
UNDER CONSTRUCTION (MP)
===UNDER CONSTRUCTION (MP)===


In this tutorial you will learn how to:
In this tutorial you will learn how to:
Line 5: Line 5:
* run the code and control inputs and outputs
* run the code and control inputs and outputs
* understand the content of the outputs  
* understand the content of the outputs  
== Prerequisites ==


[[File:HBN-2D.png|thumb|Atomic structure of two-dimensional hBN]]
[[File:HBN-2D.png|thumb|Atomic structure of two-dimensional hBN]]
Line 10: Line 12:
'''Material: two-dimensional hexagonal BN''':
'''Material: two-dimensional hexagonal BN''':
*  exagonal lattice
*  exagonal lattice
* 2 atoms per cell, B and N (8 electrons, )
* 2 atoms per cell, B and N (8 electrons)
[[File:HBN-2D.png|thumb|Atomic structure of two-dimensional hBN]]
 
* Lattice constants: ''a'' = 4.716 [a.u.]
* Lattice constants: ''a'' = 4.716 [a.u.]
* Plane wave cutoff 40 Ry  
* Plane wave cutoff 40 Ry  


To do the Tutorial You have 2 options now :
To do the Tutorial you have two options:
 
    Option A): Start from the beginning (from the DFT runs)
    Option B): Read directly a prepared SAVE database to do only the BScalculation


''' Option A:  Start from the beginning (DFT runs also)''':
'''TIP''': If you choose Option B) look below for ''Option B): Read directly a prepared SAVE database''  and start from there.
Please note that in this case you do not need to run the initialization, cutoff generation, calculation of screening W
and quasi-particle energies.
All the pre-required databases ndb.gops ndb,kindx ndb.RIM ndb.cutoff ndb.pp ndb.QP have been already generated for you
and are in the SAVE directory
 
== Option A:  Start from the beginning (DFT runs also) ==


In this case you will need:  
In this case you will need:  
Line 32: Line 45:
  $ cd hBN-2D/PWSCF
  $ cd hBN-2D/PWSCF
  $ ls
  $ ls
  hbn-2D_scf.in hbn-2D_nscf.in References tmp
  Inputs  Pseudos  tmp


Have a look at the main variables in the inputs hbn-2D_scf.in hbn-2D_nscf.in: k-points, nbnd etc.
Have a look at the main variables in the two inputs ./Inputs/hbn-2D_scf.in and  ./Inputs/hbn-2D_nscf.in  
(Such as cutoff, vacuum size of the supercell, k-points, bands etc.)


Run the DFT self-consistent (scf) and non-self-consistent (nscf) inputs.
Run the DFT self-consistent (scf) input and then the non-self-consistent (nscf) input.
  $ pw.x < ./Inputs/hbn_2d_scf.in > hbn_2d_scf.out
  $ pw.x < ./Inputs/hbn_2d_scf.in > hbn_2d_scf.out
  $ pw.x < ./Inputs/hbn_2d_scf.in > hbn_2d_nscf.out
  $ pw.x < ./Inputs/hbn_2d_scf.in > hbn_2d_nscf.out


Generate the SAVE database
Generate the SAVE database
Line 44: Line 58:
  $ p2y  
  $ p2y  


Move the SAVE database in the YAMBO directory
Move the SAVE database in the YAMBO directory to start the calculations with yambo
 
  $ mv  SAVE ../../../YAMBO
  $ mv  SAVE ../../../YAMBO
$ cd ../../../YAMBO
$ ls
SAVE


===Initialization===
As you should know any Yambo run must start with the Initialization step. Simply launch the code


  $ yambo


'''TIP''': Remeber to not run yambo from ''inside'' the <code>SAVE</code> folder! It will complain that "databases not found".


''' Option B): Read directly a prepared SAVE database :'''
Open the report file r_setup and look at the variable A3. This is the vertical size in bohr of the supercell for the 2D-hBN.
Note that in this case in the SAVE directory you have already the following databases
It should be A3 = 33.01200
ndb.gops ndb.kindx ndb.RIM ndb.cutoff ndb.pp ndb.QP databases
Remember this value. You will need it to properly setup the cutoff in the Coulomb Potential.
$ tar -xcvf hBN-2D.tar
$ cd hBN-2D/YAMBO
$ mv ./References/SAVE SAVE


===Generation of a truncated Coulomb Potential for a 2D material===


To simulate a real isolated 2D-layer convergence with vacuum size should be required.
The use of a truncated Coulomb potential allows to achieve faster convergence in the vacuum size, eliminating the interaction between the repeated
images. (see ref. Varsano)


== Initialization ==
Create the input file:


Every Yambo run must start with this step. Go to the folder ''containing'' the hBN-2D <code>SAVE</code> directory:
  $ yambo -F 01_wcut.in -r
  $ cd TUTORIALS/hBN-2D/YAMBO
Open the input file 01_cutoff.in
  $ ls
SAVE
and simply launch the code
yambo
This will run the initialization (setup) ''runlevel''. <br>
'''TIP''': do not run yambo from ''inside'' the <code>SAVE</code> folder! It will complain that "databases not found".


Change the variables inside as:


RandQpts= 1000000          # [RIM] Number of random q-points in the BZ
RandGvec= 100        RL    # [RIM] Coulomb interaction RS components
CUTGeo= "box z"            # [CUT] Coulomb Cutoff geometry: box/cylinder/sphere X/Y/Z/XY..
% CUTBox
  0.00    | 0.00    | 32.00    |        # [CUT] [au] Box sides
%


Close the input file and run yambo
$ yambo -F 01_wcut.in


[[File:Example.jpg]]
===Calculation of the static screening W needed in the BS sex Kernel===


BSE Tutorials at present:
Open the input file 02_Ws_wcut.in
$ yambo -F 02_Ws_wcut.in -b -r


*SiH_4
Change the G-space size of dielectric screening matrix to a value different from 1 RL i.e.
NGsBlkXs= 2          Ry    # [Xs] Response block size


*Fantastic dimension
To speed up  the calculation decrease the Polarization function bands
% BndsRnXs
  1 |  40 |                # [Xs] Polarization function bands
%


*LiF
Close the file and run yambo
$ yambo -F 02_Ws_wcut.in


*you Hydrogen
===Calculation of QP transition energies (within GoWo Perturbative approach plus PPA)===


*GaSb (SOC)
===Calculation of the BS kernel in the Screened EXchange approximation (sex)===
Create the input
$ yambo -F 03_bse_wcut.in -o b -k sex -r -V QP


* hexagonal BN (on slides only)
Open the input file C03_bse_wcut.in and change the following variables
==== The material ====
The h-BN is a layered material similar to graphite.
It is an indirect wide band-gap material. Its optical spectrum is characterized by large excitonic effects.
5.95 eV is the minimum electronic indirect gap. 6.47 eV is the minimum direct gap.   
See the literature [http://journals.aps.org/prl/abstract/10.1103/PhysRevLett.96.026402]
{|
|width="50%"|
'''Bulk hexagonal BN'''
* [https://en.wikipedia.org/wiki/Boron_nitride#Hexagonal_form_.28h-BN.29] hexagonal lattice
* Two atoms per cell (16 electrons)
* Lattice parameters  a = 4.72 [a.u.]  c/a= 2.58 
* Plane waves cutoff 40 Rydberg
|width="50%"| [[File:|Band Structure]]
|}


==== Calculate the screening ====
Run the code
$ yambo -F 03_bse_wcut.in


A key ingredient to construct the BS kernel in the Screeened EXchange approximation (sex)  
== Option B): Read directly a prepared SAVE database ==
is the screened electron-electron dielectric matrix W which is normally evaluated in the static approximation.
Note that in this case in the SAVE directory you have already the following databases
 
ndb.gops ndb.kindx  ndb.RIM ndb.cutoff ndb.pp ndb.QP databases
You have two main options to generate the input :
$ tar -xcvf hBN-2D.tar
 
$ cd hBN-2D/YAMBO
  1) yambo -b -F  yambo_Ws.in
$ mv ./References/SAVE SAVE
 
This will create the input to calculate W (database ndb.em1s)


  2) yambo -p p -F  yambo_Wp.in
==== Read the static part of screening from a previously generated ndb.pp database ====
 
This will create the input to calculate (or read) W in the PPA approximation (database ndb.pp)
This second option is useful if you want to read the static part of W from a previous database ndb.pp generated in a GW-PPA run


==== Calculate the BS kernel in the SEX (Screened Exchange approximation) in the transitions space ====
==== Calculate the BS kernel in the SEX (Screened Exchange approximation) in the transitions space ====
Line 128: Line 143:


Generate the input file for solving the BSE using the Haydock solver:  
Generate the input file for solving the BSE using the Haydock solver:  
 
  $ yambo  -o -y h
  yambo  -o-y h


==== Solve the BSE by diagonalizing the excitonic matrix and calculate spectrum  ====
==== Solve the BSE by diagonalizing the excitonic matrix and calculate spectrum  ====


Runlevel to be used yambo -y d  
Runlevel to be used yambo -y d  
 
 


Steps:
Steps:

Latest revision as of 17:19, 4 January 2022

UNDER CONSTRUCTION (MP)

In this tutorial you will learn how to:

  • generate input files to run a BSE calculation for a two-dimensional material
  • run the code and control inputs and outputs
  • understand the content of the outputs

Prerequisites

File:HBN-2D.png
Atomic structure of two-dimensional hBN

Material: two-dimensional hexagonal BN:

  • exagonal lattice
  • 2 atoms per cell, B and N (8 electrons)
File:HBN-2D.png
Atomic structure of two-dimensional hBN
  • Lattice constants: a = 4.716 [a.u.]
  • Plane wave cutoff 40 Ry

To do the Tutorial you have two options:

   Option A): Start from the beginning (from the DFT runs)
   Option B): Read directly a prepared SAVE database to do only the BScalculation

TIP: If you choose Option B) look below for Option B): Read directly a prepared SAVE database and start from there. Please note that in this case you do not need to run the initialization, cutoff generation, calculation of screening W and quasi-particle energies. All the pre-required databases ndb.gops ndb,kindx ndb.RIM ndb.cutoff ndb.pp ndb.QP have been already generated for you and are in the SAVE directory

Option A: Start from the beginning (DFT runs also)

In this case you will need:

  • PWSCF input files and pseudopotentials for hBN-2D
  • pw.x executable, version 5.0 or later
  • p2y and yambo executables

Unpack the TARFILE:

$ tar -xcvf hBN-2D.tar

Go in the PWSCF directory and list the files.

$ cd hBN-2D/PWSCF
$ ls
Inputs  Pseudos  tmp

Have a look at the main variables in the two inputs ./Inputs/hbn-2D_scf.in and ./Inputs/hbn-2D_nscf.in (Such as cutoff, vacuum size of the supercell, k-points, bands etc.)

Run the DFT self-consistent (scf) input and then the non-self-consistent (nscf) input.

$ pw.x < ./Inputs/hbn_2d_scf.in > hbn_2d_scf.out
$ pw.x < ./Inputs/hbn_2d_scf.in > hbn_2d_nscf.out

Generate the SAVE database

$ cd ./tmp/hbn_2d.save
$ p2y 

Move the SAVE database in the YAMBO directory to start the calculations with yambo

$ mv  SAVE ../../../YAMBO
$ cd ../../../YAMBO
$ ls
SAVE

Initialization

As you should know any Yambo run must start with the Initialization step. Simply launch the code

 $ yambo 

TIP: Remeber to not run yambo from inside the SAVE folder! It will complain that "databases not found".

Open the report file r_setup and look at the variable A3. This is the vertical size in bohr of the supercell for the 2D-hBN. It should be A3 = 33.01200 Remember this value. You will need it to properly setup the cutoff in the Coulomb Potential.

Generation of a truncated Coulomb Potential for a 2D material

To simulate a real isolated 2D-layer convergence with vacuum size should be required. The use of a truncated Coulomb potential allows to achieve faster convergence in the vacuum size, eliminating the interaction between the repeated images. (see ref. Varsano)

Create the input file:

$ yambo -F 01_wcut.in  -r

Open the input file 01_cutoff.in

Change the variables inside as:

RandQpts= 1000000          # [RIM] Number of random q-points in the BZ
RandGvec= 100        RL    # [RIM] Coulomb interaction RS components
CUTGeo= "box z"            # [CUT] Coulomb Cutoff geometry: box/cylinder/sphere X/Y/Z/XY..
% CUTBox
 0.00     | 0.00     | 32.00     |        # [CUT] [au] Box sides
%

Close the input file and run yambo

$ yambo -F 01_wcut.in

Calculation of the static screening W needed in the BS sex Kernel

Open the input file 02_Ws_wcut.in

$ yambo -F 02_Ws_wcut.in -b -r

Change the G-space size of dielectric screening matrix to a value different from 1 RL i.e.

NGsBlkXs= 2           Ry    # [Xs] Response block size

To speed up the calculation decrease the Polarization function bands

% BndsRnXs
  1 |  40 |                 # [Xs] Polarization function bands
%

Close the file and run yambo

$ yambo -F 02_Ws_wcut.in

Calculation of QP transition energies (within GoWo Perturbative approach plus PPA)

Calculation of the BS kernel in the Screened EXchange approximation (sex)

Create the input

$ yambo -F 03_bse_wcut.in -o b -k sex -r -V QP 

Open the input file C03_bse_wcut.in and change the following variables

Run the code

$ yambo -F 03_bse_wcut.in

Option B): Read directly a prepared SAVE database

Note that in this case in the SAVE directory you have already the following databases

ndb.gops ndb.kindx  ndb.RIM ndb.cutoff ndb.pp ndb.QP databases 
$ tar -xcvf hBN-2D.tar
$ cd hBN-2D/YAMBO
$ mv ./References/SAVE SAVE

Read the static part of screening from a previously generated ndb.pp database

Calculate the BS kernel in the SEX (Screened Exchange approximation) in the transitions space

Here we learn how to create the BS kernel in the screened exchange (SEX) approximation which includes both exchange (V) and correlation (-W) terms Runlevel to be used yambo -o b -k sex

Solve the BSE by haydock solver and and calculate spectrum

Generate the input file for solving the BSE using the Haydock solver:

$ yambo  -o -y h

Solve the BSE by diagonalizing the excitonic matrix and calculate spectrum

Runlevel to be used yambo -y d

Steps:

-Calculate screening

-Calculate the BS Kernel

-Diagonalize the BS Matrix and calculate spectrum

-Visualize/Analyze excitons (with ypp)

-How to Converge

-How to work with SOC