Scattering approximations in transport calculations

Queries about input and output files, running specific calculations, etc.


Moderators: Global Moderator, Moderator

Post Reply
Message
Author
hongocnam
Newbie
Newbie
Posts: 4
Joined: Thu May 02, 2024 8:36 pm

Scattering approximations in transport calculations

#1 Post by hongocnam » Fri Jun 27, 2025 2:43 pm

Hi everyone,

Related to transport calculations, could you please share related information on the formula or references on the definition of e-ph scattering approximations (ELPH_SCATTERING_APPROX) implemented in VASP? I can find several approximations that are presented as options, but there is not a clear, specific definition of these approaches. Could you please describe the significant difference implemented in VASP or at least the references?
Thank you for your support.


henrique_miranda
Global Moderator
Global Moderator
Posts: 560
Joined: Mon Nov 04, 2019 12:41 pm
Contact:

Re: Scattering approximations in transport calculations

#2 Post by henrique_miranda » Mon Jun 30, 2025 1:45 pm

Hi,

Again, sorry for my delay in answering to you.
As I have written in your other post, I have updated the https://www.vasp.at/wiki/index.php/ELPH ... ING_APPROX wiki page to show the different scattering approximations we implemented to solve the Boltzman equation.


hongocnam
Newbie
Newbie
Posts: 4
Joined: Thu May 02, 2024 8:36 pm

Re: Scattering approximations in transport calculations

#3 Post by hongocnam » Thu Jul 03, 2025 3:49 am

Hi Henrique Miranda,
It's wonderful. I appreciate your support very much.

Besides, in OUTCAR, the average relaxation time value at different temperatures was shown after calculations.
However, it seems that there is no information on how the relaxation time changes at different energy ranges around the Fermi level.
So, is it possible to print out relaxation time values as a function of energy?

Many thanks,
Benjamin


henrique_miranda
Global Moderator
Global Moderator
Posts: 560
Joined: Mon Nov 04, 2019 12:41 pm
Contact:

Re: Scattering approximations in transport calculations

#4 Post by henrique_miranda » Thu Jul 03, 2025 7:43 am

Hi,

The lifetime that is computed in the OUTCAR file is our best try to compute a value which when used as a constant relaxation time should yield the same result as the full calculation.
The formula implemented is this one:
\(
\tau_{\mathrm{avg}} = \frac{ \sum_{n, \mathbf{k}, s} \tau_{n \mathbf{k} s} \, f'\left( \epsilon_{n \mathbf{k} s} - \mu \right) }
{ \sum_{n, \mathbf{k}, s} f'\left( \epsilon_{n \mathbf{k} s} - \mu \right) }
\)

with
\(
f'(x) = \frac{ e^{x / (k_B T)} }{ \left( e^{x / (k_B T)} + 1 \right)^2 }
\)

Note that this is not well defined for T=0 so that is why you might see some NaN in the OUTCAR.
It can be fixed using the tetrahedron method but I did not get around to do it.

Yes it is possible to plot the lifetimes of each of the KS states as function of their energy.
We are working on providing this functionality using py4vasp.
In the meantime you can use a simple python script that reads the hdf5 file like this one:

Code: Select all

import h5py
import matplotlib.pyplot as plt

itemp = 0
with h5py.File('vaspout.h5', 'r') as f:
    ncalculators = f['/results/electron_phonon/electrons/self_energy_meta/ncalculators'][()]
    for i in range(ncalculators):
        scattering_approx = f[f'/results/electron_phonon/electrons/self_energy_{i+1}/scattering_approximation'][()]
        if "SERTA" not in scattering_approx.decode('utf-8'): continue
        fan_re = f[f'/results/electron_phonon/electrons/self_energy_{i+1}/selfen_fan'][:]
        energies = f[f'/results/electron_phonon/electrons/self_energy_{i+1}/energies'][:]
        fan = fan_re[:,:,:,0] + 1j * fan_re[:,:,:,1]
        x=energies.flatten()
        y=abs(fan[:,:,itemp].flatten().imag)
        plt.scatter(x,y,label=i)
        break
plt.legend()
plt.show()

hongocnam
Newbie
Newbie
Posts: 4
Joined: Thu May 02, 2024 8:36 pm

Re: Scattering approximations in transport calculations

#5 Post by hongocnam » Fri Jul 04, 2025 6:54 am

Hi,
It's great to hear that p4vasp will be updated with this option.
Btw, I noticed that warnings were added for ERTA_LAMBDA and ERTA_TAU due to wrong implementation in the 6.5.1 version. I tried all the approximations by setting: "ELPH_SCATTERING_APPROX = SERTA MRTA_LAMBDA MRTA_TAU ERTA_LAMDBA ERTA_TAU". However, in OUTCAR, only four scatterings are implemented (N=4) instead of five (N=5). I found that ERTA_LAMDBA is missing. Possibly there is a bug here? Could you please check it?

Thanks,
Benjamin


henrique_miranda
Global Moderator
Global Moderator
Posts: 560
Joined: Mon Nov 04, 2019 12:41 pm
Contact:

Re: Scattering approximations in transport calculations

#6 Post by henrique_miranda » Fri Jul 04, 2025 7:52 am

They are all be implemented and all of them should produce results.
The warning is because the formulas for ERTA that are currently implemented do not correspond to what can be derived from the linearized Boltzmann equation.
My suggestion would be to not use the ERTA approximation as currently implemented.
To check what is happening in your case I would need to have a look at your input and output files.


Post Reply