Phonon-assisted luminescence by finite atomic displacements: Difference between revisions

From The Yambo Project
Jump to navigation Jump to search
 
(73 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[File:Representative-instantaneous-atomic-configurations-of-H2O-top-and-H3O-bottom-Also.gif|thumb| 200px|Finite atomic displacements]]
[[File:Representative-instantaneous-atomic-configurations-of-H2O-top-and-H3O-bottom-Also.gif|thumb| 200px|Finite atomic displacements]]


In recent years, several articles have been published with Yambo, who calculated the phonon-assisted luminescence by means of finite atomic displacements<ref name='cann'>[https://arxiv.org/abs/1807.11797 Theory of phonon-assisted luminescence in solids: Application to hexagonal boron nitride], E. Cannuccia, B. Monserrat and C. Attaccalite, Phys. Rev. B '''99''', 081109(R) (2019)</ref><ref name='fprl'>[https://arxiv.org/abs/1810.08976 Exciton-Phonon Coupling in the Ultraviolet Absorption and Emission Spectra of Bulk Hexagonal Boron Nitride], F. Paleari et al. PRL '''122''', 187401(2019) </ref><ref>[https://arxiv.org/abs/2112.12417 Excitons under strain: light absorption and emission in strained hexagonal boron nitride],P. Lechifflart, F. Paleari and C. Attaccalite (2022). </ref><ref>[https://arxiv.org/abs/2111.03518  Phonon-Assisted Luminescence in Defect Centers from Many-Body Perturbation Theory], F. Libbi, P. M. M. C. de Melo, Z. Zanolli, M. J. Verstraete, and N. Marzari, Phys. Rev. Lett. '''128''', 167401 (2022) </ref>.
In recent years, several articles have been published with Yambo, who calculated the phonon-assisted luminescence by means of finite atomic displacements<ref name='cann'>[https://arxiv.org/abs/1807.11797 Theory of phonon-assisted luminescence in solids: Application to hexagonal boron nitride], E. Cannuccia, B. Monserrat and C. Attaccalite, Phys. Rev. B '''99''', 081109(R) (2019)</ref><ref name='fprl'>[https://arxiv.org/abs/1810.08976 Exciton-Phonon Coupling in the Ultraviolet Absorption and Emission Spectra of Bulk Hexagonal Boron Nitride], F. Paleari et al. PRL '''122''', 187401(2019) </ref><ref name=strain>[https://scipost.org/SciPostPhys.12.5.145 Excitons under strain: light absorption and emission in strained hexagonal boron nitride], P. Lechifflart, F. Paleari and C. Attaccalite, SciPost Phys. '''12''', 145(2022). </ref><ref name='mprl'>[https://arxiv.org/abs/2111.03518  Phonon-Assisted Luminescence in Defect Centers from Many-Body Perturbation Theory], F. Libbi, P. M. M. C. de Melo, Z. Zanolli, M. J. Verstraete, and N. Marzari, Phys. Rev. Lett. '''128''', 167401 (2022) </ref><ref name='wbn'>[https://arxiv.org/abs/2211.07018 Pressure dependence of electronic, vibrational and optical properties of wurtzite-boron nitride],
In this tutorial we will show how to use [https://github.com/yambo-code/yambopy YamboPy] in combination with Yambo to perform these kind of calculations. For a general review of finite displacements calculations of vibrational properties we recommend this article<ref>Electron-phonon coupling from finite differences, Bartomeu Monserrat, J. Phys.: Condens. Matter '''30''' 083001(2018)</ref>.<br>
M. Silvetti, C. Attaccalite, E. Cannuccia,  Physical Review Materials '''7''', 055201 (2023)</ref>.
Notice that calculation of phonon-assisted luminescence by finite atomic displacements are quite involved and expensive from a computational point of view, for this reason they are limited to relatively simple systems.<br>
In this tutorial, we will show how to use [https://github.com/yambo-code/yambopy YamboPy] in combination with Yambo to perform this kind of calculation. For a general review of finite displacement calculations of vibrational properties we recommend this article<ref>Electron-phonon coupling from finite differences, Bartomeu Monserrat, J. Phys.: Condens. Matter '''30''' 083001(2018)</ref>.<br>
In this tutorial we will follow the approach of Ref.<ref name=fprl></ref>, and calculate luminescence using the Roosbroeck–Shockley (RS) relation applied to the excitonic case.<br>
Notice that the calculation of phonon-assisted luminescence by finite atomic displacements are quite involved and expensive from a computational point of view, for this reason, they are limited to relatively simple systems.<br>
If you use this approch to calculate luminescence or phonon-assisted absorption please cite references <ref name=cann></ref> and <ref name=fprl></ref>.<br>
In this tutorial, we will follow the approach of Ref.<ref name=fprl></ref>, and calculate luminescence using the Roosbroeck–Shockley (RS) relation applied to the excitonic case.<br>
If you use this approach to calculate luminescence or phonon-assisted absorption please cite references <ref name=cann></ref> and <ref name=fprl></ref>.<br>
'''Important:''' This tutorial requires that you are familiar with Bethe-Salpeter calculations with Yambo, and phonons with Quantum-Espresso, and YamboPy. If it is not the case please study the corresponding tutorial before continuing.  
'''Important:''' This tutorial requires that you are familiar with Bethe-Salpeter calculations with Yambo, and phonons with Quantum-Espresso, and YamboPy. If it is not the case please study the corresponding tutorial before continuing.  


== Locate the lowest indirect exciton (or indirect band gap) ==
== Locate the lowest indirect exciton (or indirect band gap) ==


In this tutorial as example we will consider the hexagonal-BN, that is an indirect insulator. The first step to calculate the phonon-assisted luminescence is to locate the lowest indirect exciton. The cleanest strategy to identify the lowest excitation would be to calculate the excitons along the whole Irreducible Brillouin zone(IBZ), then interpolate them as explained in [http://www.yambo-code.org/wiki/index.php?title=How_to_analyse_excitons#Interpolate_exciton_dispersion_(only_in_Yambo_5.x) Interpolate exciton dispersion] and find the '''q''' point that correspond to the minimum.<br>
In this tutorial as example, we will consider the hexagonal-BN, which is an indirect insulator. The first step to calculate the phonon-assisted luminescence is to locate the lowest indirect exciton. The cleanest strategy to identify the lowest excitation would be to calculate the excitons along the whole Irreducible Brillouin zone(IBZ), then interpolate them as explained in [https://www.yambo-code.org/wiki/index.php?title=How_to_analyse_excitons#Interpolate_exciton_dispersion_(only_in_Yambo_5.x) Interpolate exciton dispersion] and find the '''q''' point that corresponds to the minimum.<br>
A simpler approach is to use the GW (or Kohn-Sham) band structure to find the momentum responsible for the indirect band gap, in the major part of cases this correspond to the lowest exciton.<br>
A simpler approach is to use the GW (or Kohn-Sham) band structure to find the momentum responsible for the indirect band gap, in the major part of cases this corresponds to the lowest exciton.<br>
In the h-BN case we have:
In the h-BN case we have:
[[File:Bn band structure.png|1000px|center| Yambo tutorial image]]
[[File:Bn band structure.png|1000px|center| Yambo tutorial image]]


The indirect gap is between a point close to '''K''' and the '''M''' point, see panel (a) of the figure above. We will approximate the momentum responsible for the indirect emission with '''q=K-M'''. Notice that then we should build supercells that contain this moment, so it is good to approximate it with fractions of integers that are not too large so as not to have giant supercells. In this case we get '''q=(1/3,-1/6, 0)'''.<br>
The indirect gap is between a point close to '''K''' and the '''M''' point, see panel (a) of the figure above. We will approximate the momentum responsible for the indirect emission with '''q=K-M'''. Notice that then we should build supercells that contain this moment, so it is good to approximate it with fractions of integers that are not too large so as not to have giant supercells. In this case we get '''q=(1/3,-1/6, 0)'''.<br>
Notice that if you have a direct band gap material, the momentum '''q''' corresponding to the lowest transition is '''q=0''' and you do not need to construct special supercells to sample the corresponding vibration, it will be sufficient to displace atoms in the primitive cell.
Notice that if you have a direct band gap material, the momentum '''q''' corresponding to the lowest transition is '''q=0''' and you do not need to construct special supercells to sample the corresponding vibration, it will be sufficient to displace atoms in the primitive cell.


== Calculate phonons at momentum '''q''' of the indirect transition ==
== Calculate phonons at momentum '''q''' of the indirect transition ==


Now we need to calculate all atomic vibrations compatible with the momentum of the lowest indirect transition. In order to do so we first calculate the phonons with QE, here the inputs [http://www.yambo-code.org/educational/tutorials/files/hBN_phonons.tgz hBN_phonons.tgz], then we calculate the force constants with q3r.x and now we can interpolate phonons along all the BZ as shown in panel (b) of Figure 1. Then we use matdyn.x to calculate phonons at momentum '''q=K-M = (1/3, -1/6, 0)''':
Now we need to calculate all atomic vibrations compatible with the momentum of the lowest indirect transition. In order to do so, we first calculate the phonons with QE, here the inputs [https://www.attaccalite.com/tutorials_yambo/hBN_phonons.tgz hBN_phonons.tgz]. You calculate the ground state with the command:
pw.x -inp hBN.scf.in > output_scf
 
and then the phonons. We advise you to run phonon calculation in parallel because it will take some time:
ph.x -inp  input_ph.in > output_phonons
 
Once you have phonons for all q-points, we can generate the force constants with <code>q2r.x</code>:
 
q2r.x < q2r.in > output_q2r
 
Then we can interpolate phonons along all the BZ as shown in panel (b) of Figure 1. Then we use <code>matdyn.x</code> to calculate phonons at momentum '''q=K-M = (1/3, -1/6, 0)''' using the following input, that we will call matdyn.in :


  &input
  &input
Line 34: Line 47:
  0.3333333333333333 -0.16666666666666666666 0.0
  0.3333333333333333 -0.16666666666666666666 0.0


The obtained phonon modes correspond phonons at the vertical red line in panel(b) of Fig. 1. They are written in the ''matdyn.modes'' file with the corresponding eigenvectors and will be later used to displace atoms along the phonon modes.
You just run
 
matdyn.x < matdyn.in > output_mathdyn
 
The obtained phonon modes correspond to phonons at the vertical red line in panel(b) of Fig. 1. They are written in the ''matdyn.modes'' file with the corresponding eigenvectors and will be later used to displace atoms along the phonon modes.
If you open the 'matdyn.modes' file you will find phonon modes for the '''q=0''' and '''q=(1/3, -1/6, 0)'''  that in cartesian coordinates is (1/3,0,0). We copy the modes corresponding to the second '''q=(1/3, -1/6, 0)''' in a separate file, called ''Q2.modes'' that will look like:
If you open the 'matdyn.modes' file you will find phonon modes for the '''q=0''' and '''q=(1/3, -1/6, 0)'''  that in cartesian coordinates is (1/3,0,0). We copy the modes corresponding to the second '''q=(1/3, -1/6, 0)''' in a separate file, called ''Q2.modes'' that will look like:


Line 49: Line 66:


== Generate the supercell==
== Generate the supercell==
In this part we suppose you already installted YamboPy, if it is not the case please have a look here: [[Setting up Yambo#Setting up Yambopy]] <br>
Now we use YamboPy to generate the supercell corresponding to the momentum '''Q=(1/3, -1/6, 0)'''.  A tutorial is already present in the file ''tutorial/supercell/generate_supercells.py'' please have a look to it.
Here we provide you a simply python script to generate the displaced supercell, namely the supercell for the '''Q=(1/3, -1/6, 0)''' : [https://www.attaccalite.com/tutorials_yambo/generate_hBN_supercell.py generate_hBN_supercell.py].<br>


Now we use YamboPy to generate the supercell corresponding to the momentum '''q=(1/3, -1/6, 0)'''.  A tutorial is already present in the file ''tutorial/supercell/generate_supercells.py''.
Run the script to generate the supercell without displacing atoms ''python generate_supercells.py -N''. The script will generate a non-diagonal supercell<ref>[https://arxiv.org/abs/1510.04418 Lattice dynamics and electron-phonon coupling calculations using nondiagonal supercells], J. H. Lloyd-Williams and B. Monserrat, Phys. Rev. B '''92''', 184301(2015) </ref> in the file "sc_nondiagonal.bn.scf' that is shown below:
You can edit the file to specify the momentum '''q''', the name of the SCF initial file (uc_filnm)  and the name of the phonon mode file (mode_file).
 
    .....
    uc_filnm = 'hBN.scf.in' #pw input
    Q = [[1,-1,0],[3,6,0]] #qpoint to fold in nondiagonal supercell: Q=(1/3,-1/6,0)
    kpoints = [12,12,4]    #NB: these fractional crystal coordinates must exactly divide the kpoint mesh!
    modes_file = 'Q2.modes' #file with phonon eigenmodes
    .....
 
run the script to generate the supercell without displace atoms ''python generate_supercells.py -N''. The script will generate a non-diagonal supercell<ref>[https://arxiv.org/abs/1510.04418 Lattice dynamics and electron-phonon coupling calculations using nondiagonal supercells], J. H. Lloyd-Williams and B. Monserrat, Phys. Rev. B '''92''', 184301(2015) </ref> in the file "sc_nondiagonal.bn.scf' that is shown below:


[[File:Supercell.png|500px|center| Supercell for the momentum q=(1/3, -1/6, 0) and the corresponding reciprocal space]]
[[File:Supercell.png|500px|center| Supercell for the momentum q=(1/3, -1/6, 0) and the corresponding reciprocal space]]


The YamboPy script automatically reduce the number of k-point in such a way to have the same sampling of the corresponding primitive cell, however we advice you to check if the new k-point grid is what you expect, and modify it in case of incorrect grid.<br>
The YamboPy script automatically reduces the number of k-point in such a way to have the same sampling of the corresponding primitive cell, however we advise you to check if the new k-point grid is what you expect, and modify it in case of the incorrect grid.<br>
In the same way you can generate the input file for non-self-consistent calculation in the supercell.
In the same way, you can generate the input file for non-self-consistent calculation in the supercell.


==Calculate the optical spectra in the supercell==
==Calculate the optical spectra in the supercell==


Now you have to calculate the optical spectra and exciton in the new supercell. Do not forget to increase the number of conduction bands in both the screening the Bethe-Salpeter equation. For example in the supercell shown above there are 24 atoms, 6 times more than in the original cell, so you will have to multiply the number of bands by 6, if in the base cell you have used 40 bands here you will have to put 240 to have the same convergence parameters. Then print exciton according to their energy with the command ypp -e s.<br>
Now you have to calculate the optical spectra and exciton in the new supercell. Do not forget to increase the number of conduction bands in both the screening and the Bethe-Salpeter equation. For example in the supercell shown above, there are 24 atoms, 6 times more than in the original cell, so you will have to multiply the number of bands by 6, if in the base cell you have used 40 bands here you will have to put 240 to have the same convergence parameters. Then print exciton according to their energy with the command ypp -e s.<br>


'''N. B. ''': in order to not recalculate W for each atomic displacement you can perform calculations without symmetries in the pristine supercell and then copy the corresponding dielectric constant in the calculations with displaced atoms, this is usually a safe approximation described in Ref.<ref name="cann"></ref>.<br>
'''N. B. ''': in order to not recalculate W for each atomic displacement you can perform calculations without symmetries in the pristine supercell and then copy the corresponding dielectric constant in the calculations with displaced atoms, this is usually a safe approximation described in Ref.<ref name="cann"></ref>.<br>


After solving the BSE in the supecell you will find the excitons that were already present in the primary cell (within the numerical noise) and new lower energy excitons, with zero dipole matrix elements, that correspond to the indirect excitons that have now been  mapped at '''q=0''', something like:
After solving the BSE in the supercell you will find the excitons that were already present in the primary cell (within the numerical noise) and new lower energy excitons, with zero dipole matrix elements, that correspond to the indirect excitons that have now been  mapped at '''q=0''', something like:




Line 90: Line 100:
     ................
     ................


This result shows that indirect exciton without the coupling with phonon do not contribute the optical response.<br>
This result shows that indirect exciton without the coupling with phonon does not contribute to the optical response.<br>
 
==Displace atoms and calculate dipoles derivatives==
Now you can generate the displaced supercell for all the phonon modes compatible with the indirect band gap '''Q''' point by using the script: [https://www.attaccalite.com/tutorials_yambo/generate_hBN_displaced_supercell.py generate_hBN_displaced_supercell.py].  <br>
The script will produce a set of input files for each of the 12 phonon modes at '''Q=(1/3,-1/6,0)'''. You have to perform BSE calculation for each one of these modes and get exciton dipoles.<br>
For each phonon mode the atoms are displaced along the corresponding eigenvector read from the "Q2.modes" file multiplied for 0.1 Bohr (the variable Temp=0.1), search for the following line in [https://www.attaccalite.com/tutorials_yambo/generate_hBN_displaced_supercell.py generate_hBN_displaced_supercell.py]:
 
  ... 
  sc.displace(eivs,nd_atom_positions,Temp=0.1) # Generate list of displaced supercells as PwIn objects called 'modes_qe'
  ...
 
this is usually a good value to get correct derivatives. In principle, it is possible to test different displacement lengths to get good second derivatives. The general rule is that the displacement should not be too small to avoid numerical noise and not too large to avoid contribution from third or forth order derivatives.<br>
Once you get dipoles for a given phonon mode you can calculate the second order dipole derivatives using a finite difference formula and the fact the first order derivatives are zero by construction as:
<center>
<math display="inline">  \frac{\partial^2 | T^S |^2}{\partial R_{\lambda,q}^2 } = 2 \frac{| T^S (R=\Delta R) |^2 - | T (R=0) |^2}{\Delta R^2} = 2 \frac{| T^S (R=\Delta R) |^2}{\Delta R^2}</math>
</center>
In the Ref.<ref name=fprl></ref><ref name=strain></ref> we found that a single point formula above is enough to get good second derivatives, taking into account that the first derivative is zero, however you can test higher-order formulas to be sure that the result is correct, see for example [https://en.wikipedia.org/wiki/Finite_difference#Higher-order_differences higher-order differences]<br>
 
'''Important''': in the file produced by ''ypp'' the oscillator strengths are normalized to have the maximum equal to one, before calculating the derivatives remember to remove this normalization by multiplying all Oscillator Strengths for the maximum residual value, in the previous example:
 
#    Maximum Residual Value =  0.38659E+01
 
==Luminescence==


==Displace atoms and calculate dipoles derivatives and luminescence==
Now you can generate the displaced supercell for all the phonon modes compatible with the indirect band gap '''q''' point by doing:  ''python generate_supercells.py -S''. The script will produce a set of input files for each of the 12 phonon modes at '''q=(1/3,-1/6,0)'''. You have to perform BSE calculation for each one of these modes and get exciton dipoles.<br>
Notice that the dipole matrix elements that will enter in optical absorption and luminescence depend form the direction of the electric field. In this tutorial we average on x and y directions because we are interested in the in-place luminescence. In general is it possible to select specific directions to reproduce particular experimental setups.<br>
Once you get dipoles for a give phonon mode you can calculate the second order dipole derivatives using a finite different formula and the fact the first order derivatives are zero by construction.<br>
Now you have all the information necessary to construct the emission spectra. <br>Using the formula, derived in Ref.<ref name=fprl></ref> you obtain the phonon-assisted luminescence as:  
Now you have all the information necessary to construct the emission spectra. <br>Using the formula, derived in Ref.<ref name=fprl></ref> you obtain the phonon-assisted luminescence as:  
[[File:Light emission.png|center|Light emission formula]]
[[File:Light emission.png|center|Light emission formula]]
Line 101: Line 129:
in this formula:
in this formula:
* <span style="color:blue"> n<sub>r</sub>(ω)</span> is the refractive index, that usually can be approximated with a constant in the luminescence energy range.
* <span style="color:blue"> n<sub>r</sub>(ω)</span> is the refractive index, that usually can be approximated with a constant in the luminescence energy range.
* E<sup>S</sup> are the excitonic energies in the undistorted supercell, including indirect excitons
* E<sup>S</sup><sub>'''q'''</sub> are the excitonic energies in the undistorted supercell, including indirect excitons
* <span style="color:red"> B(E<sup>S</sup>,T<sub>exc</sub>)</span> is the Bose occupation of excitons, that can be approximated with a Boltzman function, see Ref.~<ref name=fprl></ref>
* <span style="color:red"> B(E<sup>S</sup>,T<sub>exc</sub>)</span> is the Bose occupation of excitons, that can be approximated with a Boltzman function, see Ref.<ref name=fprl></ref><ref name=strain></ref>
* <span style="color:orange">T<sub>exc</sub></span> is the excitonic temperature that should be obtained from experimental measurements or used as a parameters, for a discussion see Ref.<ref name=fprl></ref>
* <span style="color:orange">T<sub>exc</sub></span> is the excitonic temperature that should be obtained from experimental measurements or used as a parameters, for a discussion see Ref.<ref name=fprl></ref>
* <span style="color:green"> d<sup>2</sup>|T<sup>S</sup>|<sup>2</sup>/dR<sup>2</sup><sub>λ'''q'''</sub></span> are the derivatives of the exciton dipole matrix elements for a given phonon mode
* <span style="color:green"> d<sup>2</sup>|T<sup>S</sup>|<sup>2</sup>/dR<sup>2</sup><sub>λ'''q'''</sub></span> are the derivatives of the exciton dipole matrix elements for a given phonon mode
* <span style="color:violet">Ω<sub>λ,'''q'''</sub></span> are the phonon frequencies and the sum on '''q''' is on the different supercells obtained from phonon modes responsible for the luminescence, in this tutorial there is just a single '''q''' point.
* <span style="color:violet">Ω<sub>λ,'''q'''</sub></span> are the phonon frequencies and the sum on '''q''' is on the different supercells obtained from phonon modes responsible for the luminescence, in this tutorial there is just a single '''q''' point.
In general due to the Bose (or Boltzman) factor only the lower excitons (often only the lowest one) contribute to the luminescence signal.<br>
*  <span style="color:brown"> η </span> is the exciton line-width that is given as input parameter to define the broadening of the spectra
Notice that in this formulation we occupied exciton as Boson (or Boltzman particles), in principle it is possible to define a '''excitonic occupation''' starting from a quasi-equilibrium distribution of excited electron-hole, for a discussion see Ref.<ref name='cann'></ref>.<br>
 
In order to '''speed up calculations''' you can perform all calculation without symmetries and copy the dielectric constant (ndb.em1s* or ndb.pp* files) from the undistorted supercell to the displaced ones. In this case if you do not need to calculate GW correction, for example using a scissor, you can also reduce the number of bands in the the non-self-consistent calculation to the one required by the BSE.<br>
In the h-BN example shown here, the T<sub>exc</sub> was obtained from experimental measurements, only the lowest two excitons were included in the sum and the Bose function was replaced by a Boltzmann distribution with the energy zero fixed at the lowest excitonic energy. An appropriate scissor operator independent of the atomic displacements was added in the calculation. The final result is shown in the figure above and compared with the experimental measurement at 10 Kelvin
If you apply this formula to the hBN case with the appropriate scissor operator you get:
[[File:Lum spectra.png|center|800px|Luminescence spectra]]
[[File:Lum spectra.png|center|800px|Luminescence spectra]]
'''Some additional considerations on luminescence calculations'''
* In general due to the '''Bose''' (or '''Boltzmann''') factor only the lower excitons (often only the lowest one) contribute to the luminescence signal
* The lowest excitons are  '''degenerate''' all of them have to be included in the sum, as in the h-BN example
* In the present formulation of luminescence spectra excitons are treated  as Bosons (or Boltzman particles), in principle it is possible to define a '''excitonic occupation''' starting from a quasi-equilibrium distribution of excited electron-hole, but this requires a rotation of the electron-hole occupations in the excitonic base for a discussion see Ref.<ref name='cann'></ref><ref name='mprl'></ref>
* In order to '''speed up calculations''' you can perform all calculations without symmetries and copy the dielectric constant (''ndb.em1s*'' or ''ndb.pp*'' files) from the undistorted supercell to the displaced ones. In this case, if you do not need to calculate GW correction, for example using a scissor, you can also reduce the number of bands in the non-self-consistent calculation to the one required by the BSE, for a discussion see Ref<ref name=strain></ref>
* Notice that the '''dipole matrix elements''' that will enter in optical absorption and luminescence depend form the direction of the electric field. In this example shown before the luminescence has been averaged in ''x'' and ''y'' directions because we were interested in the in-place luminescence. In general is it possible to select specific directions to reproduce particular experimental setups<ref name=cann></ref><ref name=fprl></ref>.<br>
==Some example input files for h-BN==
In this section, I will provide some input files to repeat calculations in h-BN. Luminescence spectra were calculated using a 12x12x4 k-point grid and 200 bands for the dielectric constant in the primitive cell and 3000 mHa block size. In the supercell used to generate the luminescence spectra, there are 24 atoms, this means that the total number of bands has to be increased to 1200 and the corresponding k-point sampling reduced approximately to 12x2x4, this is automatically done by the Yambopy.
Here are the input files:
* Primitive cell SCF and NSCF files and inputs for phonon calculations: [https://media.yambo-code.eu/educational/tutorials/files/Luminescence/hBN_scf_nscf_phonons.tgz  hBN_scf_nscf_phonons.tgz]
* The '''Q=(1/3,1/6,0)''' phonon mode generated by matdyn.x: [https://media.yambo-code.eu/educational/tutorials/files/Luminescence/Q_mode.tgz Q_mode.tgz]
* The non-diagonal supercells for SCF and NSCF calculations (without symmetries) and the Yambo file for the BSE [https://media.yambo-code.eu/educational/tutorials/files/Luminescence/BSE_supercell.tgz  BSE_supercell.tgz]
* The displaced supercells for exciton-phonon calculations [https://media.yambo-code.eu/educational/tutorials/files/Luminescence/Displaced_Cells.tgz Displaced_Cells.tgz]
You can the same BSE input file in all the displaced supercells. <br>
If you did not use symmetries, you can avoid recalculating the dielectric constant by copying the '''SAVE/ndb.em1s*''' files from the undistributed supercell to the displaced ones.


== References ==
== References ==

Latest revision as of 07:53, 28 May 2024

Finite atomic displacements

In recent years, several articles have been published with Yambo, who calculated the phonon-assisted luminescence by means of finite atomic displacements[1][2][3][4][5]. In this tutorial, we will show how to use YamboPy in combination with Yambo to perform this kind of calculation. For a general review of finite displacement calculations of vibrational properties we recommend this article[6].
Notice that the calculation of phonon-assisted luminescence by finite atomic displacements are quite involved and expensive from a computational point of view, for this reason, they are limited to relatively simple systems.
In this tutorial, we will follow the approach of Ref.[2], and calculate luminescence using the Roosbroeck–Shockley (RS) relation applied to the excitonic case.
If you use this approach to calculate luminescence or phonon-assisted absorption please cite references [1] and [2].
Important: This tutorial requires that you are familiar with Bethe-Salpeter calculations with Yambo, and phonons with Quantum-Espresso, and YamboPy. If it is not the case please study the corresponding tutorial before continuing.

Locate the lowest indirect exciton (or indirect band gap)

In this tutorial as example, we will consider the hexagonal-BN, which is an indirect insulator. The first step to calculate the phonon-assisted luminescence is to locate the lowest indirect exciton. The cleanest strategy to identify the lowest excitation would be to calculate the excitons along the whole Irreducible Brillouin zone(IBZ), then interpolate them as explained in Interpolate exciton dispersion and find the q point that corresponds to the minimum.
A simpler approach is to use the GW (or Kohn-Sham) band structure to find the momentum responsible for the indirect band gap, in the major part of cases this corresponds to the lowest exciton.
In the h-BN case we have:

Yambo tutorial image

The indirect gap is between a point close to K and the M point, see panel (a) of the figure above. We will approximate the momentum responsible for the indirect emission with q=K-M. Notice that then we should build supercells that contain this moment, so it is good to approximate it with fractions of integers that are not too large so as not to have giant supercells. In this case we get q=(1/3,-1/6, 0).
Notice that if you have a direct band gap material, the momentum q corresponding to the lowest transition is q=0 and you do not need to construct special supercells to sample the corresponding vibration, it will be sufficient to displace atoms in the primitive cell.

Calculate phonons at momentum q of the indirect transition

Now we need to calculate all atomic vibrations compatible with the momentum of the lowest indirect transition. In order to do so, we first calculate the phonons with QE, here the inputs hBN_phonons.tgz. You calculate the ground state with the command:

pw.x -inp hBN.scf.in > output_scf

and then the phonons. We advise you to run phonon calculation in parallel because it will take some time:

ph.x -inp  input_ph.in > output_phonons

Once you have phonons for all q-points, we can generate the force constants with q2r.x:

q2r.x < q2r.in > output_q2r

Then we can interpolate phonons along all the BZ as shown in panel (b) of Figure 1. Then we use matdyn.x to calculate phonons at momentum q=K-M = (1/3, -1/6, 0) using the following input, that we will call matdyn.in :

&input
   asr='crystal',
   flfrc='bn.fc',
   flfrq='bn.freq',
   deltaE=1.d0,
   q_in_cryst_coord=.true.
   fleig='bn.eig'
/
2
0 0 0
0.3333333333333333 -0.16666666666666666666 0.0

You just run

matdyn.x < matdyn.in > output_mathdyn

The obtained phonon modes correspond to phonons at the vertical red line in panel(b) of Fig. 1. They are written in the matdyn.modes file with the corresponding eigenvectors and will be later used to displace atoms along the phonon modes. If you open the 'matdyn.modes' file you will find phonon modes for the q=0 and q=(1/3, -1/6, 0) that in cartesian coordinates is (1/3,0,0). We copy the modes corresponding to the second q=(1/3, -1/6, 0) in a separate file, called Q2.modes that will look like:

     diagonalizing the dynamical matrix ...

q =       0.3333      0.0000      0.0000
**************************************************************************
    freq (    1) =       5.194139 [THz] =     173.257815 [cm-1]
(  0.000000  -0.000000    -0.000000  -0.000000    -0.274372  -0.475224   )
( -0.000000   0.000000    -0.000000  -0.000000    -0.445962   0.000001   )
( -0.000000  -0.000000    -0.000000  -0.000000    -0.222981  -0.386214   )
(  0.000000   0.000000    -0.000000   0.000000    -0.548742   0.000000   )
...........................

Generate the supercell

In this part we suppose you already installted YamboPy, if it is not the case please have a look here: Setting up Yambo#Setting up Yambopy
Now we use YamboPy to generate the supercell corresponding to the momentum Q=(1/3, -1/6, 0). A tutorial is already present in the file tutorial/supercell/generate_supercells.py please have a look to it. Here we provide you a simply python script to generate the displaced supercell, namely the supercell for the Q=(1/3, -1/6, 0) : generate_hBN_supercell.py.

Run the script to generate the supercell without displacing atoms python generate_supercells.py -N. The script will generate a non-diagonal supercell[7] in the file "sc_nondiagonal.bn.scf' that is shown below:

Supercell for the momentum q=(1/3, -1/6, 0) and the corresponding reciprocal space

The YamboPy script automatically reduces the number of k-point in such a way to have the same sampling of the corresponding primitive cell, however we advise you to check if the new k-point grid is what you expect, and modify it in case of the incorrect grid.
In the same way, you can generate the input file for non-self-consistent calculation in the supercell.

Calculate the optical spectra in the supercell

Now you have to calculate the optical spectra and exciton in the new supercell. Do not forget to increase the number of conduction bands in both the screening and the Bethe-Salpeter equation. For example in the supercell shown above, there are 24 atoms, 6 times more than in the original cell, so you will have to multiply the number of bands by 6, if in the base cell you have used 40 bands here you will have to put 240 to have the same convergence parameters. Then print exciton according to their energy with the command ypp -e s.

N. B. : in order to not recalculate W for each atomic displacement you can perform calculations without symmetries in the pristine supercell and then copy the corresponding dielectric constant in the calculations with displaced atoms, this is usually a safe approximation described in Ref.[1].

After solving the BSE in the supercell you will find the excitons that were already present in the primary cell (within the numerical noise) and new lower energy excitons, with zero dipole matrix elements, that correspond to the indirect excitons that have now been mapped at q=0, something like:


#    Maximum Residual Value =  0.38659E+01
#   
#    E [ev]             Strength           Index
#
    5.7165937         0.47290171E-11      1.0000000         <-- Indirect exciton mapped at q=0
    5.7166047         0.58239158E-09      2.0000000         <-- Indirect exciton mapped at q=0
    5.7367945         0.31830746E-09      3.0000000         <-- Indirect exciton mapped at q=0
    5.7368207         0.33674005E-10      4.0000000         <-- Indirect exciton mapped at q=0
    5.80542803        0.100763231E-6      5.00000000        <-- Direct exciton
    5.80598068        0.384604526E-8      6.00000000        <-- Direct exciton
    5.88944197         1.00000000         7.00000000        <-- Direct exciton
    5.88967037        0.102969212E-1      8.00000000        <-- Direct exciton
    ................

This result shows that indirect exciton without the coupling with phonon does not contribute to the optical response.

Displace atoms and calculate dipoles derivatives

Now you can generate the displaced supercell for all the phonon modes compatible with the indirect band gap Q point by using the script: generate_hBN_displaced_supercell.py.
The script will produce a set of input files for each of the 12 phonon modes at Q=(1/3,-1/6,0). You have to perform BSE calculation for each one of these modes and get exciton dipoles.
For each phonon mode the atoms are displaced along the corresponding eigenvector read from the "Q2.modes" file multiplied for 0.1 Bohr (the variable Temp=0.1), search for the following line in generate_hBN_displaced_supercell.py:

 ...  
 sc.displace(eivs,nd_atom_positions,Temp=0.1) # Generate list of displaced supercells as PwIn objects called 'modes_qe'
 ...

this is usually a good value to get correct derivatives. In principle, it is possible to test different displacement lengths to get good second derivatives. The general rule is that the displacement should not be too small to avoid numerical noise and not too large to avoid contribution from third or forth order derivatives.
Once you get dipoles for a given phonon mode you can calculate the second order dipole derivatives using a finite difference formula and the fact the first order derivatives are zero by construction as:

[math]\displaystyle{ \frac{\partial^2 | T^S |^2}{\partial R_{\lambda,q}^2 } = 2 \frac{| T^S (R=\Delta R) |^2 - | T (R=0) |^2}{\Delta R^2} = 2 \frac{| T^S (R=\Delta R) |^2}{\Delta R^2} }[/math]

In the Ref.[2][3] we found that a single point formula above is enough to get good second derivatives, taking into account that the first derivative is zero, however you can test higher-order formulas to be sure that the result is correct, see for example higher-order differences

Important: in the file produced by ypp the oscillator strengths are normalized to have the maximum equal to one, before calculating the derivatives remember to remove this normalization by multiplying all Oscillator Strengths for the maximum residual value, in the previous example:

#    Maximum Residual Value =  0.38659E+01

Luminescence

Now you have all the information necessary to construct the emission spectra.
Using the formula, derived in Ref.[2] you obtain the phonon-assisted luminescence as:

Light emission formula

in this formula:

  • nr(ω) is the refractive index, that usually can be approximated with a constant in the luminescence energy range.
  • ESq are the excitonic energies in the undistorted supercell, including indirect excitons
  • B(ES,Texc) is the Bose occupation of excitons, that can be approximated with a Boltzman function, see Ref.[2][3]
  • Texc is the excitonic temperature that should be obtained from experimental measurements or used as a parameters, for a discussion see Ref.[2]
  • d2|TS|2/dR2λq are the derivatives of the exciton dipole matrix elements for a given phonon mode
  • Ωλ,q are the phonon frequencies and the sum on q is on the different supercells obtained from phonon modes responsible for the luminescence, in this tutorial there is just a single q point.
  • η is the exciton line-width that is given as input parameter to define the broadening of the spectra

In the h-BN example shown here, the Texc was obtained from experimental measurements, only the lowest two excitons were included in the sum and the Bose function was replaced by a Boltzmann distribution with the energy zero fixed at the lowest excitonic energy. An appropriate scissor operator independent of the atomic displacements was added in the calculation. The final result is shown in the figure above and compared with the experimental measurement at 10 Kelvin

Luminescence spectra

Some additional considerations on luminescence calculations

  • In general due to the Bose (or Boltzmann) factor only the lower excitons (often only the lowest one) contribute to the luminescence signal
  • The lowest excitons are degenerate all of them have to be included in the sum, as in the h-BN example
  • In the present formulation of luminescence spectra excitons are treated as Bosons (or Boltzman particles), in principle it is possible to define a excitonic occupation starting from a quasi-equilibrium distribution of excited electron-hole, but this requires a rotation of the electron-hole occupations in the excitonic base for a discussion see Ref.[1][4]
  • In order to speed up calculations you can perform all calculations without symmetries and copy the dielectric constant (ndb.em1s* or ndb.pp* files) from the undistorted supercell to the displaced ones. In this case, if you do not need to calculate GW correction, for example using a scissor, you can also reduce the number of bands in the non-self-consistent calculation to the one required by the BSE, for a discussion see Ref[3]
  • Notice that the dipole matrix elements that will enter in optical absorption and luminescence depend form the direction of the electric field. In this example shown before the luminescence has been averaged in x and y directions because we were interested in the in-place luminescence. In general is it possible to select specific directions to reproduce particular experimental setups[1][2].

Some example input files for h-BN

In this section, I will provide some input files to repeat calculations in h-BN. Luminescence spectra were calculated using a 12x12x4 k-point grid and 200 bands for the dielectric constant in the primitive cell and 3000 mHa block size. In the supercell used to generate the luminescence spectra, there are 24 atoms, this means that the total number of bands has to be increased to 1200 and the corresponding k-point sampling reduced approximately to 12x2x4, this is automatically done by the Yambopy. Here are the input files:

  • The Q=(1/3,1/6,0) phonon mode generated by matdyn.x: Q_mode.tgz
  • The non-diagonal supercells for SCF and NSCF calculations (without symmetries) and the Yambo file for the BSE BSE_supercell.tgz
  • The displaced supercells for exciton-phonon calculations Displaced_Cells.tgz

You can the same BSE input file in all the displaced supercells.
If you did not use symmetries, you can avoid recalculating the dielectric constant by copying the SAVE/ndb.em1s* files from the undistributed supercell to the displaced ones.

References

  1. 1.0 1.1 1.2 1.3 1.4 Theory of phonon-assisted luminescence in solids: Application to hexagonal boron nitride, E. Cannuccia, B. Monserrat and C. Attaccalite, Phys. Rev. B 99, 081109(R) (2019)
  2. 2.0 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Exciton-Phonon Coupling in the Ultraviolet Absorption and Emission Spectra of Bulk Hexagonal Boron Nitride, F. Paleari et al. PRL 122, 187401(2019)
  3. 3.0 3.1 3.2 3.3 Excitons under strain: light absorption and emission in strained hexagonal boron nitride, P. Lechifflart, F. Paleari and C. Attaccalite, SciPost Phys. 12, 145(2022).
  4. 4.0 4.1 Phonon-Assisted Luminescence in Defect Centers from Many-Body Perturbation Theory, F. Libbi, P. M. M. C. de Melo, Z. Zanolli, M. J. Verstraete, and N. Marzari, Phys. Rev. Lett. 128, 167401 (2022)
  5. Pressure dependence of electronic, vibrational and optical properties of wurtzite-boron nitride, M. Silvetti, C. Attaccalite, E. Cannuccia, Physical Review Materials 7, 055201 (2023)
  6. Electron-phonon coupling from finite differences, Bartomeu Monserrat, J. Phys.: Condens. Matter 30 083001(2018)
  7. Lattice dynamics and electron-phonon coupling calculations using nondiagonal supercells, J. H. Lloyd-Williams and B. Monserrat, Phys. Rev. B 92, 184301(2015)