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
Screening of electron-phonon matrix by free carrier
Moderator: stiwari
-
- Posts: 155
- Joined: Thu Jan 14, 2016 10:52 am
- Affiliation:
Re: Screening of electron-phonon matrix by free carrier
Dear Sai,
At those carrier concentrations the screening has no effect indeed.
Best,
Carla
At those carrier concentrations the screening has no effect indeed.
Best,
Carla
Re: Screening of electron-phonon matrix by free carrier
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
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
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:
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
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(:)
Hope this helps,
Sam
Prof. Samuel Poncé
Chercheur qualifié F.R.S.-FNRS / Professeur UCLouvain
Institute of Condensed Matter and Nanosciences
UCLouvain, Belgium
Web: https://www.samuelponce.com
Chercheur qualifié F.R.S.-FNRS / Professeur UCLouvain
Institute of Condensed Matter and Nanosciences
UCLouvain, Belgium
Web: https://www.samuelponce.com
Re: Screening of electron-phonon matrix by free carrier
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?
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.
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?
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.