Page 1 of 1

Screening of electron-phonon matrix by free carrier

Posted: Mon Sep 30, 2019 8:14 pm
by umklapp
Dear all,
I have a problem to include the screening of the electron-phonon matrix by free carriers during the calculation of mobility. It looks like the tag lscreen and scr_typ did nothing. However, this functionality should have been included by EPW, as seen in Nat. Comm. 8, 15769 (2017), [Supplementary Fig. 2].

scattering = .true.
scattering_serta = .true.
int_mob = .true.
carrier = .true.
ncarrier = 1E18
lscreen = .true.
scr_typ = 1

Any suggestions on how to include screening are greatly appreciated!
Best,
Sai

Re: Screening of electron-phonon matrix by free carrier

Posted: Wed Oct 16, 2019 8:33 am
by carla.verdi
Dear Sai,
At those carrier concentrations the screening has no effect indeed.

Best,
Carla

Re: Screening of electron-phonon matrix by free carrier

Posted: Mon Jun 08, 2020 8:28 am
by umklapp
Dear Carla,
Thanks! But I am still confused with how to add screening for el-ph matrix and mobility calculations using EPW.
Taking GaN as an example (https://docs.epw-code.org/doc/GaN-II.html)
When I do mobility calculations, in epw2.in, I set " scattering=.true. int_mob = .false.; carrier = .true.; ncarrier = 1E17; mp_mesh_k = .true.; lscreen = .true., scr_typ = 1, nel = 0.0000044, fermi_diff = -0.105 , nstemp = 1, tempsmin = 300, tempsmax = 300 "
nel is the number of electrons per unit cell, the value gives E17 cm^-3 carrier concentration. fermi_diff gives the EF (=Ecbm-0.105), which corresponds to E17 cm^-3 at 300K. But I got zero mobility in the end. Could you please give me some suggestions to add the screening effect properly?
Best,
Sai

Re: Screening of electron-phonon matrix by free carrier

Posted: Mon Jun 08, 2020 9:05 am
by sponce
Dear Sai,

First, let me clarify the mobility implementation. The default implementation assumes the intrinsic regime (relatively low carrier) and the mobility is independent of the carrier concentration.

The way the Fermi level is computed is by having the Fermi level inside the bandgap and adjusting its position such that ncarrier is obtained for a given temperature (through Fermi-Dirac distribution).

You need however to provide a initial Fermi level with https://docs.epw-code.org/doc/Inputs.html#efermi-read

That Fermi level is used to compute the fsthick window so you need to make sure that the fsthick window is large enough to have the CB or VB you want to study.

Then from that initial Fermi level, the true Fermi levels (potentially two if you do electron and hole at the same time) are computed given the ncarrier.

Once this is working, you can indeed add screening using the lscreen. You can look in the code in ephwann_shuffle.f90 and you will see that all it does it renormalize the el-ph matrix elements:

Code: Select all

                IF (lscreen) THEN
                   epf17(ibnd - ibndmin + 1, jbnd - ibndmin + 1, :, ik) = epmatf(ibnd, jbnd, :) / eps_rpa(:)
Note: If you want to study high doping, it is possible as well but a bit more involved. You need to fix the Fermi level above or below the CBM/VBM and deactivate (so hack the code) the routine that determines the Fermi level based on ncarrier. In that case you will need to do 1 calculation for each temperature and adjust the position by hand each time.

Hope this helps,
Sam

Re: Screening of electron-phonon matrix by free carrier

Posted: Thu Mar 04, 2021 9:00 am
by umklapp
Dear Sam,
Thanks for your instruction!
Regarding high doping case with the fermi_energy higher than CBM,
I modified the utilities.f90, ephwann_shuffle.f90, and ephwan_shuffle_mem.f90,deactivating subroutine fermicarriers, and simply setting input fermi_energy to conduction band Fermi level (efcb). After that, if \epsilon^CB_F(which is equal to fermi_energy) is below CB edge, both the calculated electron density and the room temperature electron mobility look good and consistent with the normal(non-hacked) EPW results.
However, if \epsilon^CB_F(=fermi_energy) is higher than the CB edge, even though I manually set the Fermi level corresponding to the high doping level (say n=E21), in the output, I find an incorrect (reduced) electron density and a mobility much larger than expected.(see below) I fail to fix the code to produce the correct electron density. Any suggestion for this?
aboveCBM.jpg
aboveCBM.jpg (95.89 KiB) Viewed 5378 times

The mobility is obtained by dividing the conductivity by the electron density. If I multiply the printed electron density and the electron mobility from the output, then renormalize the correct electron density, the resulting electron mobility is reasonable. Do you think this procedure is reasonable?
Best,
S.