Exciton-phonon coupling and luminescence
In this advanced tutorial, we will calculate exciton-phonon interactions from first principles by interfacing DFPT (for phonon calculations) and BSE (for exciton calculations).
The DFTP calculations are run with Quantum ESPRESSO, while the many-body GW-BSE calculations are run with Yambo. Finally, the exciton-phonon interaction will be obtained by combining and postprocessing the databases computed in the two previous runs. The great advantage of this workflow is that the calculations can be run in the irreducible Brillouin zones both for the electronic momenta ([math]\displaystyle{ k }[/math]) and the transfer momenta ([math]\displaystyle{ Q }[/math], [math]\displaystyle{ q }[/math]) of excitons and phonons, thus speeding up considerably the jobs while reducing the IO and memory load.
We will first compute the exciton-phonon coupling matrix elements: these are the building blocks needed to construct experimental observables such as phonon-assisted optical spectra (such as luminescence), Raman spectra and exciton lifetimes. We will do this in the case of monolayer MoS2, a 2D system with large spin-orbit interaction.
As an example of application, we will consider the case of phonon-assisted luminescence. We will do this in the case of bulk hBN, a layered indirect insulator with strong electron-phonon coupling.
Note: this tutorial will be updated when new exc-ph tools become available in Yambopy (including full-python postprocessing, Raman spectra, interpolated lifetimes, etc).
Requirements
This is an advanced topic: we assume that you already know something about the theory[1][2][3][4][5][6] and applications[7][8][9][10][11][12][13][14] of exciton-phonon physics.
Also, we assume that you already know how to run both a basic Yambo GW-BSE calculation and a DFPT phonon calculation with Quantum ESPRESSO.
Besides the QE executables pw.x
and ph.x
, we also use the yambo phonon-specific executable yambo_ph
and the python utility Yambopy. The auxiliary code LetzElPhC (executable lelphc
) will be used to obtain the electron-phonon matrix elements by reading the same electronic wavefunctions used by Yambo (and stored in the SAVE
directory), while also making full use of crystal symmetries. LetzElPhC (link) will be run by Yambopy, but it must nonetheless be installed. Finally, the exciton-phonon properties can be computed either using yambo_ph
or using Yambopy itself.
Step 0: Pseudopotentials, equilibrium structure and convergence
In a real calculation, it is important to ensure that both the pseudopotential and the lattice parameters that we are using are compatible and perform well for the electronic excited states and for the lattice vibrations simultaneously. Furthermore, you have to make sure that the wave function cutoff ecutwfc
is converged with respect to the DFPT step and not just to the DFT one. This is in addition to the other customary convergence tests for DFT, DFPT, GW and BSE calculations.
This is often the most time-demanding step when starting on a new system.
For the sake of this tutorial, we assume that we have already done all these tests and we are starting the final workflow to get the exciton-phonon properties.
Step 1: scf calculation
First of all, we run a standard scf calculation with pw.x
for Yambo. We stick with non-symmorphic symmetries. At the end, we will have the QE save
directory.
This is the input:
&control wf_collect = .true., calculation = "scf", verbosity = 'high', pseudo_dir = '$PSEUDO_DIR', prefix = "mos2", outdir = '.', /&end &system ecutwfc = 100.0, occupations = 'fixed', ibrav = 4, celldm(1) = 5.9000811881, celldm(3) = 6.7795677253, nat = 3, ntyp = 2, lspinorb = .true. noncolin = .true. assume_isolated = '2D' force_symmorphic = .true. /&end &electrons electron_maxstep = 200, mixing_beta = 0.7, conv_thr = 1.d-08, /&end ATOMIC_SPECIES Mo 95.940 Mo_ONCV_PBE_FR-1.0.upf S 32.065 S_ONCV_PBE_FR-1.1.upf ATOMIC_POSITIONS { crystal } Mo 0.333333333 0.666666667 0.000000000 S 0.666666667 0.333333333 0.073413577 S 0.666666667 0.333333333 -0.073413577 K_POINTS { automatic } 6 6 1 0 0 0
Here we are using full relativistic pseudopotentials from the SG-15 database.
We can run it on our machine (for example using 4 MPI tasks) as:
mpirun -np 4 pw.x -inp mos2.scf > scf.out
Step 2: nscf calculation for Yambo
Copy the QE save
directory from the scf calculation and run the nscf calculation for any number of empty states, with the correct k
-grid we want to use in Yambo. Here we are using a badly underconverged grid of 6x6x1.
This reciprocal-space grid will also match the momentum transfer q
grid on which excitons and phonons will be defined!
The electronic wavefunctions computed at this step and stored in the new nscf save
directory will be used both by Yambo and by the electron-phonon code: this is important because using different sets of wavefunctions would lead to a phase mismatch issue in the exciton-phonon matrix elements.
The nscf input is
&control wf_collect = .true., calculation = "nscf", verbosity = 'high', pseudo_dir = '$PSEUDO_DIR', prefix = "mos2", outdir = '.', /&end &system ecutwfc = 100.0, occupations = 'fixed', ibrav = 4, celldm(1) = 5.9000811881, celldm(3) = 6.7795677253, nat = 3, ntyp = 2, lspinorb = .true. noncolin = .true. nbnd = 250 assume_isolated = '2D' force_symmorphic = .true. /&end &electrons electron_maxstep = 200, mixing_beta = 0.7, conv_thr = 1.d-08, /&end ATOMIC_SPECIES Mo 95.940 Mo_ONCV_PBE_FR-1.0.upf S 32.065 S_ONCV_PBE_FR-1.1.upf ATOMIC_POSITIONS { crystal } Mo 0.333333333 0.666666667 0.000000000 S 0.666666667 0.333333333 0.073413577 S 0.666666667 0.333333333 -0.073413577 K_POINTS { automatic } 6 6 1 0 0 0
Again, we run the calculation
mpirun -np 4 pw.x -inp mos2.nscf > nscf.out
Step 3: dvscf phonon calculation
Now we run the phonon calculation.
Copy the save
directory from the scf calculation and run ph.x
for a dvscf calculation with a standard q
-grid matching the k
-grid we wanna use in Yambo.
At the end, we will have the _ph0
directory containing the variation of the self-consistent potential, [math]\displaystyle{ \Delta V_{SCF}(q) }[/math], and the *.dyn
files with the phonon energies and eigenvectors.
NB: one could further refine the phonon energies by enforcing the acoustic sum rule, including non-analytic long-range contributions, interpolating to finer grids... all of this can be done within Quantum ESPRESSO and will not be covered in this version of the tutorial.
The input is
mos2_dvscf &inputph tr2_ph=1.0d-12, verbosity='high' prefix='mos2', fildvscf = 'mos2-dvscf', electron_phonon = 'dvscf', fildyn='mos2.dyn', epsil=.false., ldisp=.true., recover=.true., nq1=6, nq2=6, nq3=1 /
And now we run as
nohup mpirun -np 8 ph.x -inp mos2.dvscf > dvscf.out &
This time we use nohup and more processes because this calculation may take some time. It is a good idea to set recover=.true.
as in a real calculation you will easily breach walltime, and in this way you can safely restart.
Step 4: Step 4: create Yambo SAVE
directory
This is just the standard Yambo initialization: run
p2y
and then
yambo
in the nscf save
folder and then move the newly generated SAVE
directory to a convenient place.
Step 5: Step 5: run a BSE calculation
References
- ↑ Optical processes in solids, Toyozawa, Yutaka, and Chris Oxlade. Cambridge University Press, (2003).
- ↑ G. Antonius, S. G. Louie, Theory of exciton-phonon coupling, Phys. Rev. B, 105, 085111 (2022); arXiv1705.04245 (2017)
- ↑ P. Cudazzo, First-principles description of the exciton-phonon interaction: A cumulant approach, Phys. Rev. B, 102, 045136 (2020); Open access pdf from Luxembourg University
- ↑ F. Paleari, First-principles approaches to the description of indirect absorption and luminescence spectroscopy: exciton-phonon coupling in hexagonal boron nitride, PhD thesis, University of Luxembourg (2019)
- ↑ Exciton-phonon interaction calls for a revision of the “exciton” concept, F. Paleari, A. Marini, Phys. Rev. B, 106, 125403 (2022)
- ↑ Exciton-phonon coupling and phonon-assisted luminescence in hexagonal Boron Nitride nanostructures, PhD Thesis, Pierre Lechifflart (2023)
- ↑ F. Paleari et al., Exciton-Phonon Coupling in the Ultraviolet Absorption and Emission Spectra of Bulk Hexagonal Boron Nitride, Phys. Rev. Lett. 122, 187401 (2019); arXiv1810.089776
- ↑ E. Cannuccia, B. Monserrat and C. Attaccalite, Theory of phonon-assisted luminescence in solids: Application to hexagonal boron nitride, Phys. Rev. B 99, 081109(R) (2019); arXiv1807.11797
- ↑ Exciton-Phonon Interaction and Relaxation Times from First Principles, Hsiao-Yi Chen, Davide Sangalli, and Marco Bernardi, Phys. Rev. Lett. 125, 107401(2020)
- ↑ Distinguishing different stackings in layered materials via luminescence spectroscopy, M. Zanfrognini et al. Phys. Rev. Lett. 131, 206902 (2023)
- ↑ P. Lechifflart, F. Paleari, D. Sangalli, C. Attaccalite, First-principles study of luminescence in hexagonal boron nitride single layer: Exciton-phonon coupling and the role of substrate, Phys. Rev. M, 7 (2), 024006 (2023); arXiv2212.1047
- ↑ Exciton Lifetime and Optical Line Width Profile via Exciton–Phonon Interactions: Theory and First-Principles Calculations for Monolayer MoS2, Y-h Chan, J. B. Haber, M. H. Naik, J. B. Neaton, D. Y. Qiu, F. H. da Jornada, S. G. Louie, Nano Lett., 23, 9 (2023)
- ↑ Optical absorption and photoluminescence of single layer boron nitride from a first principles cumulant approach, G. Marini, M. Calandra, P. Cudazzo, Nano Lett., 24, 20, 6017 (2024)
- ↑ Origin of Interlayer Exciton–Phonon Coupling in 2D Heterostructures, M. Nalabothula, S. Reichardt, L. Wirtz, Nano Lett., 25, 15 (2025)