Commit ead720d9 authored by Samuel Poncé's avatar Samuel Poncé

New feature in EPW: Indirect absorption

Also adding a test on that in the test-suite.
parent 81050797
......@@ -50,6 +50,7 @@ epw_setup.o \
epw_summary.o \
fermiwindow.o \
gmap_sym.o \
indabs.o \
io_dyn_mat2.o \
kfold.o \
kpointdivision.o \
......
......@@ -47,7 +47,8 @@
scattering, scattering_serta, scattering_0rta, &
int_mob, scissor, carrier, ncarrier, iterative_bte, &
restart, restart_freq, prtgkk, nel, meff, epsiHEG, &
scatread, restart, restart_freq, restart_filq, lphase
scatread, restart, restart_freq, restart_filq, &
lphase, omegamin, omegamax, omegastep, n_r, lindabs
USE elph2, ONLY : elph
USE mp, ONLY : mp_bcast
USE mp_world, ONLY : world_comm
......@@ -131,6 +132,7 @@
CALL mp_bcast (restart , meta_ionode_id, world_comm)
CALL mp_bcast (prtgkk , meta_ionode_id, world_comm)
CALL mp_bcast (lphase , meta_ionode_id, world_comm)
CALL mp_bcast (lindabs , meta_ionode_id, world_comm)
!
! integers
!
......@@ -163,7 +165,7 @@
CALL mp_bcast (scr_typ , meta_ionode_id, world_comm)
CALL mp_bcast (bnd_cum , meta_ionode_id, world_comm)
!
! real*8
! REAL*8
!
CALL mp_bcast (tr2_ph , meta_ionode_id, world_comm)
CALL mp_bcast (amass , meta_ionode_id, world_comm)
......@@ -196,6 +198,10 @@
CALL mp_bcast (epsiHEG , meta_ionode_id, world_comm)
CALL mp_bcast (fermi_diff , meta_ionode_id, world_comm)
CALL mp_bcast (smear_rpa , meta_ionode_id, world_comm)
CALL mp_bcast (omegamin , meta_ionode_id, world_comm)
CALL mp_bcast (omegamax , meta_ionode_id, world_comm)
CALL mp_bcast (omegastep , meta_ionode_id, world_comm)
CALL mp_bcast (n_r , meta_ionode_id, world_comm)
!
! characters
!
......
......@@ -77,7 +77,9 @@
inv_tau_allcb(:,:,:), &! Second scattering rate (for both)
zi_allvb(:,:,:), &! Z-factor in scattering rate
zi_allcb(:,:,:), &! Second Z-factor in scattering rate (for both VB and CB calculations)
ifc(:,:,:,:,:,:,:) ! Interatomic force constant in real space
ifc(:,:,:,:,:,:,:), &! Interatomic force constant in real space
omegap(:), &! Photon energy for phonon-assisted absorption
alpha_abs(:,:) ! Imaginary part of dielectric function for phonon-assisted absorption
REAL(KIND=DP) :: &!
efnew ! SP: Fermi level on the fine grid. Added globaly for efficiency reason
INTEGER :: &!
......
This diff is collapsed.
......@@ -57,7 +57,8 @@
title, int_mob, scissor, iterative_bte, scattering, &
ncarrier, carrier, scattering_serta, restart, restart_freq, &
scattering_0rta, longrange, shortrange, scatread, &
restart_filq, prtgkk, nel, meff, epsiHEG, lphase
restart_filq, prtgkk, nel, meff, epsiHEG, lphase, &
omegamin, omegamax, omegastep, n_r, lindabs
USE elph2, ONLY : elph
USE start_k, ONLY : nk1, nk2, nk3
USE constants_epw, ONLY : ryd2mev, ryd2ev, ev2cmm1, kelvin2eV
......@@ -122,7 +123,7 @@
delta_approx, scattering, int_mob, scissor, ncarrier, carrier, &
iterative_bte, scattering_serta, scattering_0rta, longrange, shortrange,&
scatread, restart, restart_freq, restart_filq, prtgkk, nel, meff, &
epsiHEG, lphase
epsiHEG, lphase, omegamin, omegamax, omegastep, n_r, lindabs
! tphases, fildvscf0
!
......@@ -281,6 +282,12 @@
! epsiHEG : Dielectric constant at zero doping
! lphase : If .true., fix the gauge on the phonon eigenvectors and electronic eigenvectors - DS
!
! Added by Manos Kioupakis
! omegamin : Photon energy minimum
! omegamax : Photon energy maximum
! omegastep : Photon energy step in evaluating phonon-assisted absorption spectra (in eV)
! n_r : constant refractive index
! lindabs : do phonon-assisted absorption
nk1tmp = 0
nk2tmp = 0
nk3tmp = 0
......@@ -465,6 +472,10 @@
meff = 1.d0
epsiHEG = 1.d0
lphase = .false.
omegamin = 0.d0 ! eV
omegamax = 10.d0 ! eV
n_r = 1.0
lindabs = .false.
!
! reading the namelist inputepw
!
......@@ -647,6 +658,11 @@
! scissor going from eV to Ryd
scissor = scissor / ryd2ev
!
! Photon energies for indirect absorption from eV to Ryd
omegamin = omegamin / ryd2ev
omegamax = omegamax / ryd2ev
omegastep = omegastep / ryd2ev
IF ( scattering ) THEN
DO i = 1, ntempxx
IF (temps(i) .gt. 0.d0) THEN
......
......@@ -158,6 +158,16 @@
!! difference between Fermi energy and band edge (in eV)
REAL (KIND=DP) :: smear_rpa
!! smearing for the calculation of the Lindhard function (in eV)
!
! Phonon-assisted absorption
REAL (KIND=DP) :: omegamin
!! Photon energy minimum (in eV)
REAL (KIND=DP) :: omegamax
!! Photon energy maximum (in eV)
REAL (KIND=DP) :: omegastep
!! Photon energy step (in eV)
REAL (KIND=DP) :: n_r
!! Refractive index
!
!LOGICAL :: tphases
!! tphases: if .TRUE. set absolute reference for unitary gauge of the eigenvectors
......@@ -236,6 +246,8 @@
!! if .true. print the |g| vertex in [meV].
LOGICAL :: lphase
!! if .true. then fix the gauge when diagonalizing the interpolated dynamical matrix and electronic Hamiltonian.
LOGICAL :: lindabs
!! if .true., perform phonon-assisted absorption calculations
!
! Superconductivity
LOGICAL :: ephwrite
......
This diff is collapsed.
......@@ -31,7 +31,7 @@
iufileig, iukmap, crystal, iunifc, iunimem, iunepmatwp2
PUBLIC :: iuwinfil, iun_plot, iuukk, iuprojfil !, iummn
PUBLIC :: iufilsigma, iufilseebeck, iufilkappael, iufilkappa, iufilscatt_rate,&
iufilFi_all, iufilsigma_all, iufiltau_all
iufilFi_all, iufilsigma_all, iufiltau_all, iuindabs
!
! Output of physically relevant quantities (60-100)
!
......@@ -70,7 +70,6 @@
! Electrons + phonons [epmat_wanep]
INTEGER :: iuwane = 98 ! Spatial decay of matrix elements in Wannier basis
! [.epwane]
!
! Output of quantity for restarting purposes (101-200)
! Note that 100-102 are reserved Cray unit and cannot be used.
......@@ -89,7 +88,6 @@
! [.ikmap]
! INTEGER :: iuetf = 113 ! Interpolated hamiltonian eigenvalues
INTEGER :: iueig = 114 ! Temporary eig for interpolation
INTEGER :: iunepmatwp = 115 ! The unit with the e-ph matrix in Wannier-Wannier representation
INTEGER :: iunepmatwe = 116 ! The unit with the e-ph matrix in Wannier-Bloch representation
INTEGER :: iunkf = 117 ! The unit with the fine k-point mesh in crystal coord.
......@@ -102,7 +100,6 @@
INTEGER :: epwdata = 124 ! EPW data [epwdata.fmt]
INTEGER :: iundmedata = 125 ! Dipole matrix in wannier basis [dmedata.fmt]
INTEGER :: iunepmatwp2 = 126 ! Opening the epmatwp file
!
! Output quantites related to Wannier (201-250)
!
......@@ -113,11 +110,9 @@
INTEGER :: iun_plot = 203 ! UNK file (needed by Wannier90 for plotting the
! real space Wannier functions)
INTEGER :: iuukk = 204 ! Final ukk rotation matrix (the big U!)
INTEGER :: iuprojfil = 205 ! Unit for projector [.projw90]
INTEGER :: iuprojfil = 205 ! Unit for projector [.projw90]
!
! Output quantites related to transport (251-300)
INTEGER :: iufilsigma = 251 ! Electrical conductivity
INTEGER :: iufilseebeck = 252 ! Seebeck coefficient
INTEGER :: iufilkappael = 253 ! Electronic contribution to thermal conductivity
......@@ -127,4 +122,7 @@
INTEGER :: iufilsigma_all = 257 ! Sigmar_all and Sigmai_all file to retart an interpolation
INTEGER :: iufiltau_all = 258 ! inv_tau_all file to retart an interpolation
!
! Output quantities related to Indirect absorption (301-325)
INTEGER :: iuindabs = 301 ! Indirect absorption data
!
END MODULE io_epw
This diff is collapsed.
--
&inputepw
prefix = 'si'
amass(1) = 28.0855
outdir = './'
iverbosity = 0
elph = .true.
kmaps = .true.
epbwrite = .false.
epbread = .false.
epwwrite = .false.
epwread = .true.
lindabs = .true.
efermi_read = .true.
fermi_energy = 6.8
scissor = 0.7
omegamin = 0.05
omegamax = 3.0
omegastep = 0.05
n_r = 3.4
lifc = .true.
asr_typ = 'crystal'
etf_mem = 1
nbndsub = 16
nbndskip = 0
wannierize = .false.
num_iter = 1500
iprint = 2
dis_win_max = 18
dis_froz_max= 8.5
proj(1) = 'Si : sp3'
wdata(1) = 'bands_plot = .true.'
wdata(2) = 'begin kpoint_path'
wdata(3) = 'L 0.50 0.00 0.00 G 0.00 0.00 0.00'
wdata(4) = 'G 0.00 0.00 0.00 X 0.50 0.50 0.00'
wdata(5) = 'end kpoint_path'
wdata(6) = 'bands_plot_format = gnuplot'
wdata(7) = 'guiding_centres = .true.'
wdata(8) = 'dis_num_iter = 500'
wdata(9) = 'num_print_cycles = 10'
wdata(10) = 'dis_mix_ratio = 1.0'
wdata(11) = 'conv_tol = 1E-9'
wdata(12) = 'conv_window = 4'
elecselfen = .false.
phonselfen = .false.
a2f = .false.
parallel_k = .true.
parallel_q = .false.
fsthick = 4.0 ! eV
eptemp = 300 ! K
degaussw = 0.05 ! eV
dvscf_dir = './save/'
nkf1 = 12
nkf2 = 12
nkf3 = 12
nqf1 = 6
nqf2 = 6
nqf3 = 6
nk1 = 4
nk2 = 4
nk3 = 4
nq1 = 2
nq2 = 2
nq3 = 2
/
3 cartesian
0.000000000 0.000000000 0.000000000
0.500000000 -0.500000000 0.500000000
0.000000000 -1.000000000 0.000000000
......@@ -68,6 +68,7 @@ density=`grep " x-axis" $fname | awk '{print $1; print $2; print $3}'`
mobx=`grep " x-axis" $fname | awk '{print $4}'`
mobav=`grep " avg" $fname | awk '{print $1}'`
mobxZ=`grep " x-axis [Z]" $fname | awk '{print $1; print $2; print $3; print $4}'`
indabs=`grep " (cm-1)" $fname | awk '{print $1; print $2; print $3; print $4}'`
if test "$efm" != ""; then
echo efm
......@@ -130,6 +131,11 @@ if test "$mobxZ" != ""; then
for x in $mobxZ; do echo $x; done
fi
if test "$indabs" != ""; then
echo indabs
for x in $indabs; do echo $x; done
fi
if test "$qdir" != ""; then
echo qdir
for x in $qdir; do echo $x; done
......
......@@ -84,7 +84,7 @@ inputs_args = ('scf.in', '1'), ('ph.in', '2'), ('scf_epw.in', '1'), ('nscf_epw.i
[epw_mob/]
program = EPW
inputs_args = ('scf.in', '1'), ('ph.in', '2'), ('q2r.in', '4'), ('scf.in', '1'), ('nscf.in', '1'), ('epw1.in', '3'), ('epw2.in', '3'), ('epw3.in', '3')
inputs_args = ('scf.in', '1'), ('ph.in', '2'), ('q2r.in', '4'), ('scf.in', '1'), ('nscf.in', '1'), ('epw1.in', '3'), ('epw2.in', '3'), ('epw3.in', '3'), ('epw4.in', '3')
[tddfpt_CH4/]
program = TDDFPT
......
......@@ -89,10 +89,11 @@ tolerance = ( (1.0e-6, 5.0e-3, 'e1'),
(1.0e-4, 5.0e-4, 'bcsgap'),
(1.0e-4, 5.0e-4, 'mobvb'),
(1.0e-4, 5.0e-4, 'mobcb'),
(1.0e-2, 1.0e-2, 'mobx'),
(1.0e-2, 1.0e-2, 'mobav'),
(1.0 , 1.0e-2, 'mobx'),
(1.0 , 1.0e-2, 'mobav'),
(1.0e+10, 1.0e+2, 'density'),
(1.0e-2, 1.0e-2, 'mobxZ'))
(1.0 , 1.0e-2, 'mobxZ'),
(1.0e-2, None , 'indabs'))
skip_program = grep
skip_args = 'not present in this version'
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment