Pump and Probe: Time resolved ARPES

From The Yambo Project
Jump to navigation Jump to search

In this tutorial we show how to reconstruct the TR-ARPES spectral function in presence of excitons. See Refs.[1] [2]

ARPES from real-time propagation

The first part describes how to reconstruct the spectral function from after real-time propagation. If the real-time propagation has been done at the TD-HSEX level in a material with (strongly) bound excitons, and the pump pulse is tuned in resonance with an excitonic peak, the spectral function will show a fingerprint of the excitonic state, e.g. a replica of the valence band.


Store the history of the density matrix to disk

In order to reconstruct the ARPES response function, just run any real time propagation tutorial base on the `yambo_rt` executable (see for example this one: Real_time_Bethe-Salpeter_Equation_(density_matrix_only)) and add the following line to the input file

SaveGhistory

Please be aware that this will create a very large file containing the whole history of the density matrix. You can control how often the density matrix is written to disk with the second value in this input variable

% IOtime
 0.5 |5.0 |0.5 |  fs    # [RT] Time between to consecutive I/O (J,P,OCCs - GF - OUTPUT)
%

Usually the density matrix is used for restart only, and saving every 5 fs or so is reasonable. To reconstruct the TR-ARPES response function however, one needs to perform a Fourier transform, and it is usually need to write data more often to disk.

Run the real time simulation

yambo_rt -F inputs/td_run -J TD-RUN-NAME -C TD-RUN-NAME


Use the GKBA approach to reconstruct the spectral function

After the history is saved to disk, you can use `ypp_rt` to reconstruct the spectral function. Here an input file to be used to this end

TDplots                       # [R] Real-Time Post-Processing
RTGtwotimes                      # [R] Construct G<(t,tp)
RTtime                         # [R] Post-Processing kind: function of time
TimeStep= 0.01      fs      # Time step
% TimeRange
 25.00000 | 75.0000 | fs      # Time-window where processing is done
%
LoadGhistory                  # [NEGF] Build the NEQ density from the G_lesser
% EnRngeRt
 -2.00000 | 14.00000 | eV      # Energy range
%
ETStpsRt= 501                 # Total Energy steps
BuildGles
KeepCC        # This includes the contribiution from the c and c' terms of the density matrix in conduction

DampFactor= 50.0    meV
RhoDeph= 5.0    meV
INTERP_mode= "BOLTZ"              # Interpolation mode (NN=nearest point, BOLTZ=boltztrap aproach)
OutputAlat= 3.851738           # [a.u.] Lattice constant used for "alat" ouput format
cooIn= "rlu"                   # Points coordinates (in) cc/rlu/iku/alat
cooOut= "rlu"                  # Points coordinates (out) cc/rlu/iku/alat
INTERP_Shell_Fac= 20.00000     # The bigger it is a higher number of shells is used
#BANDS_path= "L G X"            # BANDS path points labels (G,M,K,L...)
BANDS_steps= 50                # Number of divisions
BANDS_built_in                 # Print the bands of the generating points of the circuit using the nearest internal point
%BANDS_kpts                    # K points of the bands circuit
   0.5000000 |  0.5000000 |  0.5000000 | #L(111)
   0.0000000 |  0.0000000 |  0.0000000 | #G
   0.0000000 |  0.5000000 |  0.5000000 | #X
%

You can also replace

BuildGles

with

BuildGret

Some extra options, which you can add to the input file, are available. For example

IncludeEQocc  # This includes the contribiution of the equilibrium occupations
KeepCV        # This includes the contribiution from the c and v  terms of the density matrix
KeepVC        # This includes the contribiution from the v and v' terms of the density matrix in valence

After your input file is ready just run

ypp_rt -F inputs/Gless_reconstruc -J "Gless,TD-RUN-NAME" -C TD-RUN-NAME



ARPES as BSE post processing

Warning: this is not yet available in the GPL release. You can download and use the following yambo fork if you are interested: https://gitlab.com/sangallidavide/lumen/-/tree/phys-excitons

In this second part we show instead how to simply reconstruct the spectral function from a post-porcessing of a BSE simulations at all transferred momenta in the IBZ. The BSE eigenvectors are needed. They can be obtained either via direct diagonalization or via iterative solvers like Slepc. The excitonic population is also needed as an input. The final the spectral functio will very similar to the real time approach if the population is assumed to be peaked at the bright excitonic state resonant with the pump pulse.

After solving BSE as discussed above, with `yambo_rt`

yambo_rt -F inputs/bse -J bse_allq -C bse_allq

just use the following input file (change it according to your needs) with `ypp_rt`

TDplots                          # [R] TD observables plot
TDplotmode                       # [R] TD plot control
RTARPES                          # [R] Transient ARPES
RTtime                           # [R] Post-Processing kind: function of time

% EnRngeRt
  8.00000 | 17.00000 | eV      # Energy range
%
ETStpsRt=  901                  # Total Energy steps
DampFactor= 0.10000       eV    # Damping parameter

Gauge= "length"                  # [RT] Gauge (length|velocity)
#FullExpansion

EXCTemp = 300.00 Kn
#TRabsNExc= 6
States= "1 - 100"                  # Index of the BS state(s)

INTERP_mode= "BOLTZ"              # Interpolation mode (NN=nearest point, BOLTZ=boltztrap aproach)
INTERP_Shell_Fac= 20.00000     # The bigger it is a higher number of shells is used
BANDS_path= "L,G,X"            # BANDS path points labels (G,M,K,L...)
BANDS_steps= 50                # Number of divisions
%BANDS_kpts                    # K points of the bands circuit
  0.5000000 |  0.5000000 |  0.5000000 | #L(111)
  0.0000000 |  0.0000000 |  0.0000000 | #G
  0.0000000 |  0.5000000 |  0.5000000 | #X
%

and finally run ypp_rt

ypp_rt -F inputs/arpes_from_bse -J "ARPES,bse_allq" -C ARPES

Below the output plotted with python using different excitonic distributions

While at low temperature the signal is a replica of the valence band, at higher temperature the excitonic dispersion is obtained.

A similar feature was implemented in yambopy. See Ref.[3]

References

  1. E. Perfetto, D Sangalli, A Marini, G Stefanucci, Pump-driven normal-to-excitonic insulator transition: Josephson oscillations and signatures of BEC-BCS crossover in time-resolved ARPES, Physical Review Materials 3, 124601 (2019)
  2. D Sangalli, Excitons and carriers in transient absorption and time-resolved ARPES spectroscopy: An ab initio approach, Phys. Rev. Mat. 5, 083803 (2021)
  3. V. Gosetti, J. Cervantes-Villanueva, S. Mor, D. Sangalli, A. García-Cristóbal, et al., Unveiling exciton formation: exploring the early stages in time, energy and momentum domain preprint arXiv:2412.02507 (2025)