mirror of https://gitlab.com/QEF/q-e.git
Merge branch 'develop' into 'develop'
Reorganization of temperature inputs for EPW See merge request QEF/q-e!1008
This commit is contained in:
commit
4ab5727c5a
|
@ -28,7 +28,7 @@
|
||||||
|
|
||||||
|
|
||||||
fsthick = 1.36056981 ! eV
|
fsthick = 1.36056981 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = '../phonons/save'
|
dvscf_dir = '../phonons/save'
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
|
|
||||||
fsthick = 1.36056981 ! eV
|
fsthick = 1.36056981 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = '../phonons/save'
|
dvscf_dir = '../phonons/save'
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
|
|
||||||
|
|
||||||
fsthick = 1.36056981 ! eV
|
fsthick = 1.36056981 ! eV
|
||||||
eptemp = 0.01 ! K (same as PRB 76, 165108)
|
temps = 0.01 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = '../phonons/save'
|
dvscf_dir = '../phonons/save'
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
|
|
||||||
|
|
||||||
fsthick = 3.0
|
fsthick = 3.0
|
||||||
eptemp = 300.0
|
temps = 300.0
|
||||||
degaussw = 0.1
|
degaussw = 0.1
|
||||||
efermi_read = .true.
|
efermi_read = .true.
|
||||||
fermi_energy= 9.9775
|
fermi_energy= 9.9775
|
||||||
|
|
|
@ -28,12 +28,10 @@
|
||||||
|
|
||||||
iverbosity = 2
|
iverbosity = 2
|
||||||
|
|
||||||
|
eps_acustic = 2.0 ! Lowest boundary for the phonon frequency
|
||||||
eps_acustic = 2.0 ! Lowest boundary for the
|
ephwrite = .true. ! Writes .ephmat files used when Eliasberg = .true.
|
||||||
ephwrite = .true. ! Writes .ephmat files used when wliasberg = .true.
|
|
||||||
|
|
||||||
fsthick = 0.4 ! eV
|
fsthick = 0.4 ! eV
|
||||||
eptemp = 300 ! K
|
|
||||||
degaussw = 0.10 ! eV
|
degaussw = 0.10 ! eV
|
||||||
nsmear = 1
|
nsmear = 1
|
||||||
delta_smear = 0.04 ! eV
|
delta_smear = 0.04 ! eV
|
||||||
|
@ -51,9 +49,8 @@
|
||||||
|
|
||||||
wscut = 1.0 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
wscut = 1.0 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
||||||
|
|
||||||
nstemp = 1
|
nstemp = 1 ! Nr. of temps
|
||||||
tempsmin = 15.00
|
temps = 15.00 ! K provide list of temperetures OR (nstemp and temps = tempsmin tempsmax for even space mode)
|
||||||
tempsmax = 60.00
|
|
||||||
|
|
||||||
nsiter = 500
|
nsiter = 500
|
||||||
|
|
||||||
|
@ -78,32 +75,3 @@
|
||||||
nqf2 = 20
|
nqf2 = 20
|
||||||
nqf3 = 20
|
nqf3 = 20
|
||||||
/
|
/
|
||||||
28 cartesian
|
|
||||||
0.000000000 0.000000000 0.000000000 0.004629630
|
|
||||||
0.000000000 0.000000000 0.145933920 0.009259259
|
|
||||||
0.000000000 0.000000000 0.291867841 0.009259259
|
|
||||||
0.000000000 0.000000000 -0.437801761 0.004629630
|
|
||||||
0.000000000 0.192450090 0.000000000 0.027777778
|
|
||||||
0.000000000 0.192450090 0.145933920 0.055555556
|
|
||||||
0.000000000 0.192450090 0.291867841 0.055555556
|
|
||||||
0.000000000 0.192450090 -0.437801761 0.027777778
|
|
||||||
0.000000000 0.384900179 0.000000000 0.027777778
|
|
||||||
0.000000000 0.384900179 0.145933920 0.055555556
|
|
||||||
0.000000000 0.384900179 0.291867841 0.055555556
|
|
||||||
0.000000000 0.384900179 -0.437801761 0.027777778
|
|
||||||
0.000000000 -0.577350269 0.000000000 0.013888889
|
|
||||||
0.000000000 -0.577350269 0.145933920 0.027777778
|
|
||||||
0.000000000 -0.577350269 0.291867841 0.027777778
|
|
||||||
0.000000000 -0.577350269 -0.437801761 0.013888889
|
|
||||||
0.166666667 0.288675135 0.000000000 0.027777778
|
|
||||||
0.166666667 0.288675135 0.145933920 0.055555556
|
|
||||||
0.166666667 0.288675135 0.291867841 0.055555556
|
|
||||||
0.166666667 0.288675135 -0.437801761 0.027777778
|
|
||||||
0.166666667 0.481125224 0.000000000 0.055555556
|
|
||||||
0.166666667 0.481125224 0.145933920 0.111111111
|
|
||||||
0.166666667 0.481125224 0.291867841 0.111111111
|
|
||||||
0.166666667 0.481125224 -0.437801761 0.055555556
|
|
||||||
0.333333333 0.577350269 0.000000000 0.009259259
|
|
||||||
0.333333333 0.577350269 0.145933920 0.018518519
|
|
||||||
0.333333333 0.577350269 0.291867841 0.018518519
|
|
||||||
0.333333333 0.577350269 -0.437801761 0.009259259
|
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
|
|
||||||
|
|
||||||
fsthick = 6 ! eV
|
fsthick = 6 ! eV
|
||||||
eptemp = 0.0 ! K
|
temps = 0.0 ! K
|
||||||
degaussw = 0.005 ! eV
|
degaussw = 0.005 ! eV
|
||||||
degaussq = 0.05 !meV
|
degaussq = 0.05 !meV
|
||||||
|
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
|
|
||||||
|
|
||||||
fsthick = 6 ! eV
|
fsthick = 6 ! eV
|
||||||
eptemp = 0.075 ! K
|
temps = 0.075 ! K
|
||||||
degaussw = 0.05 ! eV
|
degaussw = 0.05 ! eV
|
||||||
|
|
||||||
a2f = .true.
|
a2f = .true.
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
|
|
||||||
|
|
||||||
fsthick = 2.80284905 ! eV
|
fsthick = 2.80284905 ! eV
|
||||||
eptemp = 200 ! K
|
temps = 200 ! K
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = '../phonons/save'
|
dvscf_dir = '../phonons/save'
|
||||||
|
|
|
@ -28,7 +28,7 @@
|
||||||
kmaps, kerwrite, kerread, imag_read, nkc3, &
|
kmaps, kerwrite, kerread, imag_read, nkc3, &
|
||||||
gap_edge, fsthick, filqf, filkf, nqc1, nqc2, nqc3,&
|
gap_edge, fsthick, filqf, filkf, nqc1, nqc2, nqc3,&
|
||||||
fileig, fila2f, fermi_energy, nc, nkc1, nkc2, &
|
fileig, fila2f, fermi_energy, nc, nkc1, nkc2, &
|
||||||
etf_mem, epwwrite, epwread, eptemp, nbndsub, &
|
etf_mem, epwwrite, epwread, nbndsub, &
|
||||||
eps_acustic, ephwrite, epbread, nsiter, nqstep, &
|
eps_acustic, ephwrite, epbread, nsiter, nqstep, &
|
||||||
nqsmear, nqf3, nqf2, nqf1, nkf3, nkf2, nkf1, &
|
nqsmear, nqf3, nqf2, nqf1, nkf3, nkf2, nkf1, &
|
||||||
muc, mp_mesh_q, mp_mesh_k, max_memlt, lunif, &
|
muc, mp_mesh_q, mp_mesh_k, max_memlt, lunif, &
|
||||||
|
@ -41,7 +41,7 @@
|
||||||
wsfc, wscut, write_wfn, wmin_specfun, wmin, &
|
wsfc, wscut, write_wfn, wmin_specfun, wmin, &
|
||||||
wmax_specfun, wmax, wepexst, wannierize, &
|
wmax_specfun, wmax, wepexst, wannierize, &
|
||||||
vme, longrange, shortrange, system_2d, lindabs, &
|
vme, longrange, shortrange, system_2d, lindabs, &
|
||||||
tempsmin, tempsmax, temps, delta_approx, title, &
|
temps, tempsmin, tempsmax, delta_approx, title, &
|
||||||
scattering, scattering_serta, scattering_0rta, &
|
scattering, scattering_serta, scattering_0rta, &
|
||||||
int_mob, scissor, carrier, ncarrier, &
|
int_mob, scissor, carrier, ncarrier, &
|
||||||
restart, restart_step, prtgkk, nel, meff, epsiheg,&
|
restart, restart_step, prtgkk, nel, meff, epsiheg,&
|
||||||
|
@ -219,7 +219,6 @@
|
||||||
CALL mp_bcast(muc , meta_ionode_id, world_comm)
|
CALL mp_bcast(muc , meta_ionode_id, world_comm)
|
||||||
CALL mp_bcast(max_memlt , meta_ionode_id, world_comm)
|
CALL mp_bcast(max_memlt , meta_ionode_id, world_comm)
|
||||||
CALL mp_bcast(fermi_energy , meta_ionode_id, world_comm)
|
CALL mp_bcast(fermi_energy , meta_ionode_id, world_comm)
|
||||||
CALL mp_bcast(eptemp , meta_ionode_id, world_comm)
|
|
||||||
CALL mp_bcast(scissor , meta_ionode_id, world_comm)
|
CALL mp_bcast(scissor , meta_ionode_id, world_comm)
|
||||||
CALL mp_bcast(ncarrier , meta_ionode_id, world_comm)
|
CALL mp_bcast(ncarrier , meta_ionode_id, world_comm)
|
||||||
CALL mp_bcast(nel , meta_ionode_id, world_comm)
|
CALL mp_bcast(nel , meta_ionode_id, world_comm)
|
||||||
|
|
|
@ -35,16 +35,18 @@
|
||||||
!!
|
!!
|
||||||
!-----------------------------------------------------------------------
|
!-----------------------------------------------------------------------
|
||||||
USE kinds, ONLY : DP, i4b
|
USE kinds, ONLY : DP, i4b
|
||||||
USE constants_epw, ONLY : two, zero, ryd2ev, ryd2mev, ci
|
USE constants_epw, ONLY : kelvin2eV, two, zero, ryd2ev, ryd2mev, ci
|
||||||
USE constants, ONLY : pi
|
USE constants, ONLY : pi
|
||||||
USE io_global, ONLY : stdout
|
USE io_global, ONLY : stdout
|
||||||
USE io_var, ONLY : iospectral_sup, iospectral_cum
|
USE io_var, ONLY : iospectral_sup, iospectral_cum
|
||||||
USE epwcom, ONLY : eptemp, wmin_specfun, wmax_specfun, nw_specfun, &
|
USE epwcom, ONLY : wmin_specfun, wmax_specfun, nw_specfun, &
|
||||||
bnd_cum
|
bnd_cum, nstemp, eliashberg
|
||||||
USE elph2, ONLY : ibndmin, ibndmax
|
USE elph2, ONLY : ibndmin, ibndmax, gtemp
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
|
CHARACTER(LEN = 20) :: tp
|
||||||
|
CHARACTER(LEN = 256) :: filespecsup
|
||||||
CHARACTER(LEN = 64) :: line
|
CHARACTER(LEN = 64) :: line
|
||||||
!! Auxiliary string
|
!! Auxiliary string
|
||||||
CHARACTER(LEN = 64) :: filespec
|
CHARACTER(LEN = 64) :: filespec
|
||||||
|
@ -67,6 +69,8 @@
|
||||||
!! Total number of k-points
|
!! Total number of k-points
|
||||||
INTEGER :: i0
|
INTEGER :: i0
|
||||||
!! Energy index of Fermi level (w=0)
|
!! Energy index of Fermi level (w=0)
|
||||||
|
INTEGER :: itemp
|
||||||
|
!! Counter on temperatures
|
||||||
INTEGER :: ierr
|
INTEGER :: ierr
|
||||||
!! Error status
|
!! Error status
|
||||||
REAL(KIND = DP) :: dw
|
REAL(KIND = DP) :: dw
|
||||||
|
@ -107,154 +111,165 @@
|
||||||
WRITE(stdout, '(5x,a)') 'Warning: the routine is sequential but very fast.'
|
WRITE(stdout, '(5x,a)') 'Warning: the routine is sequential but very fast.'
|
||||||
WRITE(stdout, '(5x,a/)') REPEAT('=',75)
|
WRITE(stdout, '(5x,a/)') REPEAT('=',75)
|
||||||
!
|
!
|
||||||
OPEN (UNIT = iospectral_sup, FILE = 'specfun_sup.elself', STATUS = 'old', IOSTAT = ios)
|
DO itemp = 1, nstemp
|
||||||
IF (ios /= 0) CALL errore('spectral_cumulant', 'opening file specfun_sup.elself', ABS(ios))
|
WRITE(tp, "(f8.3)") gtemp(itemp) * ryd2ev / kelvin2eV
|
||||||
!
|
filespecsup = 'specfun_sup.elself.' // trim(adjustl(tp)) // 'K'
|
||||||
! determine number of k points, ibndmin, ibndmax
|
OPEN (UNIT = iospectral_sup, FILE = filespecsup, STATUS = 'old', IOSTAT = ios)
|
||||||
DO im = 1, 6
|
IF (ios /= 0) CALL errore('spectral_cumulant', 'opening file specfun_sup.elself', ABS(ios))
|
||||||
READ(iospectral_sup, '(a)') line
|
!
|
||||||
ENDDO
|
! determine number of k points, ibndmin, ibndmax
|
||||||
DO im = 1, maxrecs
|
DO im = 1, 6
|
||||||
READ (iospectral_sup, *, IOSTAT = ios) i1, i2
|
READ(iospectral_sup, '(a)') line
|
||||||
IF (im == 1) ibndmin = i2
|
ENDDO
|
||||||
IF (ios /= 0) EXIT
|
DO im = 1, maxrecs
|
||||||
IF (im == maxrecs) CALL errore('spectral_cumulant', 'increase maxrecs', 1)
|
READ (iospectral_sup, *, IOSTAT = ios) i1, i2
|
||||||
ENDDO
|
IF (im == 1) ibndmin = i2
|
||||||
!
|
IF (ios /= 0) EXIT
|
||||||
REWIND(iospectral_sup)
|
IF (im == maxrecs) CALL errore('spectral_cumulant', 'increase maxrecs', 1)
|
||||||
!
|
ENDDO
|
||||||
nk = i1
|
!
|
||||||
ibndmax = i2
|
REWIND(iospectral_sup)
|
||||||
WRITE(stdout, '(5x,a/)') "Read self-energy from file specfun_sup.elself"
|
!
|
||||||
WRITE(stdout, '(5x,a,i4,a,i4,a,i4,a,f12.6/)') "Check: nk = ", nk, &
|
nk = i1
|
||||||
", ibndmin = ", ibndmin, ", ibndmax = ", ibndmax, " kbT (eV) = ", eptemp * ryd2ev
|
ibndmax = i2
|
||||||
!
|
WRITE(stdout, '(5x,a/)') "Read self-energy from file specfun_sup.elself"
|
||||||
ALLOCATE(ww(nw_specfun), STAT = ierr)
|
WRITE(stdout, '(5x,a,i4,a,i4,a,i4,a,f12.6/)') "Check: nk = ", nk, &
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating ww', 1)
|
", ibndmin = ", ibndmin, ", ibndmax = ", ibndmax, " kbT (eV) = ", gtemp(itemp) * ryd2ev
|
||||||
ALLOCATE(ek(nk), STAT = ierr)
|
!
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating ek', 1)
|
ALLOCATE(ww(nw_specfun), STAT = ierr)
|
||||||
ALLOCATE(sigmar(nk, nw_specfun), STAT = ierr)
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating ww', 1)
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating sigmar', 1)
|
ALLOCATE(ek(nk), STAT = ierr)
|
||||||
ALLOCATE(sigmai(nk, nw_specfun), STAT = ierr)
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating ek', 1)
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating sigmai', 1)
|
ALLOCATE(sigmar(nk, nw_specfun), STAT = ierr)
|
||||||
ALLOCATE(a_mig(nw_specfun, nk), STAT = ierr)
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating sigmar', 1)
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_mig', 1)
|
ALLOCATE(sigmai(nk, nw_specfun), STAT = ierr)
|
||||||
ALLOCATE(a_cw(nw_specfun), STAT = ierr)
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating sigmai', 1)
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_cw', 1)
|
ALLOCATE(a_mig(nw_specfun, nk), STAT = ierr)
|
||||||
ALLOCATE(a_ct(nw_specfun), STAT = ierr)
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_mig', 1)
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_ct', 1)
|
ALLOCATE(a_cw(nw_specfun), STAT = ierr)
|
||||||
ALLOCATE(a_tmp(nw_specfun), STAT = ierr)
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_cw', 1)
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_tmp', 1)
|
ALLOCATE(a_ct(nw_specfun), STAT = ierr)
|
||||||
!
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_ct', 1)
|
||||||
! read and store Kohn-Sham energy, energy grid, real and im sigma for designated band
|
ALLOCATE(a_tmp(nw_specfun), STAT = ierr)
|
||||||
DO im = 1,6
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_tmp', 1)
|
||||||
READ(iospectral_sup, '(a)') line
|
!
|
||||||
ENDDO
|
! read and store Kohn-Sham energy, energy grid, real and im sigma for designated band
|
||||||
DO ibnd = 1, ibndmax - ibndmin + 1
|
DO im = 1,6
|
||||||
DO ik = 1, nk
|
READ(iospectral_sup, '(a)') line
|
||||||
DO iw = 1, nw_specfun
|
ENDDO
|
||||||
READ(iospectral_sup,*) i1, i2, a1, a2, a3, a4
|
DO ibnd = 1, ibndmax - ibndmin + 1
|
||||||
IF (i2 == bnd_cum) THEN
|
DO ik = 1, nk
|
||||||
! ek, w read in eV; Sigma read in meV
|
DO iw = 1, nw_specfun
|
||||||
ek(ik) = a1 / ryd2ev
|
READ(iospectral_sup,*) i1, i2, a1, a2, a3, a4
|
||||||
ww(iw) = a2 / ryd2ev
|
IF (i2 == bnd_cum) THEN
|
||||||
sigmar(ik, iw) = a3 / ryd2mev ! / ( EXP(ww(iw)/eptemp )+1.d0 )
|
! ek, w read in eV; Sigma read in meV
|
||||||
sigmai(ik, iw) = a4 / ryd2mev ! / ( EXP(ww(iw)/eptemp )+1.d0 )
|
ek(ik) = a1 / ryd2ev
|
||||||
! spec func as in spectral_func.f90
|
ww(iw) = a2 / ryd2ev
|
||||||
a_mig(iw, ik) = ABS(sigmai(ik, iw)) / pi / ((ww(iw) - ek(ik) - sigmar(ik, iw))**two + (sigmai(ik, iw) )**two)
|
sigmar(ik, iw) = a3 / ryd2mev ! / ( EXP(ww(iw)/eptemp )+1.d0 )
|
||||||
ENDIF
|
sigmai(ik, iw) = a4 / ryd2mev ! / ( EXP(ww(iw)/eptemp )+1.d0 )
|
||||||
|
! spec func as in spectral_func.f90
|
||||||
|
a_mig(iw, ik) = ABS(sigmai(ik, iw)) / pi / ((ww(iw) - ek(ik) - sigmar(ik, iw))**two + (sigmai(ik, iw) )**two)
|
||||||
|
ENDIF
|
||||||
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
|
||||||
!
|
|
||||||
CLOSE(iospectral_sup)
|
|
||||||
!
|
|
||||||
! open file for cumulant spectral function
|
|
||||||
IF (bnd_cum < 10) THEN
|
|
||||||
WRITE(filespec, '(a,i1,a)') 'specfun_cum', bnd_cum, '.elself'
|
|
||||||
ELSEIF (bnd_cum > 9 .AND. bnd_cum < 100) THEN
|
|
||||||
WRITE(filespec, '(a,i2,a)') 'specfun_cum', bnd_cum, '.elself'
|
|
||||||
ELSE
|
|
||||||
WRITE(filespec, '(a,i3,a)') 'specfun_cum', bnd_cum, '.elself'
|
|
||||||
ENDIF
|
|
||||||
OPEN(UNIT = iospectral_cum, FILE = filespec)
|
|
||||||
!
|
|
||||||
WRITE(iospectral_cum, '(a)') '# k Energy [eV] A(k,w) [meV^-1] Z-factor '
|
|
||||||
WRITE(iospectral_cum, '(a)') '# with convolutions | using FFT '
|
|
||||||
WRITE(stdout, '(8x,a)') 'k Energy [eV] A(k,w) [meV^-1] Z-factor '
|
|
||||||
WRITE(stdout, '(8x,a)') ' with convolutions | using FFT '
|
|
||||||
!
|
|
||||||
! define index corresponding to omega=0 (Fermi level)
|
|
||||||
i0 = MINLOC(ABS(ww(:)), DIM = 1)
|
|
||||||
IF (ABS(ww(i0)) > dw) CALL errore('spectral_cumulant', 'w=0 needs to be included in [wmin:wmax]', 1)
|
|
||||||
a_cw = zero
|
|
||||||
a_ct = zero
|
|
||||||
a_tmp = zero
|
|
||||||
!
|
|
||||||
DO ik = 1, nk
|
|
||||||
IF (ek(ik) < e_thresh) THEN
|
|
||||||
!
|
|
||||||
ekk = ek(ik)
|
|
||||||
!
|
|
||||||
! Cumulant from convolutions in frequency space (ImSigma>0 in EPW)
|
|
||||||
CALL cumulant_conv(ekk, ww, sigmar(ik, :), -sigmai(ik, :), a_mig(:, ik), a_cw, zeta)
|
|
||||||
!
|
|
||||||
! Cumulant calculated in time domain + FFT (ImSigma>0 in EPW)
|
|
||||||
CALL cumulant_time(ekk, ww, sigmar(ik, :), -sigmai(ik, :), a_mig(:, ik), a_tmp)
|
|
||||||
!
|
|
||||||
DO iw = 1, nw_specfun
|
|
||||||
!
|
|
||||||
! map the indices of the FFT frequency grid onto the original one
|
|
||||||
IF (iw >= i0) THEN
|
|
||||||
a_ct(iw) = a_tmp(iw - i0 + 1)
|
|
||||||
ELSE
|
|
||||||
a_ct(iw) = a_tmp(iw + nw_specfun - i0 + 1)
|
|
||||||
ENDIF
|
|
||||||
!
|
|
||||||
! write cumulant spectral function on file (in meV^-1, as in spectral_func.f90)
|
|
||||||
! 3rd column: A_cum using convolutions; 4th column: A_cum using FFT
|
|
||||||
IF (iw == 1) THEN
|
|
||||||
WRITE(iospectral_cum, '(2x,i7,2x,f10.5,3x,e16.7,3x,e16.7,3x,f8.4)') &
|
|
||||||
ik, ww(iw) * ryd2ev, a_cw(iw) / ryd2mev, a_ct(iw) / ryd2mev, zeta
|
|
||||||
WRITE(stdout,'(2x,i7,2x,f10.5,3x,e16.7,3x,e16.7,3x,f8.4)') &
|
|
||||||
ik, ww(iw) * ryd2ev, a_cw(iw) / ryd2mev, a_ct(iw) / ryd2mev, zeta
|
|
||||||
ELSE
|
|
||||||
WRITE(iospectral_cum, '(2x,i7,2x,f10.5,3x,e16.7,3x,e16.7)') &
|
|
||||||
ik, ww(iw) * ryd2ev, a_cw(iw) / ryd2mev, a_ct(iw) / ryd2mev !/ ( EXP(ww(iw)/eptemp )+1.d0 )
|
|
||||||
WRITE(stdout, '(2x,i7,2x,f10.5,3x,e16.7,3x,e16.7)') &
|
|
||||||
ik, ww(iw) * ryd2ev, a_cw(iw) / ryd2mev, a_ct(iw) / ryd2mev !/ ( EXP(ww(iw)/eptemp )+1.d0 )
|
|
||||||
! uncomment to multiply by Fermi occupation factor
|
|
||||||
ENDIF
|
|
||||||
!
|
|
||||||
ENDDO
|
|
||||||
!
|
|
||||||
WRITE(iospectral_cum, '(a)') ' '
|
|
||||||
WRITE(stdout, '(a)') ' '
|
|
||||||
!
|
|
||||||
ENDIF ! only states below energy e_thresh
|
|
||||||
!
|
!
|
||||||
ENDDO ! main loop k
|
CLOSE(iospectral_sup)
|
||||||
|
!
|
||||||
|
! open file for cumulant spectral function
|
||||||
|
WRITE(tp, "(f8.3)") gtemp(itemp) * ryd2ev / kelvin2eV
|
||||||
|
IF (bnd_cum < 10) THEN
|
||||||
|
WRITE(filespec, '(a,i1,a,a,a)') 'specfun_cum', bnd_cum, '.elself.', trim(adjustl(tp)), 'K'
|
||||||
|
ELSEIF (bnd_cum > 9 .AND. bnd_cum < 100) THEN
|
||||||
|
WRITE(filespec, '(a,i2,a,a,a)') 'specfun_cum', bnd_cum, '.elself.', trim(adjustl(tp)), 'K'
|
||||||
|
ELSE
|
||||||
|
WRITE(filespec, '(a,i3,a,a,a)') 'specfun_cum', bnd_cum, '.elself.', trim(adjustl(tp)), 'K'
|
||||||
|
ENDIF
|
||||||
|
OPEN(UNIT = iospectral_cum, FILE = filespec)
|
||||||
|
!
|
||||||
|
WRITE(iospectral_cum, '(a)') '# k Energy [eV] A(k,w) [meV^-1] Z-factor '
|
||||||
|
WRITE(iospectral_cum, '(a)') '# with convolutions | using FFT '
|
||||||
|
WRITE(stdout, '(8x,a)') 'k Energy [eV] A(k,w) [meV^-1] Z-factor '
|
||||||
|
WRITE(stdout, '(8x,a)') ' with convolutions | using FFT '
|
||||||
|
!
|
||||||
|
! define index corresponding to omega=0 (Fermi level)
|
||||||
|
i0 = MINLOC(ABS(ww(:)), DIM = 1)
|
||||||
|
IF (ABS(ww(i0)) > dw) CALL errore('spectral_cumulant', 'w=0 needs to be included in [wmin:wmax]', 1)
|
||||||
|
a_cw = zero
|
||||||
|
a_ct = zero
|
||||||
|
a_tmp = zero
|
||||||
|
!
|
||||||
|
DO ik = 1, nk
|
||||||
|
IF (ek(ik) < e_thresh) THEN
|
||||||
|
!
|
||||||
|
ekk = ek(ik)
|
||||||
|
!
|
||||||
|
! Cumulant from convolutions in frequency space (ImSigma>0 in EPW)
|
||||||
|
CALL cumulant_conv(ekk, ww, sigmar(ik, :), -sigmai(ik, :), a_mig(:, ik), a_cw, zeta)
|
||||||
|
!
|
||||||
|
! Cumulant calculated in time domain + FFT (ImSigma>0 in EPW)
|
||||||
|
CALL cumulant_time(ekk, ww, sigmar(ik, :), -sigmai(ik, :), a_mig(:, ik), a_tmp)
|
||||||
|
!
|
||||||
|
DO iw = 1, nw_specfun
|
||||||
|
!
|
||||||
|
! map the indices of the FFT frequency grid onto the original one
|
||||||
|
IF (iw >= i0) THEN
|
||||||
|
a_ct(iw) = a_tmp(iw - i0 + 1)
|
||||||
|
ELSE
|
||||||
|
a_ct(iw) = a_tmp(iw + nw_specfun - i0 + 1)
|
||||||
|
ENDIF
|
||||||
|
!
|
||||||
|
! write cumulant spectral function on file (in meV^-1, as in spectral_func.f90)
|
||||||
|
! 3rd column: A_cum using convolutions; 4th column: A_cum using FFT
|
||||||
|
IF (iw == 1) THEN
|
||||||
|
WRITE(iospectral_cum, '(2x,i7,2x,f10.5,3x,e16.7,3x,e16.7,3x,f8.4)') &
|
||||||
|
ik, ww(iw) * ryd2ev, a_cw(iw) / ryd2mev, a_ct(iw) / ryd2mev, zeta
|
||||||
|
WRITE(stdout,'(2x,i7,2x,f10.5,3x,e16.7,3x,e16.7,3x,f8.4)') &
|
||||||
|
ik, ww(iw) * ryd2ev, a_cw(iw) / ryd2mev, a_ct(iw) / ryd2mev, zeta
|
||||||
|
ELSE
|
||||||
|
WRITE(iospectral_cum, '(2x,i7,2x,f10.5,3x,e16.7,3x,e16.7)') &
|
||||||
|
ik, ww(iw) * ryd2ev, a_cw(iw) / ryd2mev, a_ct(iw) / ryd2mev !/ ( EXP(ww(iw)/eptemp )+1.d0 )
|
||||||
|
WRITE(stdout, '(2x,i7,2x,f10.5,3x,e16.7,3x,e16.7)') &
|
||||||
|
ik, ww(iw) * ryd2ev, a_cw(iw) / ryd2mev, a_ct(iw) / ryd2mev !/ ( EXP(ww(iw)/eptemp )+1.d0 )
|
||||||
|
! uncomment to multiply by Fermi occupation factor
|
||||||
|
ENDIF
|
||||||
|
!
|
||||||
|
ENDDO
|
||||||
|
!
|
||||||
|
WRITE(iospectral_cum, '(a)') ' '
|
||||||
|
WRITE(stdout, '(a)') ' '
|
||||||
|
!
|
||||||
|
ENDIF ! only states below energy e_thresh
|
||||||
|
!
|
||||||
|
ENDDO ! main loop k
|
||||||
|
!
|
||||||
|
WRITE(stdout, '(5x,a)') 'The file specfun_cum[BND].elself has been correctly written'
|
||||||
|
!
|
||||||
|
CLOSE(iospectral_cum)
|
||||||
|
!
|
||||||
|
DEALLOCATE(ww, STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating ww', 1)
|
||||||
|
DEALLOCATE(ek, STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating ek', 1)
|
||||||
|
DEALLOCATE(sigmar, STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating sigmar', 1)
|
||||||
|
DEALLOCATE(sigmai, STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating sigmai', 1)
|
||||||
|
DEALLOCATE(a_mig, STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating a_mig', 1)
|
||||||
|
DEALLOCATE(a_cw, STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating a_cw', 1)
|
||||||
|
DEALLOCATE(a_ct, STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating a_ct', 1)
|
||||||
|
DEALLOCATE(a_tmp, STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating a_tmp', 1)
|
||||||
|
ENDDO !itemp
|
||||||
!
|
!
|
||||||
WRITE(stdout, '(5x,a)') 'The file specfun_cum[BND].elself has been correctly written'
|
! Deallocate temperature when no supercond
|
||||||
!
|
IF (.NOT. eliashberg) THEN
|
||||||
CLOSE(iospectral_cum)
|
DEALLOCATE(gtemp, STAT = ierr)
|
||||||
!
|
IF (ierr /= 0) CALL errore('cum_mod', 'Error deallocating gtemp', 1)
|
||||||
DEALLOCATE(ww, STAT = ierr)
|
ENDIF
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating ww', 1)
|
|
||||||
DEALLOCATE(ek, STAT = ierr)
|
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating ek', 1)
|
|
||||||
DEALLOCATE(sigmar, STAT = ierr)
|
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating sigmar', 1)
|
|
||||||
DEALLOCATE(sigmai, STAT = ierr)
|
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating sigmai', 1)
|
|
||||||
DEALLOCATE(a_mig, STAT = ierr)
|
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating a_mig', 1)
|
|
||||||
DEALLOCATE(a_cw, STAT = ierr)
|
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating a_cw', 1)
|
|
||||||
DEALLOCATE(a_ct, STAT = ierr)
|
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating a_ct', 1)
|
|
||||||
DEALLOCATE(a_tmp, STAT = ierr)
|
|
||||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error deallocating a_tmp', 1)
|
|
||||||
!
|
!
|
||||||
!-----------------------------------------------------------------------
|
!-----------------------------------------------------------------------
|
||||||
END SUBROUTINE spectral_cumulant
|
END SUBROUTINE spectral_cumulant
|
||||||
|
|
|
@ -36,8 +36,6 @@
|
||||||
!! frequency on real-axis, wsph(nqstep)
|
!! frequency on real-axis, wsph(nqstep)
|
||||||
REAL(KIND = DP), ALLOCATABLE :: wsi(:)
|
REAL(KIND = DP), ALLOCATABLE :: wsi(:)
|
||||||
!! frequency on imag-axis at iw, wi(nsiw(nstemp))
|
!! frequency on imag-axis at iw, wi(nsiw(nstemp))
|
||||||
REAL(KIND = DP), ALLOCATABLE :: estemp(:)
|
|
||||||
!! temperature in eV entering in the Eliashberg equtions estemp(nstemp)
|
|
||||||
!
|
!
|
||||||
!--------------------------------------------------------------------------
|
!--------------------------------------------------------------------------
|
||||||
END MODULE eliashberg_common
|
END MODULE eliashberg_common
|
||||||
|
|
|
@ -72,8 +72,8 @@
|
||||||
area, &! Area of the 2D unit cell.
|
area, &! Area of the 2D unit cell.
|
||||||
g0vec_all_r(3, 125) ! G-vectors needed to fold the k+q grid into the k grid, cartesian coord.
|
g0vec_all_r(3, 125) ! G-vectors needed to fold the k+q grid into the k grid, cartesian coord.
|
||||||
REAL(KIND = DP), ALLOCATABLE ::&
|
REAL(KIND = DP), ALLOCATABLE ::&
|
||||||
a_all(:, :), &! electronic spectral function du to electron-phonon interaction
|
a_all(:, :, :), &! electronic spectral function du to electron-phonon interaction
|
||||||
a_all_ph(:, :), &! phononic spectral function du to electron-phonon interaction
|
a_all_ph(:, :, :), &! phononic spectral function du to electron-phonon interaction
|
||||||
dos(:), &! Density of states at the chemical potential.
|
dos(:), &! Density of states at the chemical potential.
|
||||||
et_ks(:, :), &! lda eigenvalues
|
et_ks(:, :), &! lda eigenvalues
|
||||||
xkq(:, :), &! local k+q grid, coarse (3, nks)
|
xkq(:, :), &! local k+q grid, coarse (3, nks)
|
||||||
|
@ -87,18 +87,18 @@
|
||||||
etf_k(:, :), &! Saved interpolated KS eigenenergies for later used in q-parallelization (nbnd, nkqf)
|
etf_k(:, :), &! Saved interpolated KS eigenenergies for later used in q-parallelization (nbnd, nkqf)
|
||||||
etf_ks(:, :), &! interpolated eigenvalues (nbnd, nkqf) KS eigenvalues in the case of eig_read
|
etf_ks(:, :), &! interpolated eigenvalues (nbnd, nkqf) KS eigenvalues in the case of eig_read
|
||||||
wf(:, :), &! interpolated eigenfrequencies
|
wf(:, :), &! interpolated eigenfrequencies
|
||||||
gamma_all(:, :, :), &! Gamma
|
gamma_all(:, :, :, :), &! Gamma
|
||||||
gamma_nest(:, :), &! Nesting function in the case of q-parallelization
|
gamma_nest(:, :), &! Nesting function in the case of q-parallelization
|
||||||
gamma_v_all(:, :, :), &! Gamma
|
gamma_v_all(:, :, :, :), &! Gamma
|
||||||
lambda_all(:, :, :), &! Electron-phonon coupling parameter
|
lambda_all(:, :, :, :), &! Electron-phonon coupling parameter
|
||||||
lambda_v_all(:, :, :), &! Electron-phonon coupling parameter (transport)
|
lambda_v_all(:, :, :, :), &! Electron-phonon coupling parameter (transport)
|
||||||
sigmar_all(:, :), &! Real part of the electron-phonon self-energy
|
sigmar_all(:, :, :), &! Real part of the electron-phonon self-energy
|
||||||
sigmai_all(:, :), &! Imaginary part of the electron-phonon self-energy
|
sigmai_all(:, :, :), &! Imaginary part of the electron-phonon self-energy
|
||||||
sigmai_mode(:, :, :), &! Mode resolved imaginary electron self-energy
|
sigmai_mode(:, :, :, :), &! Mode resolved imaginary electron self-energy
|
||||||
zi_all(:, :), &! Z renormalization factor
|
zi_all(:, :, :), &! Z renormalization factor
|
||||||
eta(:, :, :), &! Adaptative smearing
|
eta(:, :, :), &! Adaptative smearing
|
||||||
esigmar_all(:, :, :), &! energy of the real self-energy
|
esigmar_all(:, :, :, :), &! energy of the real self-energy
|
||||||
esigmai_all(:, :, :), &! energy of the imaginary self-energy
|
esigmai_all(:, :, :, :), &! energy of the imaginary self-energy
|
||||||
jdos(:), &! j-DOS
|
jdos(:), &! j-DOS
|
||||||
spectra(:, :, :, :, :, :), &! dipole absorption spectra, polarizations, nomega, nsmear, dme/vme, absorption/emission
|
spectra(:, :, :, :, :, :), &! dipole absorption spectra, polarizations, nomega, nsmear, dme/vme, absorption/emission
|
||||||
zstar(:, :, :), &! Born effective charges
|
zstar(:, :, :), &! Born effective charges
|
||||||
|
@ -109,10 +109,10 @@
|
||||||
zi_allcb(:, :, :), &! Second Z-factor in scattering rate (for both VB and CB calculations)
|
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
|
omegap(:), &! Photon energy for phonon-assisted absorption
|
||||||
epsilon2_abs(:, :, :), &! Imaginary part of dielectric function for phonon-assisted absorption, vs omega, vs broadening
|
epsilon2_abs(:, :, :, :), &! Imaginary part of dielectric function for phonon-assisted absorption, vs omega, vs broadening
|
||||||
wscache(:, :, :, :, :), &! Use as cache when doing IFC when lifc = .TRUE.
|
wscache(:, :, :, :, :), &! Use as cache when doing IFC when lifc = .TRUE.
|
||||||
epsilon2_abs_lorenz(:, :, :), &! Imaginary part of dielectric function for phonon-assisted absorption, vs omega, vs broadening
|
epsilon2_abs_lorenz(:, :, :, :), &! Imaginary part of dielectric function for phonon-assisted absorption, vs omega, vs broadening
|
||||||
transp_temp(:), &! Temperatures used for the transport module
|
gtemp(:), &! Temperature used globally (units of Ry)
|
||||||
mobilityh_save(:), &! Error in the hole mobility
|
mobilityh_save(:), &! Error in the hole mobility
|
||||||
mobilityel_save(:) ! Error in the electron mobility
|
mobilityel_save(:) ! Error in the electron mobility
|
||||||
COMPLEX(KIND = DP), ALLOCATABLE :: &
|
COMPLEX(KIND = DP), ALLOCATABLE :: &
|
||||||
|
|
|
@ -906,7 +906,7 @@ CONTAINS
|
||||||
USE io_global, ONLY : stdout,ionode_id, meta_ionode_id
|
USE io_global, ONLY : stdout,ionode_id, meta_ionode_id
|
||||||
USE modes, ONLY : nmodes
|
USE modes, ONLY : nmodes
|
||||||
USE epwcom, ONLY : nbndsub, shortrange, restart_polaron,&
|
USE epwcom, ONLY : nbndsub, shortrange, restart_polaron,&
|
||||||
fsthick, eptemp, ngaussw, degaussw,spherical_cutoff,&
|
fsthick, ngaussw, degaussw,spherical_cutoff,&
|
||||||
eps_acustic, efermi_read, fermi_energy, lscreen, &
|
eps_acustic, efermi_read, fermi_energy, lscreen, &
|
||||||
model_vertex, nkf1, nkf2, nkf3, conv_thr_polaron, &
|
model_vertex, nkf1, nkf2, nkf3, conv_thr_polaron, &
|
||||||
r01, r02, r03, num_cbands, start_mode, cb_shift, &
|
r01, r02, r03, num_cbands, start_mode, cb_shift, &
|
||||||
|
|
|
@ -34,7 +34,8 @@
|
||||||
nqf2, nqf3, mp_mesh_k, restart, plselfen, &
|
nqf2, nqf3, mp_mesh_k, restart, plselfen, &
|
||||||
specfun_pl, lindabs, use_ws, epbread, &
|
specfun_pl, lindabs, use_ws, epbread, &
|
||||||
epmatkqread, selecqread, restart_step, nsmear, &
|
epmatkqread, selecqread, restart_step, nsmear, &
|
||||||
nqc1, nqc2, nqc3, nkc1, nkc2, nkc3, assume_metal
|
nqc1, nqc2, nqc3, nkc1, nkc2, nkc3, assume_metal, &
|
||||||
|
cumulant, eliashberg
|
||||||
USE control_flags, ONLY : iverbosity
|
USE control_flags, ONLY : iverbosity
|
||||||
USE noncollin_module, ONLY : noncolin
|
USE noncollin_module, ONLY : noncolin
|
||||||
USE constants_epw, ONLY : ryd2ev, ryd2mev, one, two, zero, czero, eps40, &
|
USE constants_epw, ONLY : ryd2ev, ryd2mev, one, two, zero, czero, eps40, &
|
||||||
|
@ -54,7 +55,7 @@
|
||||||
inv_tau_allcb, zi_allcb, exband, gamma_v_all, &
|
inv_tau_allcb, zi_allcb, exband, gamma_v_all, &
|
||||||
esigmar_all, esigmai_all, lower_bnd, upper_bnd, &
|
esigmar_all, esigmai_all, lower_bnd, upper_bnd, &
|
||||||
a_all, a_all_ph, wscache, lambda_v_all, threshold, &
|
a_all, a_all_ph, wscache, lambda_v_all, threshold, &
|
||||||
nktotf, transp_temp, xkq, dos, nbndskip, nbndep
|
nktotf, gtemp, xkq, dos, nbndskip, nbndep
|
||||||
USE wan2bloch, ONLY : dmewan2bloch, hamwan2bloch, dynwan2bloch, &
|
USE wan2bloch, ONLY : dmewan2bloch, hamwan2bloch, dynwan2bloch, &
|
||||||
ephwan2blochp, ephwan2bloch, vmewan2bloch, &
|
ephwan2blochp, ephwan2bloch, vmewan2bloch, &
|
||||||
dynifc2blochf, vmewan2blochp
|
dynifc2blochf, vmewan2blochp
|
||||||
|
@ -113,6 +114,12 @@
|
||||||
!! Wannier centers
|
!! Wannier centers
|
||||||
!
|
!
|
||||||
! Local variables
|
! Local variables
|
||||||
|
CHARACTER(LEN = 20) :: tp
|
||||||
|
!! string for temperature
|
||||||
|
CHARACTER(LEN = 256) :: filephselfen
|
||||||
|
!! file name of phonon selfenergy
|
||||||
|
CHARACTER(LEN = 256) :: filephlinewid
|
||||||
|
!! file name of phonon linewidth
|
||||||
CHARACTER(LEN = 256) :: filint
|
CHARACTER(LEN = 256) :: filint
|
||||||
!! Name of the file to write/read
|
!! Name of the file to write/read
|
||||||
CHARACTER(LEN = 30) :: myfmt
|
CHARACTER(LEN = 30) :: myfmt
|
||||||
|
@ -181,6 +188,8 @@
|
||||||
!! Counter on bands when use_ws == .TRUE.
|
!! Counter on bands when use_ws == .TRUE.
|
||||||
INTEGER :: itemp
|
INTEGER :: itemp
|
||||||
!! Temperature index
|
!! Temperature index
|
||||||
|
INTEGER :: itempphen
|
||||||
|
!! Temperature counter for writing phonon selfen
|
||||||
INTEGER :: icbm
|
INTEGER :: icbm
|
||||||
!! Index of the CBM
|
!! Index of the CBM
|
||||||
INTEGER :: totq
|
INTEGER :: totq
|
||||||
|
@ -934,34 +943,34 @@
|
||||||
ALLOCATE(epf17(nbndfst, nbndfst, nmodes, nkf), STAT = ierr)
|
ALLOCATE(epf17(nbndfst, nbndfst, nmodes, nkf), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating epf17', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating epf17', 1)
|
||||||
IF (phonselfen) THEN
|
IF (phonselfen) THEN
|
||||||
ALLOCATE(lambda_all(nmodes, totq, nsmear), STAT = ierr)
|
ALLOCATE(lambda_all(nmodes, totq, nsmear, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating lambda_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating lambda_all', 1)
|
||||||
ALLOCATE(lambda_v_all(nmodes, totq, nsmear), STAT = ierr)
|
ALLOCATE(lambda_v_all(nmodes, totq, nsmear, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating lambda_v_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating lambda_v_all', 1)
|
||||||
ALLOCATE(gamma_all(nmodes, totq, nsmear), STAT = ierr)
|
ALLOCATE(gamma_all(nmodes, totq, nsmear, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating gamma_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating gamma_all', 1)
|
||||||
ALLOCATE(gamma_v_all(nmodes, totq, nsmear), STAT = ierr)
|
ALLOCATE(gamma_v_all(nmodes, totq, nsmear, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating gamma_v_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating gamma_v_all', 1)
|
||||||
lambda_all(:, :, :) = zero
|
lambda_all(:, :, :, :) = zero
|
||||||
lambda_v_all(:, :, :) = zero
|
lambda_v_all(:, :, :, :) = zero
|
||||||
gamma_all(:, :, :) = zero
|
gamma_all(:, :, :, :) = zero
|
||||||
gamma_v_all(:, :, :) = zero
|
gamma_v_all(:, :, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (specfun_el .OR. specfun_pl) THEN
|
IF (specfun_el .OR. specfun_pl) THEN
|
||||||
ALLOCATE(esigmar_all(nbndfst, nktotf, nw_specfun), STAT = ierr)
|
ALLOCATE(esigmar_all(nbndfst, nktotf, nw_specfun, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating esigmar_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating esigmar_all', 1)
|
||||||
ALLOCATE(esigmai_all(nbndfst, nktotf, nw_specfun), STAT = ierr)
|
ALLOCATE(esigmai_all(nbndfst, nktotf, nw_specfun, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating esigmai_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating esigmai_all', 1)
|
||||||
ALLOCATE(a_all(nw_specfun, nktotf), STAT = ierr)
|
ALLOCATE(a_all(nw_specfun, nktotf, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating a_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating a_all', 1)
|
||||||
esigmar_all(:, :, :) = zero
|
esigmar_all(:, :, :, :) = zero
|
||||||
esigmai_all(:, :, :) = zero
|
esigmai_all(:, :, :, :) = zero
|
||||||
a_all(:, :) = zero
|
a_all(:, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (specfun_ph) THEN
|
IF (specfun_ph) THEN
|
||||||
ALLOCATE(a_all_ph(nw_specfun, totq), STAT = ierr)
|
ALLOCATE(a_all_ph(nw_specfun, totq, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating a_all_ph', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating a_all_ph', 1)
|
||||||
a_all_ph(:, :) = zero
|
a_all_ph(:, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (scattering .AND. .NOT. iterative_bte) THEN
|
IF (scattering .AND. .NOT. iterative_bte) THEN
|
||||||
ALLOCATE(inv_tau_all(nstemp, nbndfst, nktotf), STAT = ierr)
|
ALLOCATE(inv_tau_all(nstemp, nbndfst, nktotf), STAT = ierr)
|
||||||
|
@ -980,19 +989,19 @@
|
||||||
zi_allcb(:, :, :) = zero
|
zi_allcb(:, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (elecselfen .OR. plselfen) THEN
|
IF (elecselfen .OR. plselfen) THEN
|
||||||
ALLOCATE(sigmar_all(nbndfst, nktotf), STAT = ierr)
|
ALLOCATE(sigmar_all(nbndfst, nktotf, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating sigmar_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating sigmar_all', 1)
|
||||||
ALLOCATE(sigmai_all(nbndfst, nktotf), STAT = ierr)
|
ALLOCATE(sigmai_all(nbndfst, nktotf, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating sigmai_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating sigmai_all', 1)
|
||||||
ALLOCATE(zi_all(nbndfst, nktotf), STAT = ierr)
|
ALLOCATE(zi_all(nbndfst, nktotf, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating zi_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating zi_all', 1)
|
||||||
sigmar_all(:, :) = zero
|
sigmar_all(:, :, :) = zero
|
||||||
sigmai_all(:, :) = zero
|
sigmai_all(:, :, :) = zero
|
||||||
zi_all(:, :) = zero
|
zi_all(:, :, :) = zero
|
||||||
IF (iverbosity == 3) THEN
|
IF (iverbosity == 3) THEN
|
||||||
ALLOCATE(sigmai_mode(nbndfst, nmodes, nktotf), STAT = ierr)
|
ALLOCATE(sigmai_mode(nbndfst, nmodes, nktotf, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating sigmai_mode', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating sigmai_mode', 1)
|
||||||
sigmai_mode(:, :, :) = zero
|
sigmai_mode(:, :, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDIF ! elecselfen
|
ENDIF ! elecselfen
|
||||||
!
|
!
|
||||||
|
@ -1083,6 +1092,7 @@
|
||||||
CALL mp_bcast(npool_tmp, ionode_id, world_comm)
|
CALL mp_bcast(npool_tmp, ionode_id, world_comm)
|
||||||
CALL mp_bcast(lrepmatw2_restart, ionode_id, world_comm)
|
CALL mp_bcast(lrepmatw2_restart, ionode_id, world_comm)
|
||||||
CALL mp_bcast(lrepmatw5_restart, ionode_id, world_comm)
|
CALL mp_bcast(lrepmatw5_restart, ionode_id, world_comm)
|
||||||
|
IF (npool /= npool_tmp) CALL errore('ephwann_shuffle','Number of cores is different',1)
|
||||||
!
|
!
|
||||||
IF (iterative_bte) THEN
|
IF (iterative_bte) THEN
|
||||||
IF (mpime == ionode_id) THEN
|
IF (mpime == ionode_id) THEN
|
||||||
|
@ -1096,7 +1106,6 @@
|
||||||
ENDIF
|
ENDIF
|
||||||
CALL mp_bcast(inv_tau_all, ionode_id, world_comm)
|
CALL mp_bcast(inv_tau_all, ionode_id, world_comm)
|
||||||
CALL mp_bcast(inv_tau_allcb, ionode_id, world_comm)
|
CALL mp_bcast(inv_tau_allcb, ionode_id, world_comm)
|
||||||
IF (npool /= npool_tmp) CALL errore('ephwann_shuffle','Number of cores is different',1)
|
|
||||||
IF (lower_bnd - 1 >= 1) THEN
|
IF (lower_bnd - 1 >= 1) THEN
|
||||||
inv_tau_all(:, 1:lower_bnd - 1, :) = 0d0
|
inv_tau_all(:, 1:lower_bnd - 1, :) = 0d0
|
||||||
inv_tau_allcb(:, 1:lower_bnd - 1, :) = 0d0
|
inv_tau_allcb(:, 1:lower_bnd - 1, :) = 0d0
|
||||||
|
@ -1444,7 +1453,7 @@
|
||||||
! This is only done once for the first iq. Also compute the dos at the same time
|
! This is only done once for the first iq. Also compute the dos at the same time
|
||||||
IF (iqq == iq_restart) THEN
|
IF (iqq == iq_restart) THEN
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
CALL fermicarrier(itemp, etemp, ef0, efcb, ctype)
|
CALL fermicarrier(itemp, etemp, ef0, efcb, ctype)
|
||||||
! compute dos for metals
|
! compute dos for metals
|
||||||
IF (assume_metal) THEN
|
IF (assume_metal) THEN
|
||||||
|
@ -1563,37 +1572,42 @@
|
||||||
IF (mpime == ionode_id) THEN
|
IF (mpime == ionode_id) THEN
|
||||||
!
|
!
|
||||||
IF (phonselfen) THEN
|
IF (phonselfen) THEN
|
||||||
OPEN(UNIT = lambda_phself, FILE = 'lambda.phself')
|
DO itempphen = 1, nstemp
|
||||||
WRITE(lambda_phself, '(/2x,a/)') '#Lambda phonon self-energy'
|
WRITE(tp, "(f8.3)") gtemp(itempphen) * ryd2ev / kelvin2eV
|
||||||
WRITE(lambda_phself, *) '#Modes ',(imode, imode = 1, nmodes)
|
filephselfen = 'lambda.phself.' // trim(adjustl(tp)) // 'K'
|
||||||
DO iqq = 1, nqtotf
|
OPEN(UNIT = lambda_phself, FILE = filephselfen)
|
||||||
!
|
WRITE(lambda_phself, '(/2x,a/)') '#Lambda phonon self-energy'
|
||||||
!myfmt = "(*(3x,E15.5))" This does not work with PGI
|
WRITE(lambda_phself, *) '#Modes ',(imode, imode = 1, nmodes)
|
||||||
myfmt = "(1000(3x,E15.5))"
|
DO iqq = 1, nqtotf
|
||||||
WRITE(lambda_phself,'(i9,4x)', ADVANCE = 'no') iqq
|
!
|
||||||
WRITE(lambda_phself, FMT = myfmt) (REAL(lambda_all(imode, iqq, 1)), imode = 1, nmodes)
|
!myfmt = "(*(3x,E15.5))" This does not work with PGI
|
||||||
!
|
myfmt = "(1000(3x,E15.5))"
|
||||||
ENDDO
|
WRITE(lambda_phself,'(i9,4x)', ADVANCE = 'no') iqq
|
||||||
CLOSE(lambda_phself)
|
WRITE(lambda_phself, FMT = myfmt) (REAL(lambda_all(imode, iqq, 1, itempphen)), imode = 1, nmodes)
|
||||||
!
|
!
|
||||||
! SP - 03/2019
|
|
||||||
! \Gamma = 1/\tau = phonon lifetime
|
|
||||||
! \Gamma = - 2 * Im \Pi^R where \Pi^R is the retarted phonon self-energy.
|
|
||||||
! Im \Pi^R = pi*k-point weight*[f(E_k+q) - f(E_k)]*delta[E_k+q - E_k - w_q]
|
|
||||||
! Since gamma_all = pi*k-point weight*[f(E_k) - f(E_k+q)]*delta[E_k+q - E_k - w_q] we have
|
|
||||||
! \Gamma = 2 * gamma_all
|
|
||||||
OPEN(UNIT = linewidth_phself, FILE = 'linewidth.phself')
|
|
||||||
WRITE(linewidth_phself, '(a)') '# Phonon frequency and phonon lifetime in meV '
|
|
||||||
WRITE(linewidth_phself, '(a)') '# Q-point Mode Phonon freq (meV) Phonon linewidth (meV)'
|
|
||||||
DO iqq = 1, nqtotf
|
|
||||||
!
|
|
||||||
DO imode = 1, nmodes
|
|
||||||
WRITE(linewidth_phself, '(i9,i6,E20.8,E22.10)') iqq, imode, &
|
|
||||||
ryd2mev * wf(imode, iqq), 2.0d0 * ryd2mev * REAL(gamma_all(imode, iqq, 1))
|
|
||||||
ENDDO
|
ENDDO
|
||||||
|
CLOSE(lambda_phself)
|
||||||
!
|
!
|
||||||
ENDDO
|
! SP - 03/2019
|
||||||
CLOSE(linewidth_phself)
|
! \Gamma = 1/\tau = phonon lifetime
|
||||||
|
! \Gamma = - 2 * Im \Pi^R where \Pi^R is the retarted phonon self-energy.
|
||||||
|
! Im \Pi^R = pi*k-point weight*[f(E_k+q) - f(E_k)]*delta[E_k+q - E_k - w_q]
|
||||||
|
! Since gamma_all = pi*k-point weight*[f(E_k) - f(E_k+q)]*delta[E_k+q - E_k - w_q] we have
|
||||||
|
! \Gamma = 2 * gamma_all
|
||||||
|
filephlinewid = 'linewidth.phself.' // trim(adjustl(tp)) // 'K'
|
||||||
|
OPEN(UNIT = linewidth_phself, FILE = filephlinewid)
|
||||||
|
WRITE(linewidth_phself, '(a)') '# Phonon frequency and phonon lifetime in meV '
|
||||||
|
WRITE(linewidth_phself, '(a)') '# Q-point Mode Phonon freq (meV) Phonon linewidth (meV)'
|
||||||
|
DO iqq = 1, nqtotf
|
||||||
|
!
|
||||||
|
DO imode = 1, nmodes
|
||||||
|
WRITE(linewidth_phself, '(i9,i6,E20.8,E22.10)') iqq, imode, &
|
||||||
|
ryd2mev * wf(imode, iqq), 2.0d0 * ryd2mev * REAL(gamma_all(imode, iqq, 1, itempphen))
|
||||||
|
ENDDO
|
||||||
|
!
|
||||||
|
ENDDO
|
||||||
|
CLOSE(linewidth_phself)
|
||||||
|
ENDDO ! itempphen
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (band_plot) CALL plot_band()
|
IF (band_plot) CALL plot_band()
|
||||||
|
@ -1617,7 +1631,7 @@
|
||||||
WRITE( stdout, '(5x,"Applying a scissor shift of ",f9.5," eV to the conduction states")' ) scissor * ryd2ev
|
WRITE( stdout, '(5x,"Applying a scissor shift of ",f9.5," eV to the conduction states")' ) scissor * ryd2ev
|
||||||
ENDIF
|
ENDIF
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
IF (int_mob .OR. carrier) THEN
|
IF (int_mob .OR. carrier) THEN
|
||||||
! SP: Determination of the Fermi level and dos for intrinsic or doped carrier
|
! SP: Determination of the Fermi level and dos for intrinsic or doped carrier
|
||||||
! One also need to apply scissor before calling it.
|
! One also need to apply scissor before calling it.
|
||||||
|
@ -1802,8 +1816,12 @@
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating wslen_g', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating wslen_g', 1)
|
||||||
DEALLOCATE(etf_all, STAT = ierr)
|
DEALLOCATE(etf_all, STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating etf_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating etf_all', 1)
|
||||||
DEALLOCATE(transp_temp, STAT = ierr)
|
! Deallocate temperature when no cumulant or supercond
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating transp_temp', 1)
|
IF ((.NOT. cumulant) .AND. (.NOT. eliashberg)) THEN
|
||||||
|
DEALLOCATE(gtemp, STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating gtemp', 1)
|
||||||
|
ENDIF
|
||||||
|
!
|
||||||
DEALLOCATE(et_ks, STAT = ierr)
|
DEALLOCATE(et_ks, STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating et_ks', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating et_ks', 1)
|
||||||
IF (assume_metal) THEN
|
IF (assume_metal) THEN
|
||||||
|
|
|
@ -37,7 +37,8 @@
|
||||||
iterative_bte, longrange, scatread, nqf1, prtgkk, &
|
iterative_bte, longrange, scatread, nqf1, prtgkk, &
|
||||||
nqf2, nqf3, mp_mesh_k, restart, plselfen, epbread, &
|
nqf2, nqf3, mp_mesh_k, restart, plselfen, epbread, &
|
||||||
epmatkqread, selecqread, restart_step, nsmear, &
|
epmatkqread, selecqread, restart_step, nsmear, &
|
||||||
nkc1, nkc2, nkc3, nqc1, nqc2, nqc3, assume_metal
|
nkc1, nkc2, nkc3, nqc1, nqc2, nqc3, assume_metal, &
|
||||||
|
cumulant, eliashberg
|
||||||
USE control_flags, ONLY : iverbosity
|
USE control_flags, ONLY : iverbosity
|
||||||
USE noncollin_module, ONLY : noncolin
|
USE noncollin_module, ONLY : noncolin
|
||||||
USE constants_epw, ONLY : ryd2ev, ryd2mev, one, two, zero, czero, cone, &
|
USE constants_epw, ONLY : ryd2ev, ryd2mev, one, two, zero, czero, cone, &
|
||||||
|
@ -57,7 +58,7 @@
|
||||||
inv_tau_allcb, zi_allcb, exband, nbndskip, &
|
inv_tau_allcb, zi_allcb, exband, nbndskip, &
|
||||||
gamma_v_all, esigmar_all, esigmai_all, &
|
gamma_v_all, esigmar_all, esigmai_all, &
|
||||||
a_all, a_all_ph, wscache, lambda_v_all, threshold, &
|
a_all, a_all_ph, wscache, lambda_v_all, threshold, &
|
||||||
nktotf, transp_temp, xkq, lower_bnd, upper_bnd, dos,&
|
nktotf, gtemp, xkq, lower_bnd, upper_bnd, dos,&
|
||||||
nbndep
|
nbndep
|
||||||
USE wan2bloch, ONLY : dmewan2bloch, hamwan2bloch, dynwan2bloch, &
|
USE wan2bloch, ONLY : dmewan2bloch, hamwan2bloch, dynwan2bloch, &
|
||||||
ephwan2blochp, ephwan2bloch, vmewan2bloch, &
|
ephwan2blochp, ephwan2bloch, vmewan2bloch, &
|
||||||
|
@ -105,6 +106,12 @@
|
||||||
!! Wannier centers
|
!! Wannier centers
|
||||||
!
|
!
|
||||||
! Local variables
|
! Local variables
|
||||||
|
CHARACTER(LEN = 20) :: tp
|
||||||
|
!! string for temperature
|
||||||
|
CHARACTER(LEN = 256) :: filephselfen
|
||||||
|
!! file name of phonon selfenergy
|
||||||
|
CHARACTER(LEN = 256) :: filephlinewid
|
||||||
|
!! file name of phonon linewidth
|
||||||
CHARACTER(LEN = 256) :: filint
|
CHARACTER(LEN = 256) :: filint
|
||||||
!! Name of the file to write/read
|
!! Name of the file to write/read
|
||||||
CHARACTER(LEN = 30) :: myfmt
|
CHARACTER(LEN = 30) :: myfmt
|
||||||
|
@ -173,6 +180,8 @@
|
||||||
!! Counter on bands when use_ws == .TRUE.
|
!! Counter on bands when use_ws == .TRUE.
|
||||||
INTEGER :: itemp
|
INTEGER :: itemp
|
||||||
!! Temperature index
|
!! Temperature index
|
||||||
|
INTEGER :: itempphen
|
||||||
|
!! Temperature counter for writing phonon selfen
|
||||||
INTEGER :: icbm
|
INTEGER :: icbm
|
||||||
!! Index of the CBM
|
!! Index of the CBM
|
||||||
INTEGER :: totq
|
INTEGER :: totq
|
||||||
|
@ -877,34 +886,34 @@
|
||||||
ALLOCATE(epmatlrT(nbndsub, nbndsub, nmodes, nkf), STAT = ierr)
|
ALLOCATE(epmatlrT(nbndsub, nbndsub, nmodes, nkf), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating epmatlrT', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating epmatlrT', 1)
|
||||||
IF (phonselfen) THEN
|
IF (phonselfen) THEN
|
||||||
ALLOCATE(lambda_all(nmodes, totq, nsmear), STAT = ierr)
|
ALLOCATE(lambda_all(nmodes, totq, nsmear, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating lambda_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating lambda_all', 1)
|
||||||
ALLOCATE(lambda_v_all(nmodes, totq, nsmear), STAT = ierr)
|
ALLOCATE(lambda_v_all(nmodes, totq, nsmear, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating lambda_v_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating lambda_v_all', 1)
|
||||||
ALLOCATE(gamma_all(nmodes, totq, nsmear), STAT = ierr)
|
ALLOCATE(gamma_all(nmodes, totq, nsmear, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating gamma_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating gamma_all', 1)
|
||||||
ALLOCATE(gamma_v_all(nmodes, totq, nsmear), STAT = ierr)
|
ALLOCATE(gamma_v_all(nmodes, totq, nsmear, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating gamma_v_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating gamma_v_all', 1)
|
||||||
lambda_all(:, :, :) = zero
|
lambda_all(:, :, :, :) = zero
|
||||||
lambda_v_all(:, :, :) = zero
|
lambda_v_all(:, :, :, :) = zero
|
||||||
gamma_all(:, :, :) = zero
|
gamma_all(:, :, :, :) = zero
|
||||||
gamma_v_all(:, :, :) = zero
|
gamma_v_all(:, :, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (specfun_el .OR. specfun_pl) THEN
|
IF (specfun_el .OR. specfun_pl) THEN
|
||||||
ALLOCATE(esigmar_all(nbndfst, nktotf, nw_specfun), STAT = ierr)
|
ALLOCATE(esigmar_all(nbndfst, nktotf, nw_specfun, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating esigmar_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating esigmar_all', 1)
|
||||||
ALLOCATE(esigmai_all(nbndfst, nktotf, nw_specfun), STAT = ierr)
|
ALLOCATE(esigmai_all(nbndfst, nktotf, nw_specfun, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating esigmai_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating esigmai_all', 1)
|
||||||
ALLOCATE(a_all(nw_specfun, nktotf), STAT = ierr)
|
ALLOCATE(a_all(nw_specfun, nktotf, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating a_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating a_all', 1)
|
||||||
esigmar_all(:, :, :) = zero
|
esigmar_all(:, :, :, :) = zero
|
||||||
esigmai_all(:, :, :) = zero
|
esigmai_all(:, :, :, :) = zero
|
||||||
a_all(:, :) = zero
|
a_all(:, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (specfun_ph) THEN
|
IF (specfun_ph) THEN
|
||||||
ALLOCATE(a_all_ph(nw_specfun, totq), STAT = ierr)
|
ALLOCATE(a_all_ph(nw_specfun, totq, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating a_all_ph', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating a_all_ph', 1)
|
||||||
a_all_ph(:, :) = zero
|
a_all_ph(:, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (scattering .AND. .NOT. iterative_bte) THEN
|
IF (scattering .AND. .NOT. iterative_bte) THEN
|
||||||
ALLOCATE(inv_tau_all(nstemp, nbndfst, nktotf), STAT = ierr)
|
ALLOCATE(inv_tau_all(nstemp, nbndfst, nktotf), STAT = ierr)
|
||||||
|
@ -923,19 +932,19 @@
|
||||||
zi_allcb(:, :, :) = zero
|
zi_allcb(:, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (elecselfen .OR. plselfen) THEN
|
IF (elecselfen .OR. plselfen) THEN
|
||||||
ALLOCATE(sigmar_all(nbndfst, nktotf), STAT = ierr)
|
ALLOCATE(sigmar_all(nbndfst, nktotf, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating sigmar_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating sigmar_all', 1)
|
||||||
ALLOCATE(sigmai_all(nbndfst, nktotf), STAT = ierr)
|
ALLOCATE(sigmai_all(nbndfst, nktotf, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating sigmai_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating sigmai_all', 1)
|
||||||
ALLOCATE(zi_all(nbndfst, nktotf), STAT = ierr)
|
ALLOCATE(zi_all(nbndfst, nktotf, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating zi_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating zi_all', 1)
|
||||||
sigmar_all(:, :) = zero
|
sigmar_all(:, :, :) = zero
|
||||||
sigmai_all(:, :) = zero
|
sigmai_all(:, :, :) = zero
|
||||||
zi_all(:, :) = zero
|
zi_all(:, :, :) = zero
|
||||||
IF (iverbosity == 3) THEN
|
IF (iverbosity == 3) THEN
|
||||||
ALLOCATE(sigmai_mode(nbndfst, nmodes, nktotf), STAT = ierr)
|
ALLOCATE(sigmai_mode(nbndfst, nmodes, nktotf, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating sigmai_mode', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating sigmai_mode', 1)
|
||||||
sigmai_mode(:, :, :) = zero
|
sigmai_mode(:, :, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDIF ! elecselfen
|
ENDIF ! elecselfen
|
||||||
!
|
!
|
||||||
|
@ -993,6 +1002,7 @@
|
||||||
CALL mp_bcast(npool_tmp, ionode_id, world_comm)
|
CALL mp_bcast(npool_tmp, ionode_id, world_comm)
|
||||||
CALL mp_bcast(lrepmatw2_restart, ionode_id, world_comm)
|
CALL mp_bcast(lrepmatw2_restart, ionode_id, world_comm)
|
||||||
CALL mp_bcast(lrepmatw5_restart, ionode_id, world_comm)
|
CALL mp_bcast(lrepmatw5_restart, ionode_id, world_comm)
|
||||||
|
IF (npool /= npool_tmp) CALL errore('ephwann_shuffle','Number of cores is different',1)
|
||||||
!
|
!
|
||||||
IF (iterative_bte) THEN
|
IF (iterative_bte) THEN
|
||||||
IF (mpime == ionode_id) THEN
|
IF (mpime == ionode_id) THEN
|
||||||
|
@ -1006,7 +1016,6 @@
|
||||||
ENDIF
|
ENDIF
|
||||||
CALL mp_bcast(inv_tau_all, ionode_id, world_comm)
|
CALL mp_bcast(inv_tau_all, ionode_id, world_comm)
|
||||||
CALL mp_bcast(inv_tau_allcb, ionode_id, world_comm)
|
CALL mp_bcast(inv_tau_allcb, ionode_id, world_comm)
|
||||||
IF (npool /= npool_tmp) CALL errore('ephwann_shuffle','Number of cores is different',1)
|
|
||||||
IF (lower_bnd - 1 >= 1) THEN
|
IF (lower_bnd - 1 >= 1) THEN
|
||||||
inv_tau_all(:, 1:lower_bnd - 1, :) = 0d0
|
inv_tau_all(:, 1:lower_bnd - 1, :) = 0d0
|
||||||
inv_tau_allcb(:, 1:lower_bnd - 1, :) = 0d0
|
inv_tau_allcb(:, 1:lower_bnd - 1, :) = 0d0
|
||||||
|
@ -1341,7 +1350,7 @@
|
||||||
! This is only done once for the first iq. Also compute the dos at the same time
|
! This is only done once for the first iq. Also compute the dos at the same time
|
||||||
IF (iqq == iq_restart) THEN
|
IF (iqq == iq_restart) THEN
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
CALL fermicarrier(itemp, etemp, ef0, efcb, ctype)
|
CALL fermicarrier(itemp, etemp, ef0, efcb, ctype)
|
||||||
! compute dos for metals
|
! compute dos for metals
|
||||||
IF (assume_metal) THEN
|
IF (assume_metal) THEN
|
||||||
|
@ -1400,37 +1409,42 @@
|
||||||
IF (mpime == ionode_id) THEN
|
IF (mpime == ionode_id) THEN
|
||||||
!
|
!
|
||||||
IF (phonselfen) THEN
|
IF (phonselfen) THEN
|
||||||
OPEN(UNIT = lambda_phself, FILE = 'lambda.phself')
|
DO itempphen = 1, nstemp
|
||||||
WRITE(lambda_phself, '(/2x,a/)') '#Lambda phonon self-energy'
|
WRITE(tp, "(f8.3)") gtemp(itempphen) * ryd2ev / kelvin2eV
|
||||||
WRITE(lambda_phself, *) '#Modes ',(imode, imode = 1, nmodes)
|
filephselfen = 'lambda.phself.' // trim(adjustl(tp)) // 'K'
|
||||||
DO iqq = 1, nqtotf
|
OPEN(UNIT = lambda_phself, FILE = filephselfen)
|
||||||
!
|
WRITE(lambda_phself, '(/2x,a/)') '#Lambda phonon self-energy'
|
||||||
!myfmt = "(*(3x,E15.5))" This does not work with PGI
|
WRITE(lambda_phself, *) '#Modes ',(imode, imode = 1, nmodes)
|
||||||
myfmt = "(1000(3x,E15.5))"
|
DO iqq = 1, nqtotf
|
||||||
WRITE(lambda_phself,'(i9,4x)', ADVANCE = 'no') iqq
|
!
|
||||||
WRITE(lambda_phself, FMT = myfmt) (REAL(lambda_all(imode, iqq, 1)), imode = 1, nmodes)
|
!myfmt = "(*(3x,E15.5))" This does not work with PGI
|
||||||
!
|
myfmt = "(1000(3x,E15.5))"
|
||||||
ENDDO
|
WRITE(lambda_phself,'(i9,4x)', ADVANCE = 'no') iqq
|
||||||
CLOSE(lambda_phself)
|
WRITE(lambda_phself, FMT = myfmt) (REAL(lambda_all(imode, iqq, 1, itempphen)), imode = 1, nmodes)
|
||||||
!
|
!
|
||||||
! SP - 03/2019
|
|
||||||
! \Gamma = 1/\tau = phonon lifetime
|
|
||||||
! \Gamma = - 2 * Im \Pi^R where \Pi^R is the retarted phonon self-energy.
|
|
||||||
! Im \Pi^R = pi*k-point weight*[f(E_k+q) - f(E_k)]*delta[E_k+q - E_k - w_q]
|
|
||||||
! Since gamma_all = pi*k-point weight*[f(E_k) - f(E_k+q)]*delta[E_k+q - E_k - w_q] we have
|
|
||||||
! \Gamma = 2 * gamma_all
|
|
||||||
OPEN(UNIT = linewidth_phself, FILE = 'linewidth.phself')
|
|
||||||
WRITE(linewidth_phself, '(a)') '# Phonon frequency and phonon lifetime in meV '
|
|
||||||
WRITE(linewidth_phself, '(a)') '# Q-point Mode Phonon freq (meV) Phonon linewidth (meV)'
|
|
||||||
DO iqq = 1, nqtotf
|
|
||||||
!
|
|
||||||
DO imode = 1, nmodes
|
|
||||||
WRITE(linewidth_phself, '(i9,i6,E20.8,E22.10)') iqq, imode, &
|
|
||||||
ryd2mev * wf(imode, iqq), 2.0d0 * ryd2mev * REAL(gamma_all(imode, iqq, 1))
|
|
||||||
ENDDO
|
ENDDO
|
||||||
|
CLOSE(lambda_phself)
|
||||||
!
|
!
|
||||||
ENDDO
|
! SP - 03/2019
|
||||||
CLOSE(linewidth_phself)
|
! \Gamma = 1/\tau = phonon lifetime
|
||||||
|
! \Gamma = - 2 * Im \Pi^R where \Pi^R is the retarted phonon self-energy.
|
||||||
|
! Im \Pi^R = pi*k-point weight*[f(E_k+q) - f(E_k)]*delta[E_k+q - E_k - w_q]
|
||||||
|
! Since gamma_all = pi*k-point weight*[f(E_k) - f(E_k+q)]*delta[E_k+q - E_k - w_q] we have
|
||||||
|
! \Gamma = 2 * gamma_all
|
||||||
|
filephlinewid = 'linewidth.phself.' // trim(adjustl(tp)) // 'K'
|
||||||
|
OPEN(UNIT = linewidth_phself, FILE = filephlinewid)
|
||||||
|
WRITE(linewidth_phself, '(a)') '# Phonon frequency and phonon lifetime in meV '
|
||||||
|
WRITE(linewidth_phself, '(a)') '# Q-point Mode Phonon freq (meV) Phonon linewidth (meV)'
|
||||||
|
DO iqq = 1, nqtotf
|
||||||
|
!
|
||||||
|
DO imode = 1, nmodes
|
||||||
|
WRITE(linewidth_phself, '(i9,i6,E20.8,E22.10)') iqq, imode, &
|
||||||
|
ryd2mev * wf(imode, iqq), 2.0d0 * ryd2mev * REAL(gamma_all(imode, iqq, 1, itempphen))
|
||||||
|
ENDDO
|
||||||
|
!
|
||||||
|
ENDDO
|
||||||
|
CLOSE(linewidth_phself)
|
||||||
|
ENDDO ! itempphen
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (band_plot) CALL plot_band()
|
IF (band_plot) CALL plot_band()
|
||||||
|
@ -1451,7 +1465,7 @@
|
||||||
WRITE( stdout, '(5x,"Applying a scissor shift of ",f9.5," eV to the conduction states")' ) scissor * ryd2ev
|
WRITE( stdout, '(5x,"Applying a scissor shift of ",f9.5," eV to the conduction states")' ) scissor * ryd2ev
|
||||||
ENDIF
|
ENDIF
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
IF (int_mob .OR. carrier) THEN
|
IF (int_mob .OR. carrier) THEN
|
||||||
! SP: Determination of the Fermi level for intrinsic or doped carrier
|
! SP: Determination of the Fermi level for intrinsic or doped carrier
|
||||||
! One also need to apply scissor before calling it.
|
! One also need to apply scissor before calling it.
|
||||||
|
@ -1632,8 +1646,12 @@
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error deallocating wslen_g', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error deallocating wslen_g', 1)
|
||||||
DEALLOCATE(etf_all, STAT = ierr)
|
DEALLOCATE(etf_all, STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error deallocating etf_all', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error deallocating etf_all', 1)
|
||||||
DEALLOCATE(transp_temp, STAT = ierr)
|
! Deallocate temperature when no cumulant or supercond
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error deallocating transp_temp', 1)
|
IF ((.NOT. cumulant) .AND. (.NOT. eliashberg)) THEN
|
||||||
|
DEALLOCATE(gtemp, STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating gtemp', 1)
|
||||||
|
ENDIF
|
||||||
|
!
|
||||||
DEALLOCATE(et_ks, STAT = ierr)
|
DEALLOCATE(et_ks, STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error deallocating et_ks', 1)
|
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error deallocating et_ks', 1)
|
||||||
IF (assume_metal) THEN
|
IF (assume_metal) THEN
|
||||||
|
|
|
@ -94,7 +94,6 @@
|
||||||
WRITE(stdout,'(a)') " Be aware that some consistency checks are therefore not done. "
|
WRITE(stdout,'(a)') " Be aware that some consistency checks are therefore not done. "
|
||||||
WRITE(stdout,'(a)') " ------------------------------------------------------------------------ "
|
WRITE(stdout,'(a)') " ------------------------------------------------------------------------ "
|
||||||
WRITE(stdout,'(a)') " "
|
WRITE(stdout,'(a)') " "
|
||||||
CALL epw_setup_restart()
|
|
||||||
ELSE
|
ELSE
|
||||||
CALL epw_setup()
|
CALL epw_setup()
|
||||||
ENDIF
|
ENDIF
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
USE start_k, ONLY : nk1, nk2, nk3
|
USE start_k, ONLY : nk1, nk2, nk3
|
||||||
USe disp, ONLY : nq1, nq2, nq3
|
USe disp, ONLY : nq1, nq2, nq3
|
||||||
USE epwcom, ONLY : delta_smear, nsmear, dis_win_min, dis_win_max, wannierize, &
|
USE epwcom, ONLY : delta_smear, nsmear, dis_win_min, dis_win_max, wannierize, &
|
||||||
ngaussw, dvscf_dir, eptemp, bands_skipped, wdata, kmaps, &
|
ngaussw, dvscf_dir, bands_skipped, wdata, kmaps, ntempxx, &
|
||||||
num_iter, dis_froz_max, fsthick, dis_froz_min, eig_read, &
|
num_iter, dis_froz_max, fsthick, dis_froz_min, eig_read, &
|
||||||
vme, degaussw, epexst, epwwrite, epbread, phonselfen, nqc2,&
|
vme, degaussw, epexst, epwwrite, epbread, phonselfen, nqc2,&
|
||||||
elecselfen, a2f, plselfen, specfun_pl, nest_fn, filukk, &
|
elecselfen, a2f, plselfen, specfun_pl, nest_fn, filukk, &
|
||||||
|
@ -39,7 +39,7 @@
|
||||||
nqc3, nkf1, nkf2, nkf3, nqf1, nqf2, nqf3, eps_acustic, nw, &
|
nqc3, nkf1, nkf2, nkf3, nqf1, nqf2, nqf3, eps_acustic, nw, &
|
||||||
wmax, wmin, mp_mesh_q, mp_mesh_k, filqf, filkf, nswi, nc, &
|
wmax, wmin, mp_mesh_q, mp_mesh_k, filqf, filkf, nswi, nc, &
|
||||||
delta_qsmear, degaussq, band_plot, ephwrite, nstemp, &
|
delta_qsmear, degaussq, band_plot, ephwrite, nstemp, &
|
||||||
broyden_beta, conv_thr_raxis, tempsmax, tempsmin, temps, &
|
broyden_beta, conv_thr_raxis, temps, tempsmin, tempsmax, &
|
||||||
broyden_ndim, wscut, wsfc, nqstep, limag, lreal, muc, &
|
broyden_ndim, wscut, wsfc, nqstep, limag, lreal, muc, &
|
||||||
gap_edge, conv_thr_iaxis, nqsmear, iprint, wepexst, nswfc, &
|
gap_edge, conv_thr_iaxis, nqsmear, iprint, wepexst, nswfc, &
|
||||||
epwread, eliashberg, imag_read, kerread, kerwrite, lunif, &
|
epwread, eliashberg, imag_read, kerread, kerwrite, lunif, &
|
||||||
|
@ -47,7 +47,7 @@
|
||||||
ep_coupling, nw_specfun, wmax_specfun, wmin_specfun, &
|
ep_coupling, nw_specfun, wmax_specfun, wmin_specfun, &
|
||||||
laniso, lpolar, lifc, asr_typ, lscreen, scr_typ, nbndsub, &
|
laniso, lpolar, lifc, asr_typ, lscreen, scr_typ, nbndsub, &
|
||||||
fermi_diff, smear_rpa, cumulant, bnd_cum, proj, write_wfn, &
|
fermi_diff, smear_rpa, cumulant, bnd_cum, proj, write_wfn, &
|
||||||
iswitch, ntempxx, liso, lacon, lpade, etf_mem, epbwrite, &
|
iswitch, liso, lacon, lpade, etf_mem, epbwrite, &
|
||||||
nsiter, conv_thr_racon, specfun_el, specfun_ph, &
|
nsiter, conv_thr_racon, specfun_el, specfun_ph, &
|
||||||
system_2d, delta_approx, title, int_mob, scissor, &
|
system_2d, delta_approx, title, int_mob, scissor, &
|
||||||
iterative_bte, scattering, selecqread, epmatkqread, &
|
iterative_bte, scattering, selecqread, epmatkqread, &
|
||||||
|
@ -61,7 +61,7 @@
|
||||||
wannier_plot_radius, &
|
wannier_plot_radius, &
|
||||||
fixsym, epw_no_t_rev, epw_tr, epw_nosym, epw_noinv
|
fixsym, epw_no_t_rev, epw_tr, epw_nosym, epw_noinv
|
||||||
USE klist_epw, ONLY : xk_all, xk_loc, xk_cryst, isk_all, isk_loc, et_all, et_loc
|
USE klist_epw, ONLY : xk_all, xk_loc, xk_cryst, isk_all, isk_loc, et_all, et_loc
|
||||||
USE elph2, ONLY : elph, num_wannier_plot, wanplotlist
|
USE elph2, ONLY : elph, num_wannier_plot, wanplotlist, gtemp
|
||||||
USE constants_epw, ONLY : ryd2mev, ryd2ev, ev2cmm1, kelvin2eV, zero, eps20, ang2m
|
USE constants_epw, ONLY : ryd2mev, ryd2ev, ev2cmm1, kelvin2eV, zero, eps20, ang2m
|
||||||
USE io_files, ONLY : tmp_dir, prefix
|
USE io_files, ONLY : tmp_dir, prefix
|
||||||
USE control_flags, ONLY : iverbosity, modenum, gamma_only
|
USE control_flags, ONLY : iverbosity, modenum, gamma_only
|
||||||
|
@ -115,6 +115,10 @@
|
||||||
!! Counter for loops
|
!! Counter for loops
|
||||||
INTEGER :: ik
|
INTEGER :: ik
|
||||||
!! Counter on k-points
|
!! Counter on k-points
|
||||||
|
INTEGER :: itemp
|
||||||
|
!! counter on temperatures
|
||||||
|
INTEGER :: nstemp_hold = 0
|
||||||
|
!! placeholder for nstemp
|
||||||
INTEGER :: nk1tmp
|
INTEGER :: nk1tmp
|
||||||
!! temp vars for saving kgrid info
|
!! temp vars for saving kgrid info
|
||||||
INTEGER :: nk2tmp
|
INTEGER :: nk2tmp
|
||||||
|
@ -129,7 +133,7 @@
|
||||||
elph, nq1, nq2, nq3, nk1, nk2, nk3, nbndsub, &
|
elph, nq1, nq2, nq3, nk1, nk2, nk3, nbndsub, &
|
||||||
filukk, epbread, epbwrite, epwread, epwwrite, etf_mem, kmaps, &
|
filukk, epbread, epbwrite, epwread, epwwrite, etf_mem, kmaps, &
|
||||||
eig_read, wepexst, epexst, vme, &
|
eig_read, wepexst, epexst, vme, &
|
||||||
degaussw, fsthick, eptemp, nsmear, delta_smear, &
|
degaussw, fsthick, nsmear, delta_smear, &
|
||||||
dvscf_dir, ngaussw, epmatkqread, selecqread, &
|
dvscf_dir, ngaussw, epmatkqread, selecqread, &
|
||||||
wannierize, dis_win_max, dis_win_min, dis_froz_min, dis_froz_max, &
|
wannierize, dis_win_max, dis_win_min, dis_froz_min, dis_froz_max, &
|
||||||
num_iter, proj, bands_skipped, wdata, iprint, write_wfn, &
|
num_iter, proj, bands_skipped, wdata, iprint, write_wfn, &
|
||||||
|
@ -140,7 +144,7 @@
|
||||||
mp_mesh_k, mp_mesh_q, filqf, filkf, ephwrite, &
|
mp_mesh_k, mp_mesh_q, filqf, filkf, ephwrite, &
|
||||||
band_plot, degaussq, delta_qsmear, nqsmear, nqstep, &
|
band_plot, degaussq, delta_qsmear, nqsmear, nqstep, &
|
||||||
nswfc, nswc, nswi, pwc, wsfc, wscut, system_2d, &
|
nswfc, nswc, nswi, pwc, wsfc, wscut, system_2d, &
|
||||||
broyden_beta, broyden_ndim, nstemp, tempsmin, tempsmax, temps, &
|
broyden_beta, broyden_ndim, nstemp, temps, &
|
||||||
conv_thr_raxis, conv_thr_iaxis, conv_thr_racon, &
|
conv_thr_raxis, conv_thr_iaxis, conv_thr_racon, &
|
||||||
gap_edge, nsiter, muc, lreal, limag, lpade, lacon, liso, laniso, lpolar,&
|
gap_edge, nsiter, muc, lreal, limag, lpade, lacon, liso, laniso, lpolar,&
|
||||||
lscreen, scr_typ, fermi_diff, smear_rpa, cumulant, bnd_cum, &
|
lscreen, scr_typ, fermi_diff, smear_rpa, cumulant, bnd_cum, &
|
||||||
|
@ -433,7 +437,6 @@
|
||||||
eps_acustic = 5.d0 ! cm-1
|
eps_acustic = 5.d0 ! cm-1
|
||||||
nw = 10
|
nw = 10
|
||||||
fsthick = 1.d10 ! eV
|
fsthick = 1.d10 ! eV
|
||||||
eptemp = 300.0d0
|
|
||||||
degaussw = 0.025d0 ! eV
|
degaussw = 0.025d0 ! eV
|
||||||
a2f = .FALSE.
|
a2f = .FALSE.
|
||||||
etf_mem = 1
|
etf_mem = 1
|
||||||
|
@ -513,9 +516,7 @@
|
||||||
conv_thr_iaxis = 1.d-05
|
conv_thr_iaxis = 1.d-05
|
||||||
conv_thr_racon = 5.d-04
|
conv_thr_racon = 5.d-04
|
||||||
gap_edge = 0.d0
|
gap_edge = 0.d0
|
||||||
nstemp = 1
|
nstemp = 0
|
||||||
tempsmin = 0.d0
|
|
||||||
tempsmax = 0.d0
|
|
||||||
temps(:) = 0.d0
|
temps(:) = 0.d0
|
||||||
nsiter = 40
|
nsiter = 40
|
||||||
muc = 0.d0
|
muc = 0.d0
|
||||||
|
@ -711,10 +712,10 @@
|
||||||
'You should define either filqf or nqf when band_plot = .true.', 1)
|
'You should define either filqf or nqf when band_plot = .true.', 1)
|
||||||
IF (filkf /= ' ' .AND. .NOT. efermi_read) CALL errore('epw_readin', &
|
IF (filkf /= ' ' .AND. .NOT. efermi_read) CALL errore('epw_readin', &
|
||||||
'WARNING: if k-points are along a line, then efermi_read=.true. and fermi_energy must be given in the input file', -1)
|
'WARNING: if k-points are along a line, then efermi_read=.true. and fermi_energy must be given in the input file', -1)
|
||||||
IF (scattering .AND. nstemp < 1) CALL errore('epw_readin', 'wrong number of nstemp', 1)
|
IF (MAXVAL(temps(:)) == 0.d0 .AND. nstemp > 0) &
|
||||||
IF (scattering .AND. MAXVAL(temps(:)) > 0.d0 .AND. tempsmin > 0.d0 .AND. tempsmax > 0.d0) &
|
CALL errore('epw_readin', 'temps(:) must be specified if nstemp > 0', 1)
|
||||||
CALL errore('epw_readin', 'define either (tempsmin and tempsmax) or temps(:)', 1)
|
IF (nstemp > ntempxx) &
|
||||||
IF (scattering .AND. tempsmax < tempsmin) CALL errore('epw_readin', 'tempsmax should be greater than tempsmin', 1)
|
CALL errore('epw_readin', 'Maximum value of nstemp that can be used is 50', 1)
|
||||||
IF ((ABS(ncarrier) > 1E+5) .AND. .NOT. carrier) CALL errore('epw_readin', &
|
IF ((ABS(ncarrier) > 1E+5) .AND. .NOT. carrier) CALL errore('epw_readin', &
|
||||||
'carrier must be .TRUE. if you specify ncarrier.', 1)
|
'carrier must be .TRUE. if you specify ncarrier.', 1)
|
||||||
IF (carrier .AND. (ABS(ncarrier) < 1E+5)) CALL errore('epw_readin', &
|
IF (carrier .AND. (ABS(ncarrier) < 1E+5)) CALL errore('epw_readin', &
|
||||||
|
@ -758,6 +759,50 @@
|
||||||
WRITE(stdout, '(5x,a)') " to control the lower bound of band manifold."
|
WRITE(stdout, '(5x,a)') " to control the lower bound of band manifold."
|
||||||
ENDIF
|
ENDIF
|
||||||
!
|
!
|
||||||
|
! setup temperature array
|
||||||
|
DO itemp = 1, ntempxx
|
||||||
|
IF (temps(itemp) > 0.d0) THEN
|
||||||
|
nstemp_hold = itemp
|
||||||
|
ENDIF
|
||||||
|
ENDDO
|
||||||
|
!
|
||||||
|
!case of nstemp > 0 but temps(:) = 0 is caught above
|
||||||
|
IF (nstemp_hold == 0 .AND. nstemp == 0) THEN !default mode (nstemp_hold == 0 if temps(:) = 0)
|
||||||
|
nstemp = 1
|
||||||
|
temps(1) = 300
|
||||||
|
WRITE(stdout, '(/,5x,a)') 'No temperature supplied. Setting temps(:) to 300 K.'
|
||||||
|
ELSE IF (nstemp == 0 .OR. nstemp_hold == nstemp) THEN !list mode
|
||||||
|
nstemp = nstemp_hold !catches if nstemp not supplied, no effect if it is
|
||||||
|
WRITE(stdout, '(/,5x,a)') 'Reading supplied temperature list.'
|
||||||
|
ELSE IF (nstemp_hold < nstemp .AND. nstemp_hold == 2) THEN !even spacing mode
|
||||||
|
tempsmin = temps(1)
|
||||||
|
tempsmax = temps(2)
|
||||||
|
IF (tempsmin >= tempsmax) THEN !bad start and end points
|
||||||
|
CALL errore('epw_readin', 'Error generating temperatures: need temps(1) < temps(2)', 1)
|
||||||
|
ELSE
|
||||||
|
DO itemp = 1, nstemp
|
||||||
|
temps(itemp) = tempsmin + DBLE(itemp - 1) * (tempsmax - tempsmin) / DBLE(nstemp - 1)
|
||||||
|
END DO
|
||||||
|
END IF
|
||||||
|
WRITE(stdout, '(/,5x,a)') 'Generating evenly spaced temperature list.'
|
||||||
|
ELSE IF (nstemp_hold .NE. nstemp) THEN !temps and nstemp not match
|
||||||
|
! Ignore nstemp setting, print warning
|
||||||
|
WRITE(stdout, '(/,5x,a)') 'WARNING: Mismatch between temps(:) and nstemp'
|
||||||
|
WRITE(stdout, '(/,5x,a)') 'WARNING: Using supplied temperature list and ignoring nstemp'
|
||||||
|
nstemp = nstemp_hold
|
||||||
|
! CALL errore('epw_readin', 'Error: too many temperatures for given nstemp', 1)
|
||||||
|
! ELSE IF (nstemp > nstemp_hold) THEN !need more temps
|
||||||
|
! CALL errore('epw_readin', 'Error: not enough temperatures given in temps(:)', 1)
|
||||||
|
ELSE
|
||||||
|
CALL errore('epw_readin', 'Error generating temperatures: unknown error', 1)
|
||||||
|
END IF
|
||||||
|
! go from K to Ry
|
||||||
|
temps(:) = temps(:) * kelvin2eV / ryd2ev
|
||||||
|
!
|
||||||
|
ALLOCATE(gtemp(nstemp), STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('epw_readin', 'Error allocating gtemp', 1)
|
||||||
|
gtemp(:) = temps(1:nstemp)
|
||||||
|
!
|
||||||
! In the case of Fermi-Dirac distribution one should probably etemp instead of degauss.
|
! In the case of Fermi-Dirac distribution one should probably etemp instead of degauss.
|
||||||
! This is achieved with assume_metal == .true.
|
! This is achieved with assume_metal == .true.
|
||||||
IF (ngaussw == -99 .AND. .NOT. assume_metal) THEN
|
IF (ngaussw == -99 .AND. .NOT. assume_metal) THEN
|
||||||
|
@ -783,7 +828,6 @@
|
||||||
! 1 K in eV = 8.6173423e-5
|
! 1 K in eV = 8.6173423e-5
|
||||||
! from K to Ryd
|
! from K to Ryd
|
||||||
! Out-of bound issue with GCC compiler. Multiple Fermi temp is not used anyway.
|
! Out-of bound issue with GCC compiler. Multiple Fermi temp is not used anyway.
|
||||||
eptemp = eptemp * kelvin2eV / ryd2ev
|
|
||||||
!
|
!
|
||||||
! from cm-1 to Ryd
|
! from cm-1 to Ryd
|
||||||
eps_acustic = eps_acustic / ev2cmm1 / ryd2ev
|
eps_acustic = eps_acustic / ev2cmm1 / ryd2ev
|
||||||
|
@ -805,19 +849,6 @@
|
||||||
omegamin = omegamin / ryd2ev
|
omegamin = omegamin / ryd2ev
|
||||||
omegamax = omegamax / ryd2ev
|
omegamax = omegamax / ryd2ev
|
||||||
omegastep = omegastep / ryd2ev
|
omegastep = omegastep / ryd2ev
|
||||||
IF (scattering) THEN
|
|
||||||
DO i = 1, ntempxx
|
|
||||||
IF (temps(i) > 0.d0) THEN
|
|
||||||
nstemp = i
|
|
||||||
ENDIF
|
|
||||||
ENDDO
|
|
||||||
!
|
|
||||||
! go from K to Ry
|
|
||||||
temps(:) = temps(:) * kelvin2eV / ryd2ev
|
|
||||||
tempsmin = tempsmin * kelvin2eV / ryd2ev
|
|
||||||
tempsmax = tempsmax * kelvin2eV / ryd2ev
|
|
||||||
!
|
|
||||||
ENDIF
|
|
||||||
!
|
!
|
||||||
xq(:) = zero
|
xq(:) = zero
|
||||||
!
|
!
|
||||||
|
@ -835,6 +866,13 @@
|
||||||
IF (wannier_plot) CALL mp_bcast(wanplotlist, meta_ionode_id, world_comm)
|
IF (wannier_plot) CALL mp_bcast(wanplotlist, meta_ionode_id, world_comm)
|
||||||
!
|
!
|
||||||
CALL bcast_epw_input()
|
CALL bcast_epw_input()
|
||||||
|
IF (.NOT. meta_ionode) THEN
|
||||||
|
! need to allocate gtemp after the initial bcast_epw_input so all nodes have nstemp
|
||||||
|
ALLOCATE(gtemp(nstemp), STAT = ierr)
|
||||||
|
IF (ierr /= 0) CALL errore('epw_readin', 'Error allocating gtemp', 1)
|
||||||
|
ENDIF
|
||||||
|
!bcast gtemp following allocation
|
||||||
|
CALL mp_bcast(gtemp, meta_ionode_id, world_comm)
|
||||||
!
|
!
|
||||||
! Here we finished the reading of the input file.
|
! Here we finished the reading of the input file.
|
||||||
! Now allocate space for pwscf variables, read and check them.
|
! Now allocate space for pwscf variables, read and check them.
|
||||||
|
|
|
@ -19,7 +19,6 @@
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE ions_base, ONLY : tau, nat, ntyp => nsp, ityp
|
USE ions_base, ONLY : tau, nat, ntyp => nsp, ityp
|
||||||
USE cell_base, ONLY : at, bg
|
USE cell_base, ONLY : at, bg
|
||||||
USE io_global, ONLY : ionode_id
|
|
||||||
USE klist, ONLY : nkstot
|
USE klist, ONLY : nkstot
|
||||||
USE lsda_mod, ONLY : nspin, starting_magnetization
|
USE lsda_mod, ONLY : nspin, starting_magnetization
|
||||||
USE scf, ONLY : v, vrs, vltot, kedtau
|
USE scf, ONLY : v, vrs, vltot, kedtau
|
||||||
|
@ -29,7 +28,7 @@
|
||||||
USE eqv, ONLY : dmuxc
|
USE eqv, ONLY : dmuxc
|
||||||
USE uspp_param, ONLY : upf
|
USE uspp_param, ONLY : upf
|
||||||
USE spin_orb, ONLY : domag
|
USE spin_orb, ONLY : domag
|
||||||
USE constants_epw, ONLY : zero, eps5, czero
|
USE constants_epw, ONLY : zero, eps5, czero, ryd2ev, kelvin2ev
|
||||||
USE nlcc_ph, ONLY : drc
|
USE nlcc_ph, ONLY : drc
|
||||||
USE uspp, ONLY : nlcc_any
|
USE uspp, ONLY : nlcc_any
|
||||||
USE control_ph, ONLY : search_sym, u_from_file
|
USE control_ph, ONLY : search_sym, u_from_file
|
||||||
|
@ -40,12 +39,10 @@
|
||||||
USE funct, ONLY : dft_is_gradient
|
USE funct, ONLY : dft_is_gradient
|
||||||
USE mp_global, ONLY : world_comm
|
USE mp_global, ONLY : world_comm
|
||||||
USE mp, ONLY : mp_bcast
|
USE mp, ONLY : mp_bcast
|
||||||
USE epwcom, ONLY : scattering, nstemp, tempsmin, tempsmax, temps, &
|
USE epwcom, ONLY : scattering, nkc1, nkc2, nkc3
|
||||||
nkc1, nkc2, nkc3
|
|
||||||
USE klist_epw, ONLY : xk_cryst
|
USE klist_epw, ONLY : xk_cryst
|
||||||
USE fft_base, ONLY : dfftp
|
USE fft_base, ONLY : dfftp
|
||||||
USE gvecs, ONLY : doublegrid
|
USE gvecs, ONLY : doublegrid
|
||||||
USE elph2, ONLY : transp_temp
|
|
||||||
USE noncollin_module, ONLY : noncolin, m_loc, angle1, angle2, ux, nspin_mag
|
USE noncollin_module, ONLY : noncolin, m_loc, angle1, angle2, ux, nspin_mag
|
||||||
! ---------------------------------------------------------------------------------
|
! ---------------------------------------------------------------------------------
|
||||||
! Added for polaron calculations. Originally by Danny Sio, modified by Chao Lian.
|
! Added for polaron calculations. Originally by Danny Sio, modified by Chao Lian.
|
||||||
|
@ -65,8 +62,6 @@
|
||||||
!! counter on irrepr
|
!! counter on irrepr
|
||||||
INTEGER :: na
|
INTEGER :: na
|
||||||
!! counter on atoms
|
!! counter on atoms
|
||||||
INTEGER :: itemp
|
|
||||||
!! counter on temperatures
|
|
||||||
INTEGER :: ierr
|
INTEGER :: ierr
|
||||||
!! Error status
|
!! Error status
|
||||||
REAL(KIND = DP) :: xx_c, yy_c, zz_c
|
REAL(KIND = DP) :: xx_c, yy_c, zz_c
|
||||||
|
@ -206,83 +201,9 @@
|
||||||
npertx = MAX(npertx, npert(irr))
|
npertx = MAX(npertx, npert(irr))
|
||||||
ENDDO
|
ENDDO
|
||||||
!
|
!
|
||||||
ALLOCATE(transp_temp(nstemp), STAT = ierr)
|
|
||||||
IF (ierr /= 0) CALL errore('epw_setup', 'Error allocating transp_temp', 1)
|
|
||||||
!
|
|
||||||
transp_temp(:) = zero
|
|
||||||
! In case of scattering calculation
|
|
||||||
IF (scattering) THEN
|
|
||||||
!
|
|
||||||
IF (MAXVAL(temps(:)) > zero) THEN
|
|
||||||
transp_temp(:) = temps(:)
|
|
||||||
ELSE
|
|
||||||
IF (nstemp == 1) THEN
|
|
||||||
transp_temp(1) = tempsmin
|
|
||||||
ELSE
|
|
||||||
DO itemp = 1, nstemp
|
|
||||||
transp_temp(itemp) = tempsmin + DBLE(itemp - 1) * (tempsmax - tempsmin) / DBLE(nstemp - 1)
|
|
||||||
ENDDO
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
! We have to bcast here because before it has not been allocated
|
|
||||||
CALL mp_bcast(transp_temp, ionode_id, world_comm)
|
|
||||||
!
|
|
||||||
CALL stop_clock('epw_setup')
|
CALL stop_clock('epw_setup')
|
||||||
RETURN
|
RETURN
|
||||||
!
|
!
|
||||||
!-----------------------------------------------------------------------
|
!-----------------------------------------------------------------------
|
||||||
END SUBROUTINE epw_setup
|
END SUBROUTINE epw_setup
|
||||||
!-----------------------------------------------------------------------
|
!-----------------------------------------------------------------------
|
||||||
!
|
|
||||||
!-----------------------------------------------------------------------
|
|
||||||
SUBROUTINE epw_setup_restart()
|
|
||||||
!-----------------------------------------------------------------------
|
|
||||||
!!
|
|
||||||
!! Setup in the case of a restart
|
|
||||||
!!
|
|
||||||
! ----------------------------------------------------------------------
|
|
||||||
USE constants_epw, ONLY : zero
|
|
||||||
USE io_global, ONLY : ionode_id
|
|
||||||
USE mp_global, ONLY : world_comm
|
|
||||||
USE mp, ONLY : mp_bcast
|
|
||||||
USE epwcom, ONLY : scattering, nstemp, tempsmin, tempsmax, temps
|
|
||||||
USE elph2, ONLY : transp_temp
|
|
||||||
!
|
|
||||||
IMPLICIT NONE
|
|
||||||
!
|
|
||||||
INTEGER :: itemp
|
|
||||||
!! Counter on temperature
|
|
||||||
INTEGER :: ierr
|
|
||||||
!! Error status
|
|
||||||
!
|
|
||||||
CALL start_clock('epw_setup')
|
|
||||||
!
|
|
||||||
ALLOCATE(transp_temp(nstemp), STAT = ierr)
|
|
||||||
IF (ierr /= 0) CALL errore('epw_setup_restart', 'Error allocating transp_temp', 1)
|
|
||||||
!
|
|
||||||
transp_temp(:) = zero
|
|
||||||
! In case of scattering calculation
|
|
||||||
IF (scattering) THEN
|
|
||||||
IF (MAXVAL(temps(:)) > zero) THEN
|
|
||||||
transp_temp(:) = temps(:)
|
|
||||||
ELSE
|
|
||||||
IF (nstemp == 1) THEN
|
|
||||||
transp_temp(1) = tempsmin
|
|
||||||
ELSE
|
|
||||||
DO itemp = 1, nstemp
|
|
||||||
transp_temp(itemp) = tempsmin + DBLE(itemp - 1) * (tempsmax - tempsmin) / DBLE(nstemp - 1)
|
|
||||||
ENDDO
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
!
|
|
||||||
! We have to bcast here because before it has not been allocated
|
|
||||||
CALL mp_bcast(transp_temp, ionode_id, world_comm)
|
|
||||||
!
|
|
||||||
CALL stop_clock('epw_setup')
|
|
||||||
!
|
|
||||||
RETURN
|
|
||||||
!-----------------------------------------------------------------------
|
|
||||||
END SUBROUTINE epw_setup_restart
|
|
||||||
!-----------------------------------------------------------------------
|
|
||||||
|
|
|
@ -212,8 +212,8 @@
|
||||||
!! Switch for symmetry operations
|
!! Switch for symmetry operations
|
||||||
INTEGER :: nwanxx = 200
|
INTEGER :: nwanxx = 200
|
||||||
!! parameter used in writing prefix.win file.
|
!! parameter used in writing prefix.win file.
|
||||||
INTEGER :: ntempxx = 25
|
INTEGER :: ntempxx = 50
|
||||||
!! Maximum number of wannier functions
|
!! Maximum number of temperatures
|
||||||
INTEGER :: etf_mem
|
INTEGER :: etf_mem
|
||||||
!! If 0, all in memory. If 1, less is stored in memory (read files).
|
!! If 0, all in memory. If 1, less is stored in memory (read files).
|
||||||
INTEGER :: scr_typ
|
INTEGER :: scr_typ
|
||||||
|
@ -222,6 +222,14 @@
|
||||||
!! band index for which the cumulant calculation is done
|
!! band index for which the cumulant calculation is done
|
||||||
INTEGER :: mob_maxiter
|
INTEGER :: mob_maxiter
|
||||||
!! Maximum number of iteration for the IBTE
|
!! Maximum number of iteration for the IBTE
|
||||||
|
INTEGER :: nstemp
|
||||||
|
!! nr. of temperature points for temperature dependent caclulations
|
||||||
|
REAL(KIND = DP) :: tempsmin
|
||||||
|
!! min. temperature in Eliashberg equations - deprecated as an input parameter
|
||||||
|
REAL(KIND = DP) :: tempsmax
|
||||||
|
!! max. temperature - deprecated as an input parameter
|
||||||
|
REAL(KIND = DP) :: temps(50)
|
||||||
|
!! input temperature array (units of Kelvin)
|
||||||
!
|
!
|
||||||
! Superconductivity
|
! Superconductivity
|
||||||
INTEGER :: nswfc
|
INTEGER :: nswfc
|
||||||
|
@ -230,8 +238,6 @@
|
||||||
!! nr. of grid points between (wsfc,wscut)
|
!! nr. of grid points between (wsfc,wscut)
|
||||||
INTEGER :: nswi
|
INTEGER :: nswi
|
||||||
!! nr. of grid points for Eliashberg equations of imaginary axis
|
!! nr. of grid points for Eliashberg equations of imaginary axis
|
||||||
INTEGER :: nstemp
|
|
||||||
!! nr. of temperature points for Eliashberg equations
|
|
||||||
INTEGER :: nsiter
|
INTEGER :: nsiter
|
||||||
!! nr. of iterations for self-consistency
|
!! nr. of iterations for self-consistency
|
||||||
INTEGER :: broyden_ndim
|
INTEGER :: broyden_ndim
|
||||||
|
@ -245,8 +251,6 @@
|
||||||
!! smearing width for Fermi surface average in e-ph coupling after wann interp
|
!! smearing width for Fermi surface average in e-ph coupling after wann interp
|
||||||
REAL(KIND = DP) :: fsthick
|
REAL(KIND = DP) :: fsthick
|
||||||
!! thickness of the Fermi shell for averaging the e-ph matrix element
|
!! thickness of the Fermi shell for averaging the e-ph matrix element
|
||||||
REAL(KIND = DP) :: eptemp
|
|
||||||
! temperature for the electronic Fermi occupations in the e-p calculation
|
|
||||||
REAL(KIND = DP) :: wmin
|
REAL(KIND = DP) :: wmin
|
||||||
!! min frequency for frequency scan in \delta( e_k - e_k+q - w ) when strict sel. rule is applied
|
!! min frequency for frequency scan in \delta( e_k - e_k+q - w ) when strict sel. rule is applied
|
||||||
REAL(KIND = DP) :: wmax
|
REAL(KIND = DP) :: wmax
|
||||||
|
@ -295,10 +299,6 @@
|
||||||
!! power used to define a non-uniform grid between wsfc and wscut
|
!! power used to define a non-uniform grid between wsfc and wscut
|
||||||
REAL(KIND = DP) :: wscut
|
REAL(KIND = DP) :: wscut
|
||||||
!! upper limit cutoff frequency in Eliashberg equations (at least 5 times wsphmax)
|
!! upper limit cutoff frequency in Eliashberg equations (at least 5 times wsphmax)
|
||||||
REAL(KIND = DP) :: tempsmin
|
|
||||||
!! min. temperature in Eliashberg equations
|
|
||||||
REAL(KIND = DP) :: tempsmax
|
|
||||||
!! max. temperature
|
|
||||||
REAL(KIND = DP) :: broyden_beta
|
REAL(KIND = DP) :: broyden_beta
|
||||||
!! mixing factor for broyden mixing
|
!! mixing factor for broyden mixing
|
||||||
REAL(KIND = DP) :: conv_thr_raxis
|
REAL(KIND = DP) :: conv_thr_raxis
|
||||||
|
@ -318,8 +318,6 @@
|
||||||
!! min frequency in electron spectral function due to e-p interaction
|
!! min frequency in electron spectral function due to e-p interaction
|
||||||
REAL(KIND = DP) :: wmax_specfun
|
REAL(KIND = DP) :: wmax_specfun
|
||||||
!! max frequency in electron spectral function due to e-p `interaction
|
!! max frequency in electron spectral function due to e-p `interaction
|
||||||
REAL(KIND = DP) :: temps(50)
|
|
||||||
!! temperature entering in the Eliashberg equtions (units of Kelvin)
|
|
||||||
!
|
!
|
||||||
! Conductivity
|
! Conductivity
|
||||||
REAL(KIND = DP) :: scissor
|
REAL(KIND = DP) :: scissor
|
||||||
|
|
|
@ -29,14 +29,14 @@
|
||||||
USE io_global, ONLY : stdout
|
USE io_global, ONLY : stdout
|
||||||
USE io_var, ONLY : iuindabs
|
USE io_var, ONLY : iuindabs
|
||||||
USE modes, ONLY : nmodes
|
USE modes, ONLY : nmodes
|
||||||
USE epwcom, ONLY : fsthick, eptemp, degaussw, &
|
USE epwcom, ONLY : nstemp, fsthick, degaussw, &
|
||||||
eps_acustic, efermi_read, fermi_energy,&
|
eps_acustic, efermi_read, fermi_energy,&
|
||||||
vme, omegamin, omegamax, omegastep
|
vme, omegamin, omegamax, omegastep
|
||||||
USE elph2, ONLY : etf, ibndmin, nkf, epf17, wkf, nqtotf, wf, wqf, &
|
USE elph2, ONLY : etf, ibndmin, nkf, epf17, wkf, nqtotf, wf, wqf, &
|
||||||
sigmar_all, efnew, &
|
sigmar_all, efnew, gtemp, &
|
||||||
dmef, omegap, epsilon2_abs, epsilon2_abs_lorenz, vmef, &
|
dmef, omegap, epsilon2_abs, epsilon2_abs_lorenz, vmef, &
|
||||||
nbndfst, nktotf
|
nbndfst, nktotf
|
||||||
USE constants_epw, ONLY : ryd2mev, one, ryd2ev, two, zero, pi, ci, eps6, czero
|
USE constants_epw, ONLY : kelvin2eV, ryd2mev, one, ryd2ev, two, zero, pi, ci, eps6, czero
|
||||||
USE mp, ONLY : mp_barrier, mp_sum
|
USE mp, ONLY : mp_barrier, mp_sum
|
||||||
USE mp_global, ONLY : inter_pool_comm
|
USE mp_global, ONLY : inter_pool_comm
|
||||||
USE cell_base, ONLY : omega
|
USE cell_base, ONLY : omega
|
||||||
|
@ -47,12 +47,14 @@
|
||||||
!! Q-point index
|
!! Q-point index
|
||||||
!
|
!
|
||||||
! Local variables
|
! Local variables
|
||||||
CHARACTER(LEN = 256) :: nameF = 'epsilon2_indabs.dat'
|
CHARACTER(LEN = 256) :: nameF
|
||||||
!! Name of the file
|
!! Name of the file
|
||||||
CHARACTER(LEN = 10) :: c
|
CHARACTER(LEN = 10) :: c
|
||||||
!! Number of eta values, in string format
|
!! Number of eta values, in string format
|
||||||
CHARACTER(LEN = 256) :: format_string
|
CHARACTER(LEN = 256) :: format_string
|
||||||
!! Format string
|
!! Format string
|
||||||
|
CHARACTER(LEN = 20) :: tp
|
||||||
|
!! Temperature, in string format
|
||||||
! Local variables
|
! Local variables
|
||||||
INTEGER :: ik
|
INTEGER :: ik
|
||||||
!! Counter on the k-point index
|
!! Counter on the k-point index
|
||||||
|
@ -78,6 +80,8 @@
|
||||||
!! Polarization direction
|
!! Polarization direction
|
||||||
INTEGER :: m
|
INTEGER :: m
|
||||||
!! Counter on denominator imaginary broadening values
|
!! Counter on denominator imaginary broadening values
|
||||||
|
INTEGER :: itemp
|
||||||
|
!! Counter on temperatures
|
||||||
INTEGER :: ierr
|
INTEGER :: ierr
|
||||||
!! Error status
|
!! Error status
|
||||||
INTEGER, PARAMETER :: neta = 9
|
INTEGER, PARAMETER :: neta = 9
|
||||||
|
@ -128,7 +132,6 @@
|
||||||
!
|
!
|
||||||
! SP: Define the inverse so that we can efficiently multiply instead of dividing
|
! SP: Define the inverse so that we can efficiently multiply instead of dividing
|
||||||
!
|
!
|
||||||
inv_eptemp0 = 1.0 / eptemp
|
|
||||||
inv_degaussw = 1.0 / degaussw
|
inv_degaussw = 1.0 / degaussw
|
||||||
!
|
!
|
||||||
nomega = INT((omegamax - omegamin) / omegastep) + 1
|
nomega = INT((omegamax - omegamin) / omegastep) + 1
|
||||||
|
@ -145,16 +148,19 @@
|
||||||
WRITE(stdout, '(5x,a/)') REPEAT('=',67)
|
WRITE(stdout, '(5x,a/)') REPEAT('=',67)
|
||||||
!
|
!
|
||||||
IF (fsthick < 1.d3) WRITE(stdout, '(/5x,a,f10.6,a)' ) 'Fermi Surface thickness = ', fsthick * ryd2ev, ' eV'
|
IF (fsthick < 1.d3) WRITE(stdout, '(/5x,a,f10.6,a)' ) 'Fermi Surface thickness = ', fsthick * ryd2ev, ' eV'
|
||||||
WRITE(stdout, '(/5x,a,f10.6,a)' ) 'Temperature T = ', eptemp * ryd2ev, ' eV'
|
WRITE(stdout, '(/5x,a)') 'The following temperatures are calculated:'
|
||||||
|
DO itemp = 1, nstemp
|
||||||
|
WRITE(stdout, '(/5x,a,f10.6,a)' ) 'Temperature T = ', gtemp(itemp) * ryd2ev, ' eV'
|
||||||
|
ENDDO
|
||||||
!
|
!
|
||||||
!IF (.NOT. ALLOCATED (omegap) ) ALLOCATE(omegap(nomega))
|
!IF (.NOT. ALLOCATED (omegap) ) ALLOCATE(omegap(nomega))
|
||||||
!IF (.NOT. ALLOCATED (epsilon2_abs) ) ALLOCATE(epsilon2_abs(3, nomega, neta))
|
!IF (.NOT. ALLOCATED (epsilon2_abs) ) ALLOCATE(epsilon2_abs(3, nomega, neta))
|
||||||
!IF (.NOT. ALLOCATED (epsilon2_abs_lorenz) ) ALLOCATE(epsilon2_abs_lorenz(3, nomega, neta))
|
!IF (.NOT. ALLOCATED (epsilon2_abs_lorenz) ) ALLOCATE(epsilon2_abs_lorenz(3, nomega, neta))
|
||||||
ALLOCATE(omegap(nomega), STAT = ierr)
|
ALLOCATE(omegap(nomega), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('indabs', 'Error allocating omegap', 1)
|
IF (ierr /= 0) CALL errore('indabs', 'Error allocating omegap', 1)
|
||||||
ALLOCATE(epsilon2_abs(3, nomega, neta), STAT = ierr)
|
ALLOCATE(epsilon2_abs(3, nomega, neta, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('indabs', 'Error allocating epsilon2_abs', 1)
|
IF (ierr /= 0) CALL errore('indabs', 'Error allocating epsilon2_abs', 1)
|
||||||
ALLOCATE(epsilon2_abs_lorenz(3, nomega, neta), STAT = ierr)
|
ALLOCATE(epsilon2_abs_lorenz(3, nomega, neta, nstemp), STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('indabs', 'Error allocating epsilon2_abs_lorenz', 1)
|
IF (ierr /= 0) CALL errore('indabs', 'Error allocating epsilon2_abs_lorenz', 1)
|
||||||
!
|
!
|
||||||
epsilon2_abs = 0.d0
|
epsilon2_abs = 0.d0
|
||||||
|
@ -176,121 +182,126 @@
|
||||||
ef0 = efnew
|
ef0 = efnew
|
||||||
ENDIF
|
ENDIF
|
||||||
!
|
!
|
||||||
DO ik = 1, nkf
|
DO itemp = 1, nstemp
|
||||||
!
|
inv_eptemp0 = 1.0 / gtemp(itemp)
|
||||||
ikk = 2 * ik - 1
|
DO ik = 1, nkf
|
||||||
ikq = ikk + 1
|
|
||||||
!
|
|
||||||
DO imode = 1, nmodes
|
|
||||||
!
|
!
|
||||||
! the phonon frequency at this q and nu
|
ikk = 2 * ik - 1
|
||||||
wq(imode) = wf(imode, iq)
|
ikq = ikk + 1
|
||||||
!
|
!
|
||||||
epf(:, :, imode) = epf17(:, :, imode,ik)
|
DO imode = 1, nmodes
|
||||||
IF (wq(imode) > eps_acustic) THEN
|
!
|
||||||
nqv(imode) = wgauss(-wq(imode) / eptemp, -99)
|
! the phonon frequency at this q and nu
|
||||||
nqv(imode) = nqv(imode) / (one - two * nqv(imode))
|
wq(imode) = wf(imode, iq)
|
||||||
|
!
|
||||||
|
epf(:, :, imode) = epf17(:, :, imode,ik)
|
||||||
|
IF (wq(imode) > eps_acustic) THEN
|
||||||
|
nqv(imode) = wgauss(-wq(imode) / gtemp(itemp), -99)
|
||||||
|
nqv(imode) = nqv(imode) / (one - two * nqv(imode))
|
||||||
|
ENDIF
|
||||||
|
ENDDO
|
||||||
|
!
|
||||||
|
! RM - vme version should be checked
|
||||||
|
IF (vme) THEN
|
||||||
|
DO ibnd = 1, nbndfst
|
||||||
|
DO jbnd = 1, nbndfst
|
||||||
|
! vmef is in units of Ryd * bohr
|
||||||
|
vkk(:, ibnd, jbnd) = vmef(:, ibndmin - 1 + ibnd, ibndmin - 1 + jbnd, ikk)
|
||||||
|
vkq(:, ibnd, jbnd) = vmef(:, ibndmin - 1 + ibnd, ibndmin - 1 + jbnd, ikq)
|
||||||
|
ENDDO
|
||||||
|
ENDDO
|
||||||
|
ELSE
|
||||||
|
DO ibnd = 1, nbndfst
|
||||||
|
DO jbnd = 1, nbndfst
|
||||||
|
! Dme's already corrected for GW corrections in wan2bloch.f90
|
||||||
|
vkk(:, ibnd, jbnd) = 2.0 * dmef(:, ibndmin - 1 + ibnd, ibndmin - 1 + jbnd, ikk)
|
||||||
|
vkq(:, ibnd, jbnd) = 2.0 * dmef(:, ibndmin - 1 + ibnd, ibndmin - 1 + jbnd, ikq)
|
||||||
|
ENDDO
|
||||||
|
ENDDO
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDDO
|
|
||||||
!
|
|
||||||
! RM - vme version should be checked
|
|
||||||
IF (vme) THEN
|
|
||||||
DO ibnd = 1, nbndfst
|
|
||||||
DO jbnd = 1, nbndfst
|
|
||||||
! vmef is in units of Ryd * bohr
|
|
||||||
vkk(:, ibnd, jbnd) = vmef(:, ibndmin - 1 + ibnd, ibndmin - 1 + jbnd, ikk)
|
|
||||||
vkq(:, ibnd, jbnd) = vmef(:, ibndmin - 1 + ibnd, ibndmin - 1 + jbnd, ikq)
|
|
||||||
ENDDO
|
|
||||||
ENDDO
|
|
||||||
ELSE
|
|
||||||
DO ibnd = 1, nbndfst
|
|
||||||
DO jbnd = 1, nbndfst
|
|
||||||
! Dme's already corrected for GW corrections in wan2bloch.f90
|
|
||||||
vkk(:, ibnd, jbnd) = 2.0 * dmef(:, ibndmin - 1 + ibnd, ibndmin - 1 + jbnd, ikk)
|
|
||||||
vkq(:, ibnd, jbnd) = 2.0 * dmef(:, ibndmin - 1 + ibnd, ibndmin - 1 + jbnd, ikq)
|
|
||||||
ENDDO
|
|
||||||
ENDDO
|
|
||||||
ENDIF
|
|
||||||
!
|
|
||||||
DO ibnd = 1, nbndfst
|
|
||||||
! the energy of the electron at k (relative to Ef)
|
|
||||||
ekk = etf(ibndmin - 1 + ibnd, ikk) - ef0
|
|
||||||
!
|
!
|
||||||
IF (ABS(ekk) < fsthick) THEN
|
DO ibnd = 1, nbndfst
|
||||||
|
! the energy of the electron at k (relative to Ef)
|
||||||
|
ekk = etf(ibndmin - 1 + ibnd, ikk) - ef0
|
||||||
!
|
!
|
||||||
wgkk = wgauss(-ekk * inv_eptemp0, -99)
|
IF (ABS(ekk) < fsthick) THEN
|
||||||
!
|
|
||||||
DO jbnd = 1, nbndfst
|
|
||||||
!
|
!
|
||||||
! The fermi occupation for k+q
|
wgkk = wgauss(-ekk * inv_eptemp0, -99)
|
||||||
ekq = etf(ibndmin - 1 + jbnd, ikq) - ef0
|
|
||||||
!
|
!
|
||||||
IF (ABS(ekq) < fsthick .AND. ekq < ekk + wq(nmodes) + omegamax + 6.0 * degaussw) THEN
|
DO jbnd = 1, nbndfst
|
||||||
!
|
!
|
||||||
wgkq = wgauss(-ekq * inv_eptemp0, -99)
|
! The fermi occupation for k+q
|
||||||
|
ekq = etf(ibndmin - 1 + jbnd, ikq) - ef0
|
||||||
!
|
!
|
||||||
IF (ekq - ekk - wq(nmodes) - omegamax > 6.0 * degaussw) CYCLE
|
IF (ABS(ekq) < fsthick .AND. ekq < ekk + wq(nmodes) + omegamax + 6.0 * degaussw) THEN
|
||||||
IF (ekq - ekk + wq(nmodes) - omegamin < - 6.0 * degaussw) CYCLE
|
|
||||||
!
|
|
||||||
DO imode = 1, nmodes
|
|
||||||
!
|
!
|
||||||
IF (wq(imode) > eps_acustic) THEN
|
wgkq = wgauss(-ekq * inv_eptemp0, -99)
|
||||||
|
!
|
||||||
|
IF (ekq - ekk - wq(nmodes) - omegamax > 6.0 * degaussw) CYCLE
|
||||||
|
IF (ekq - ekk + wq(nmodes) - omegamin < - 6.0 * degaussw) CYCLE
|
||||||
|
!
|
||||||
|
DO imode = 1, nmodes
|
||||||
!
|
!
|
||||||
DO m = 1, neta
|
IF (wq(imode) > eps_acustic) THEN
|
||||||
s1a = czero
|
|
||||||
s1e = czero
|
|
||||||
s2a = czero
|
|
||||||
s2e = czero
|
|
||||||
!
|
!
|
||||||
DO mbnd = 1, nbndfst
|
DO m = 1, neta
|
||||||
|
s1a = czero
|
||||||
|
s1e = czero
|
||||||
|
s2a = czero
|
||||||
|
s2e = czero
|
||||||
!
|
!
|
||||||
! The energy of the electron at k (relative to Ef)
|
DO mbnd = 1, nbndfst
|
||||||
ekmk = etf(ibndmin - 1 + mbnd, ikk) - ef0
|
!
|
||||||
! The energy of the electron at k+q (relative to Ef)
|
! The energy of the electron at k (relative to Ef)
|
||||||
ekmq = etf(ibndmin - 1 + mbnd, ikq) - ef0
|
ekmk = etf(ibndmin - 1 + mbnd, ikk) - ef0
|
||||||
|
! The energy of the electron at k+q (relative to Ef)
|
||||||
|
ekmq = etf(ibndmin - 1 + mbnd, ikq) - ef0
|
||||||
|
!
|
||||||
|
s1a(:) = s1a(:) + epf(mbnd, jbnd,imode) * vkk(:, ibnd, mbnd) / &
|
||||||
|
(ekmk - ekq + wq(imode) + ci * eta(m))
|
||||||
|
s1e(:) = s1e(:) + epf(mbnd, jbnd,imode) * vkk(:, ibnd, mbnd) / &
|
||||||
|
(ekmk - ekq - wq(imode) + ci * eta(m))
|
||||||
|
s2a(:) = s2a(:) + epf(ibnd, mbnd,imode) * vkq(:, mbnd, jbnd) / &
|
||||||
|
(ekmq - ekk - wq(imode)+ ci * eta(m))
|
||||||
|
s2e(:) = s2e(:) + epf(ibnd, mbnd,imode) * vkq(:, mbnd, jbnd) / &
|
||||||
|
(ekmq - ekk + wq(imode)+ ci * eta(m))
|
||||||
|
ENDDO
|
||||||
!
|
!
|
||||||
s1a(:) = s1a(:) + epf(mbnd, jbnd,imode) * vkk(:, ibnd, mbnd) / &
|
pfac = nqv(imode) * wgkk * (one - wgkq) - (nqv(imode) + one) * (one - wgkk) * wgkq
|
||||||
(ekmk - ekq + wq(imode) + ci * eta(m))
|
pface = (nqv(imode) + one) * wgkk * (one - wgkq) - nqv(imode) * (one - wgkk) * wgkq
|
||||||
s1e(:) = s1e(:) + epf(mbnd, jbnd,imode) * vkk(:, ibnd, mbnd) / &
|
|
||||||
(ekmk - ekq - wq(imode) + ci * eta(m))
|
|
||||||
s2a(:) = s2a(:) + epf(ibnd, mbnd,imode) * vkq(:, mbnd, jbnd) / &
|
|
||||||
(ekmq - ekk - wq(imode)+ ci * eta(m))
|
|
||||||
s2e(:) = s2e(:) + epf(ibnd, mbnd,imode) * vkq(:, mbnd, jbnd) / &
|
|
||||||
(ekmq - ekk + wq(imode)+ ci * eta(m))
|
|
||||||
ENDDO
|
|
||||||
!
|
|
||||||
pfac = nqv(imode) * wgkk * (one - wgkq) - (nqv(imode) + one) * (one - wgkk) * wgkq
|
|
||||||
pface = (nqv(imode) + one) * wgkk * (one - wgkq) - nqv(imode) * (one - wgkk) * wgkq
|
|
||||||
!
|
|
||||||
DO iw = 1, nomega
|
|
||||||
!
|
!
|
||||||
IF (ABS(ekq - ekk - wq(imode) - omegap(iw)) > 6.0 * degaussw .AND. &
|
DO iw = 1, nomega
|
||||||
ABS(ekq - ekk + wq(imode) - omegap(iw)) > 6.0 * degaussw) CYCLE
|
!
|
||||||
!
|
IF (ABS(ekq - ekk - wq(imode) - omegap(iw)) > 6.0 * degaussw .AND. &
|
||||||
weighte = w0gauss((ekq - ekk - omegap(iw) + wq(imode)) / degaussw, 0) / degaussw
|
ABS(ekq - ekk + wq(imode) - omegap(iw)) > 6.0 * degaussw) CYCLE
|
||||||
weighta = w0gauss((ekq - ekk - omegap(iw) - wq(imode)) / degaussw, 0) / degaussw
|
!
|
||||||
!
|
weighte = w0gauss((ekq - ekk - omegap(iw) + wq(imode)) / degaussw, 0) / degaussw
|
||||||
DO ipol = 1, 3
|
weighta = w0gauss((ekq - ekk - omegap(iw) - wq(imode)) / degaussw, 0) / degaussw
|
||||||
epsilon2_abs(ipol, iw, m) = epsilon2_abs(ipol, iw, m) + (wkf(ikk) / 2.0) * wqf(iq) * &
|
!
|
||||||
cfac / omegap(iw)**2 * pfac * weighta * ABS(s1a(ipol) + s2a(ipol))**2 / (2 * wq(imode) * omega)
|
DO ipol = 1, 3
|
||||||
epsilon2_abs(ipol, iw, m) = epsilon2_abs(ipol, iw, m) + (wkf(ikk) / 2.0) * wqf(iq) * &
|
epsilon2_abs(ipol, iw, m, itemp) = epsilon2_abs(ipol, iw, m, itemp) + (wkf(ikk) / 2.0) * wqf(iq) * &
|
||||||
cfac / omegap(iw)**2 * pface * weighte * ABS(s1e(ipol) + s2e(ipol))**2 / (2 * wq(imode) * omega)
|
cfac / omegap(iw)**2 * pfac * weighta * ABS(s1a(ipol) + s2a(ipol))**2 / (2 * wq(imode) * omega)
|
||||||
epsilon2_abs_lorenz(ipol, iw, m) = epsilon2_abs_lorenz(ipol, iw, m) + (wkf(ikk) / 2.0) * wqf(iq) * &
|
epsilon2_abs(ipol, iw, m, itemp) = epsilon2_abs(ipol, iw, m, itemp) + (wkf(ikk) / 2.0) * wqf(iq) * &
|
||||||
cfac / omegap(iw)**2 * pfac * ABS(s1a(ipol) + s2a(ipol))**2 / (2 * wq(imode) * omega) * &
|
cfac / omegap(iw)**2 * pface * weighte * ABS(s1e(ipol) + s2e(ipol))**2 / (2 * wq(imode) * omega)
|
||||||
(degaussw / (degaussw**2 + (ekq - ekk - omegap(iw) - wq(imode))**2)) / pi
|
epsilon2_abs_lorenz(ipol, iw, m, itemp) = epsilon2_abs_lorenz(ipol, iw, m, itemp) + &
|
||||||
epsilon2_abs_lorenz(ipol, iw, m) = epsilon2_abs_lorenz(ipol, iw, m) + (wkf(ikk) / 2.0) * wqf(iq) * &
|
(wkf(ikk) / 2.0) * wqf(iq) * &
|
||||||
cfac / omegap(iw)**2 * pface * ABS(s1e(ipol) + s2e(ipol))**2 / (2 * wq(imode) * omega) * &
|
cfac / omegap(iw)**2 * pfac * ABS(s1a(ipol) + s2a(ipol))**2 / (2 * wq(imode) * omega) * &
|
||||||
(degaussw / (degaussw**2 + (ekq - ekk - omegap(iw) + wq(imode))**2 )) / pi
|
(degaussw / (degaussw**2 + (ekq - ekk - omegap(iw) - wq(imode))**2)) / pi
|
||||||
ENDDO ! ipol
|
epsilon2_abs_lorenz(ipol, iw, m, itemp) = epsilon2_abs_lorenz(ipol, iw, m, itemp) + &
|
||||||
ENDDO ! iw
|
(wkf(ikk) / 2.0) * wqf(iq) * &
|
||||||
ENDDO ! neta
|
cfac / omegap(iw)**2 * pface * ABS(s1e(ipol) + s2e(ipol))**2 / (2 * wq(imode) * omega) * &
|
||||||
ENDIF ! if wq > acoustic
|
(degaussw / (degaussw**2 + (ekq - ekk - omegap(iw) + wq(imode))**2 )) / pi
|
||||||
ENDDO ! imode
|
ENDDO ! ipol
|
||||||
ENDIF ! endif ekq in fsthick
|
ENDDO ! iw
|
||||||
ENDDO ! jbnd
|
ENDDO ! neta
|
||||||
ENDIF ! endif ekk in fsthick
|
ENDIF ! if wq > acoustic
|
||||||
ENDDO ! ibnd
|
ENDDO ! imode
|
||||||
ENDDO ! ik
|
ENDIF ! endif ekq in fsthick
|
||||||
|
ENDDO ! jbnd
|
||||||
|
ENDIF ! endif ekk in fsthick
|
||||||
|
ENDDO ! ibnd
|
||||||
|
ENDDO ! ik
|
||||||
|
ENDDO ! itemp
|
||||||
!
|
!
|
||||||
! The k points are distributed among pools: here we collect them
|
! The k points are distributed among pools: here we collect them
|
||||||
!
|
!
|
||||||
|
@ -317,34 +328,39 @@
|
||||||
WRITE(stdout, '(5x,a,4f15.6)') 'Broadenings: ', eta(1:4)
|
WRITE(stdout, '(5x,a,4f15.6)') 'Broadenings: ', eta(1:4)
|
||||||
WRITE(stdout, '(5x,a,5f15.6)') ' ', eta(5:9)
|
WRITE(stdout, '(5x,a,5f15.6)') ' ', eta(5:9)
|
||||||
WRITE(stdout, '(5x,a)')
|
WRITE(stdout, '(5x,a)')
|
||||||
WRITE(stdout, '(5x,a)') 'For the first Broadening we have:'
|
WRITE(stdout, '(5x,a)') 'For the first Broadening and Temperature we have:'
|
||||||
! For test-farm checking purposes, only show m=1
|
! For test-farm checking purposes, only show m=1
|
||||||
WRITE(stdout, '(5x,a)') 'Photon energy (eV), Imaginary dielectric function along x,y,z'
|
WRITE(stdout, '(5x,a)') 'Photon energy (eV), Imaginary dielectric function along x,y,z'
|
||||||
DO iw = 1, nomega
|
DO iw = 1, nomega
|
||||||
WRITE(stdout, '(5x,f15.6,3E22.14)') omegap(iw) * ryd2ev, (epsilon2_abs(ipol, iw, 1), ipol = 1, 3)
|
WRITE(stdout, '(5x,f15.6,3E22.14)') omegap(iw) * ryd2ev, (epsilon2_abs(ipol, iw, 1, 1), ipol = 1, 3)
|
||||||
ENDDO
|
ENDDO
|
||||||
WRITE(stdout, '(5x,a)')
|
WRITE(stdout, '(5x,a)')
|
||||||
WRITE(stdout, '(5x,a)') 'Values with other broadening are reported in the files epsilon2_indabs.dat'
|
WRITE(stdout, '(5x,a)') 'Values with other broadenings for temperature X are reported in the files epsilon2_indabs_X.dat'
|
||||||
WRITE(stdout, '(5x,a)')
|
WRITE(stdout, '(5x,a)')
|
||||||
!
|
!
|
||||||
! Output to file
|
! Output to file
|
||||||
WRITE(c,"(i0)") neta + 1
|
DO itemp = 1,nstemp
|
||||||
format_string = "("//TRIM(c) // "E22.14)"
|
WRITE(c,"(i0)") neta + 1
|
||||||
OPEN(UNIT = iuindabs, FILE = nameF)
|
WRITE(tp,"(f8.1)") gtemp(itemp) * ryd2ev / kelvin2eV
|
||||||
WRITE(iuindabs, '(a)') '# Phonon-assisted absorption versus energy'
|
format_string = "("//TRIM(c) // "E22.14)"
|
||||||
WRITE(iuindabs, '(a)') '# Photon energy (eV), Directionally-averaged imaginary dielectric function along x,y,z'
|
nameF = 'epsilon2_indabs_' // trim(adjustl(tp)) // 'K.dat'
|
||||||
DO iw = 1, nomega
|
OPEN(UNIT = iuindabs, FILE = nameF)
|
||||||
WRITE(iuindabs, format_string) omegap(iw) * ryd2ev, (SUM(epsilon2_abs(:, iw, m)) / 3.0d0, m = 1, neta)
|
WRITE(iuindabs, '(a)') '# Phonon-assisted absorption versus energy'
|
||||||
|
WRITE(iuindabs, '(a)') '# Photon energy (eV), Directionally-averaged imaginary dielectric function along x,y,z'
|
||||||
|
DO iw = 1, nomega
|
||||||
|
WRITE(iuindabs, format_string) omegap(iw) * ryd2ev, (SUM(epsilon2_abs(:, iw, m, itemp)) / 3.0d0, m = 1, neta)
|
||||||
|
ENDDO
|
||||||
|
CLOSE(iuindabs)
|
||||||
|
!
|
||||||
|
nameF = 'epsilon2_indabs_lorenz' // trim(adjustl(tp)) // 'K.dat'
|
||||||
|
OPEN(UNIT = iuindabs, FILE = nameF)
|
||||||
|
WRITE(iuindabs, '(a)') '# Phonon-assisted absorption versus energy'
|
||||||
|
WRITE(iuindabs, '(a)') '# Photon energy (eV), Directionally-averaged imaginary dielectric function along x,y,z'
|
||||||
|
DO iw = 1, nomega
|
||||||
|
WRITE(iuindabs, format_string) omegap(iw) * ryd2ev, (SUM(epsilon2_abs_lorenz(:, iw, m, itemp)) / 3.0d0, m = 1, neta)
|
||||||
|
ENDDO
|
||||||
|
CLOSE(iuindabs)
|
||||||
ENDDO
|
ENDDO
|
||||||
CLOSE(iuindabs)
|
|
||||||
!
|
|
||||||
OPEN(UNIT = iuindabs, FILE = 'epsilon2_indabs_lorenz.dat')
|
|
||||||
WRITE(iuindabs, '(a)') '# Phonon-assisted absorption versus energy'
|
|
||||||
WRITE(iuindabs, '(a)') '# Photon energy (eV), Directionally-averaged imaginary dielectric function along x,y,z'
|
|
||||||
DO iw = 1, nomega
|
|
||||||
WRITE(iuindabs, format_string) omegap(iw) * ryd2ev, (SUM(epsilon2_abs_lorenz(:, iw, m)) / 3.0d0, m = 1, neta)
|
|
||||||
ENDDO
|
|
||||||
CLOSE(iuindabs)
|
|
||||||
ENDIF
|
ENDIF
|
||||||
!
|
!
|
||||||
!-----------------------------------------------------------------------
|
!-----------------------------------------------------------------------
|
||||||
|
|
|
@ -32,7 +32,8 @@
|
||||||
USE io_files, ONLY : prefix
|
USE io_files, ONLY : prefix
|
||||||
USE control_flags, ONLY : iverbosity
|
USE control_flags, ONLY : iverbosity
|
||||||
USE epwcom, ONLY : nstemp, fsthick
|
USE epwcom, ONLY : nstemp, fsthick
|
||||||
USE eliashbergcom, ONLY : nsiw, estemp, gap0, gap, agap, wsi, nznormi, znormi, deltai, &
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsiw, gap0, gap, agap, wsi, nznormi, znormi, deltai, &
|
||||||
aznormi, naznormi, adeltai, adeltaip, nkfs, nbndfs, ef0, ekfs, &
|
aznormi, naznormi, adeltai, adeltaip, nkfs, nbndfs, ef0, ekfs, &
|
||||||
dosef, wkfs, w0g
|
dosef, wkfs, w0g
|
||||||
USE constants_epw, ONLY : kelvin2eV, eps6, zero
|
USE constants_epw, ONLY : kelvin2eV, eps6, zero
|
||||||
|
@ -109,7 +110,7 @@
|
||||||
!
|
!
|
||||||
IF (mpime == ionode_id) THEN
|
IF (mpime == ionode_id) THEN
|
||||||
!
|
!
|
||||||
temp = estemp(itemp) / kelvin2eV
|
temp = gtemp(itemp) / kelvin2eV
|
||||||
! anisotropic case
|
! anisotropic case
|
||||||
IF (temp < 10.d0) THEN
|
IF (temp < 10.d0) THEN
|
||||||
WRITE(name1, 101) TRIM(prefix), '.imag_aniso_00', temp
|
WRITE(name1, 101) TRIM(prefix), '.imag_aniso_00', temp
|
||||||
|
@ -193,7 +194,8 @@
|
||||||
USE io_files, ONLY : prefix
|
USE io_files, ONLY : prefix
|
||||||
USE control_flags, ONLY : iverbosity
|
USE control_flags, ONLY : iverbosity
|
||||||
USE epwcom, ONLY : fsthick, laniso, liso
|
USE epwcom, ONLY : fsthick, laniso, liso
|
||||||
USE eliashbergcom, ONLY : nsiw, estemp, agap, wsi, &
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsiw, agap, wsi, &
|
||||||
naznormi, aznormi, adeltai, nznormi, znormi, &
|
naznormi, aznormi, adeltai, nznormi, znormi, &
|
||||||
deltai, nkfs, nbndfs, ef0, ekfs
|
deltai, nkfs, nbndfs, ef0, ekfs
|
||||||
USE constants_epw, ONLY : kelvin2eV
|
USE constants_epw, ONLY : kelvin2eV
|
||||||
|
@ -221,7 +223,7 @@
|
||||||
REAL(KIND = DP) :: temp
|
REAL(KIND = DP) :: temp
|
||||||
!! Temperature in K
|
!! Temperature in K
|
||||||
!
|
!
|
||||||
temp = estemp(itemp) / kelvin2eV
|
temp = gtemp(itemp) / kelvin2eV
|
||||||
!
|
!
|
||||||
cname = 'imag'
|
cname = 'imag'
|
||||||
!
|
!
|
||||||
|
@ -304,7 +306,8 @@
|
||||||
USE io_files, ONLY : prefix
|
USE io_files, ONLY : prefix
|
||||||
USE control_flags, ONLY : iverbosity
|
USE control_flags, ONLY : iverbosity
|
||||||
USE epwcom, ONLY : nqstep, fsthick, laniso, liso
|
USE epwcom, ONLY : nqstep, fsthick, laniso, liso
|
||||||
USE eliashbergcom, ONLY : nsw, estemp, ws, gap, agap, delta, znorm, adelta, aznorm, &
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsw, ws, gap, agap, delta, znorm, adelta, aznorm, &
|
||||||
nkfs, nbndfs, ef0, ekfs
|
nkfs, nbndfs, ef0, ekfs
|
||||||
USE constants_epw, ONLY : kelvin2eV
|
USE constants_epw, ONLY : kelvin2eV
|
||||||
!
|
!
|
||||||
|
@ -336,7 +339,7 @@
|
||||||
REAL(KIND = DP) :: var1, var2, var3, var4
|
REAL(KIND = DP) :: var1, var2, var3, var4
|
||||||
!! Temporary working variables
|
!! Temporary working variables
|
||||||
!
|
!
|
||||||
temp = estemp(itemp) / kelvin2eV
|
temp = gtemp(itemp) / kelvin2eV
|
||||||
!
|
!
|
||||||
IF (laniso) THEN
|
IF (laniso) THEN
|
||||||
IF (iverbosity == 2) THEN
|
IF (iverbosity == 2) THEN
|
||||||
|
@ -444,7 +447,8 @@
|
||||||
USE io_files, ONLY : prefix
|
USE io_files, ONLY : prefix
|
||||||
USE control_flags, ONLY : iverbosity
|
USE control_flags, ONLY : iverbosity
|
||||||
USE epwcom, ONLY : nqstep, fsthick, laniso, liso
|
USE epwcom, ONLY : nqstep, fsthick, laniso, liso
|
||||||
USE eliashbergcom, ONLY : nsw, estemp, ws, gap, agap, delta, znorm, adelta, aznorm, &
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsw, ws, gap, agap, delta, znorm, adelta, aznorm, &
|
||||||
nkfs, nbndfs, ef0, ekfs
|
nkfs, nbndfs, ef0, ekfs
|
||||||
USE constants_epw, ONLY : kelvin2eV
|
USE constants_epw, ONLY : kelvin2eV
|
||||||
!
|
!
|
||||||
|
@ -476,7 +480,7 @@
|
||||||
REAL(KIND = DP) :: var1, var2, var3, var4
|
REAL(KIND = DP) :: var1, var2, var3, var4
|
||||||
!! Temporary working variables
|
!! Temporary working variables
|
||||||
!
|
!
|
||||||
temp = estemp(itemp) / kelvin2eV
|
temp = gtemp(itemp) / kelvin2eV
|
||||||
!
|
!
|
||||||
IF (laniso) THEN
|
IF (laniso) THEN
|
||||||
IF (iverbosity == 2) THEN
|
IF (iverbosity == 2) THEN
|
||||||
|
@ -2142,7 +2146,8 @@
|
||||||
USE io_var, ONLY : iufilgap
|
USE io_var, ONLY : iufilgap
|
||||||
USE io_files, ONLY : prefix
|
USE io_files, ONLY : prefix
|
||||||
USE epwcom, ONLY : fsthick
|
USE epwcom, ONLY : fsthick
|
||||||
USE eliashbergcom, ONLY : estemp, agap, nkfs, nbndfs, ef0, ekfs, w0g
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : agap, nkfs, nbndfs, ef0, ekfs, w0g
|
||||||
USE constants_epw, ONLY : kelvin2eV, zero, eps5
|
USE constants_epw, ONLY : kelvin2eV, zero, eps5
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
@ -2182,7 +2187,7 @@
|
||||||
REAL(KIND = DP), EXTERNAL :: w0gauss
|
REAL(KIND = DP), EXTERNAL :: w0gauss
|
||||||
!! This function computes the derivative of the Fermi-Dirac function
|
!! This function computes the derivative of the Fermi-Dirac function
|
||||||
!! It is therefore an approximation for a delta function
|
!! It is therefore an approximation for a delta function
|
||||||
temp = estemp(itemp) / kelvin2eV
|
temp = gtemp(itemp) / kelvin2eV
|
||||||
!
|
!
|
||||||
delta_max = 1.1d0 * MAXVAL(agap(:,:,itemp))
|
delta_max = 1.1d0 * MAXVAL(agap(:,:,itemp))
|
||||||
nbin = NINT(delta_max / eps5) + 1
|
nbin = NINT(delta_max / eps5) + 1
|
||||||
|
@ -2241,7 +2246,8 @@
|
||||||
USE cell_base, ONLY : bg
|
USE cell_base, ONLY : bg
|
||||||
USE control_flags, ONLY : iverbosity
|
USE control_flags, ONLY : iverbosity
|
||||||
USE epwcom, ONLY : fsthick, nkf1, nkf2, nkf3
|
USE epwcom, ONLY : fsthick, nkf1, nkf2, nkf3
|
||||||
USE eliashbergcom, ONLY : estemp, agap, nkfs, nbndfs, ef0, ekfs, ixkff
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : agap, nkfs, nbndfs, ef0, ekfs, ixkff
|
||||||
USE constants_epw, ONLY : kelvin2eV, zero
|
USE constants_epw, ONLY : kelvin2eV, zero
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
@ -2273,7 +2279,7 @@
|
||||||
REAL(KIND = DP), ALLOCATABLE :: agap_tmp(:, :)
|
REAL(KIND = DP), ALLOCATABLE :: agap_tmp(:, :)
|
||||||
!! Temporary array for superconducting gap at ik, ibnd
|
!! Temporary array for superconducting gap at ik, ibnd
|
||||||
!
|
!
|
||||||
temp = estemp(itemp) / kelvin2eV
|
temp = gtemp(itemp) / kelvin2eV
|
||||||
!
|
!
|
||||||
cname = 'imag'
|
cname = 'imag'
|
||||||
!
|
!
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
USE mp, ONLY : mp_barrier
|
USE mp, ONLY : mp_barrier
|
||||||
USE mp_world, ONLY : mpime
|
USE mp_world, ONLY : mpime
|
||||||
USE io_global, ONLY : ionode_id
|
USE io_global, ONLY : ionode_id
|
||||||
|
USE epwcom, ONLY : nstemp
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
|
@ -40,11 +41,11 @@
|
||||||
!! Total number of q-points
|
!! Total number of q-points
|
||||||
INTEGER, INTENT(in) :: nktotf
|
INTEGER, INTENT(in) :: nktotf
|
||||||
!! Total number of k-points
|
!! Total number of k-points
|
||||||
REAL(KIND = DP), INTENT(inout) :: sigmar_all(nbndfst, nktotf)
|
REAL(KIND = DP), INTENT(inout) :: sigmar_all(nbndfst, nktotf, nstemp)
|
||||||
!! Real part of the electron-phonon self-energy accross all pools
|
!! Real part of the electron-phonon self-energy accross all pools
|
||||||
REAL(KIND = DP), INTENT(inout) :: sigmai_all(nbndfst, nktotf)
|
REAL(KIND = DP), INTENT(inout) :: sigmai_all(nbndfst, nktotf, nstemp)
|
||||||
!! Imaginary part of the electron-phonon self-energy accross all pools
|
!! Imaginary part of the electron-phonon self-energy accross all pools
|
||||||
REAL(KIND = DP), INTENT(inout) :: zi_all(nbndfst, nktotf)
|
REAL(KIND = DP), INTENT(inout) :: zi_all(nbndfst, nktotf, nstemp)
|
||||||
!! Z parameter of electron-phonon self-energy accross all pools
|
!! Z parameter of electron-phonon self-energy accross all pools
|
||||||
!
|
!
|
||||||
! Local variables
|
! Local variables
|
||||||
|
@ -58,34 +59,42 @@
|
||||||
!! Local band index
|
!! Local band index
|
||||||
INTEGER :: lsigma_all
|
INTEGER :: lsigma_all
|
||||||
!! Length of the vector
|
!! Length of the vector
|
||||||
REAL(KIND = DP) :: aux(3 * nbndfst * nktotf + 2)
|
INTEGER :: itemp
|
||||||
|
!! Counter on temperatures
|
||||||
|
REAL(KIND = DP) :: aux(3 * nbndfst * nktotf * nstemp + 2)
|
||||||
!! Vector to store the array
|
!! Vector to store the array
|
||||||
!
|
!
|
||||||
IF (mpime == ionode_id) THEN
|
IF (mpime == ionode_id) THEN
|
||||||
!
|
!
|
||||||
lsigma_all = 3 * nbndfst * nktotf + 2
|
lsigma_all = 3 * nbndfst * nktotf * nstemp + 2
|
||||||
! First element is the current q-point
|
! First element is the current q-point
|
||||||
aux(1) = REAL(iqq - 1, KIND = DP) ! we need to start at the next q
|
aux(1) = REAL(iqq - 1, KIND = DP) ! we need to start at the next q
|
||||||
! Second element is the total number of q-points
|
! Second element is the total number of q-points
|
||||||
aux(2) = REAL(totq, KIND = DP)
|
aux(2) = REAL(totq, KIND = DP)
|
||||||
!
|
!
|
||||||
i = 2
|
i = 2
|
||||||
DO ik = 1, nktotf
|
DO itemp = 1, nstemp
|
||||||
DO ibnd = 1, nbndfst
|
DO ik = 1, nktotf
|
||||||
i = i + 1
|
DO ibnd = 1, nbndfst
|
||||||
aux(i) = sigmar_all(ibnd, ik)
|
i = i + 1
|
||||||
|
aux(i) = sigmar_all(ibnd, ik, itemp)
|
||||||
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
DO ik = 1, nktotf
|
DO itemp = 1, nstemp
|
||||||
DO ibnd = 1, nbndfst
|
DO ik = 1, nktotf
|
||||||
i = i + 1
|
DO ibnd = 1, nbndfst
|
||||||
aux(i) = sigmai_all(ibnd, ik)
|
i = i + 1
|
||||||
|
aux(i) = sigmai_all(ibnd, ik, itemp)
|
||||||
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
DO ik = 1, nktotf
|
DO itemp = 1, nstemp
|
||||||
DO ibnd = 1, nbndfst
|
DO ik = 1, nktotf
|
||||||
i = i + 1
|
DO ibnd = 1, nbndfst
|
||||||
aux(i) = zi_all(ibnd, ik)
|
i = i + 1
|
||||||
|
aux(i) = zi_all(ibnd, ik, itemp)
|
||||||
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
CALL diropn(iufilsigma_all, 'sigma_restart', lsigma_all, exst)
|
CALL diropn(iufilsigma_all, 'sigma_restart', lsigma_all, exst)
|
||||||
|
@ -95,14 +104,14 @@
|
||||||
!
|
!
|
||||||
! Make everythin 0 except the range of k-points we are working on
|
! Make everythin 0 except the range of k-points we are working on
|
||||||
IF (lower_bnd > 1) THEN
|
IF (lower_bnd > 1) THEN
|
||||||
sigmar_all(:, 1:lower_bnd - 1) = zero
|
sigmar_all(:, 1:lower_bnd - 1, :) = zero
|
||||||
sigmai_all(:, 1:lower_bnd - 1) = zero
|
sigmai_all(:, 1:lower_bnd - 1, :) = zero
|
||||||
zi_all(:, 1:lower_bnd - 1) = zero
|
zi_all(:, 1:lower_bnd - 1, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (upper_bnd < nktotf) THEN
|
IF (upper_bnd < nktotf) THEN
|
||||||
sigmar_all(:, upper_bnd + 1:nktotf) = zero
|
sigmar_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||||
sigmai_all(:, upper_bnd + 1:nktotf) = zero
|
sigmai_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||||
zi_all(:, upper_bnd + 1:nktotf) = zero
|
zi_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
!
|
!
|
||||||
!----------------------------------------------------------------------------
|
!----------------------------------------------------------------------------
|
||||||
|
@ -124,6 +133,7 @@
|
||||||
USE mp, ONLY : mp_barrier, mp_bcast
|
USE mp, ONLY : mp_barrier, mp_bcast
|
||||||
USE mp_world, ONLY : mpime, world_comm
|
USE mp_world, ONLY : mpime, world_comm
|
||||||
USE io_global, ONLY : ionode_id
|
USE io_global, ONLY : ionode_id
|
||||||
|
USE epwcom, ONLY : nstemp
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
|
@ -133,11 +143,11 @@
|
||||||
!! Total number of q-points
|
!! Total number of q-points
|
||||||
INTEGER, INTENT(in) :: nktotf
|
INTEGER, INTENT(in) :: nktotf
|
||||||
!! Total number of k-points
|
!! Total number of k-points
|
||||||
REAL(KIND = DP), INTENT(out) :: sigmar_all(nbndfst, nktotf)
|
REAL(KIND = DP), INTENT(out) :: sigmar_all(nbndfst, nktotf, nstemp)
|
||||||
!! Real part of the electron-phonon self-energy accross all pools
|
!! Real part of the electron-phonon self-energy accross all pools
|
||||||
REAL(KIND = DP), INTENT(out) :: sigmai_all(nbndfst, nktotf)
|
REAL(KIND = DP), INTENT(out) :: sigmai_all(nbndfst, nktotf, nstemp)
|
||||||
!! Imaginary part of the electron-phonon self-energy accross all pools
|
!! Imaginary part of the electron-phonon self-energy accross all pools
|
||||||
REAL(KIND = DP), INTENT(out) :: zi_all(nbndfst, nktotf)
|
REAL(KIND = DP), INTENT(out) :: zi_all(nbndfst, nktotf, nstemp)
|
||||||
!! Z parameter of electron-phonon self-energy accross all pools
|
!! Z parameter of electron-phonon self-energy accross all pools
|
||||||
!
|
!
|
||||||
! Local variables
|
! Local variables
|
||||||
|
@ -153,7 +163,9 @@
|
||||||
!! Length of the vector
|
!! Length of the vector
|
||||||
INTEGER :: nqtotf_read
|
INTEGER :: nqtotf_read
|
||||||
!! Total number of q-point read
|
!! Total number of q-point read
|
||||||
REAL(KIND = DP) :: aux(3 * nbndfst * nktotf + 2)
|
INTEGER :: itemp
|
||||||
|
!! Counter on temperatures
|
||||||
|
REAL(KIND = DP) :: aux(3 * nbndfst * nktotf * nstemp + 2)
|
||||||
!! Vector to store the array
|
!! Vector to store the array
|
||||||
!
|
!
|
||||||
CHARACTER(LEN = 256) :: name1
|
CHARACTER(LEN = 256) :: name1
|
||||||
|
@ -170,7 +182,7 @@
|
||||||
!
|
!
|
||||||
IF (exst) THEN ! read the file
|
IF (exst) THEN ! read the file
|
||||||
!
|
!
|
||||||
lsigma_all = 3 * nbndfst * nktotf + 2
|
lsigma_all = 3 * nbndfst * nktotf * nstemp + 2
|
||||||
CALL diropn(iufilsigma_all, 'sigma_restart', lsigma_all, exst)
|
CALL diropn(iufilsigma_all, 'sigma_restart', lsigma_all, exst)
|
||||||
CALL davcio(aux, lsigma_all, iufilsigma_all, 1, -1)
|
CALL davcio(aux, lsigma_all, iufilsigma_all, 1, -1)
|
||||||
!
|
!
|
||||||
|
@ -182,22 +194,28 @@
|
||||||
&'Error: The current total number of q-point is not the same as the read one. ', 1)
|
&'Error: The current total number of q-point is not the same as the read one. ', 1)
|
||||||
!
|
!
|
||||||
i = 2
|
i = 2
|
||||||
DO ik = 1, nktotf
|
DO itemp = 1, nstemp
|
||||||
DO ibnd = 1, nbndfst
|
DO ik = 1, nktotf
|
||||||
i = i + 1
|
DO ibnd = 1, nbndfst
|
||||||
sigmar_all(ibnd, ik) = aux(i)
|
i = i + 1
|
||||||
|
sigmar_all(ibnd, ik, itemp) = aux(i)
|
||||||
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
DO ik = 1, nktotf
|
DO itemp = 1, nstemp
|
||||||
DO ibnd = 1, nbndfst
|
DO ik = 1, nktotf
|
||||||
i = i + 1
|
DO ibnd = 1, nbndfst
|
||||||
sigmai_all(ibnd, ik) = aux(i)
|
i = i + 1
|
||||||
|
sigmai_all(ibnd, ik, itemp) = aux(i)
|
||||||
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
DO ik = 1, nktotf
|
DO itemp = 1, nstemp
|
||||||
DO ibnd = 1, nbndfst
|
DO ik = 1, nktotf
|
||||||
i = i + 1
|
DO ibnd = 1, nbndfst
|
||||||
zi_all(ibnd, ik) = aux(i)
|
i = i + 1
|
||||||
|
zi_all(ibnd, ik, itemp) = aux(i)
|
||||||
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
CLOSE(iufilsigma_all)
|
CLOSE(iufilsigma_all)
|
||||||
|
@ -214,14 +232,14 @@
|
||||||
!
|
!
|
||||||
! Make everythin 0 except the range of k-points we are working on
|
! Make everythin 0 except the range of k-points we are working on
|
||||||
IF (lower_bnd > 1) THEN
|
IF (lower_bnd > 1) THEN
|
||||||
sigmar_all(:, 1:lower_bnd - 1) = zero
|
sigmar_all(:, 1:lower_bnd - 1, :) = zero
|
||||||
sigmai_all(:, 1:lower_bnd - 1) = zero
|
sigmai_all(:, 1:lower_bnd - 1, :) = zero
|
||||||
zi_all(:, 1:lower_bnd - 1) = zero
|
zi_all(:, 1:lower_bnd - 1, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (upper_bnd < nktotf) THEN
|
IF (upper_bnd < nktotf) THEN
|
||||||
sigmar_all(:, upper_bnd + 1:nktotf) = zero
|
sigmar_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||||
sigmai_all(:, upper_bnd + 1:nktotf) = zero
|
sigmai_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||||
zi_all(:, upper_bnd + 1:nktotf) = zero
|
zi_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
!
|
!
|
||||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from: ', iqq,'/', totq
|
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from: ', iqq,'/', totq
|
||||||
|
@ -239,7 +257,7 @@
|
||||||
!!
|
!!
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE elph2, ONLY : lower_bnd, upper_bnd, nbndfst
|
USE elph2, ONLY : lower_bnd, upper_bnd, nbndfst
|
||||||
USE epwcom, ONLY : wmin_specfun, wmax_specfun, nw_specfun
|
USE epwcom, ONLY : nstemp, wmin_specfun, wmax_specfun, nw_specfun
|
||||||
USE io_var, ONLY : iufilesigma_all
|
USE io_var, ONLY : iufilesigma_all
|
||||||
USE io_files, ONLY : diropn
|
USE io_files, ONLY : diropn
|
||||||
USE constants_epw, ONLY : zero
|
USE constants_epw, ONLY : zero
|
||||||
|
@ -255,9 +273,9 @@
|
||||||
!! Total number of q-points
|
!! Total number of q-points
|
||||||
INTEGER, INTENT(in) :: nktotf
|
INTEGER, INTENT(in) :: nktotf
|
||||||
!! Total number of k-points
|
!! Total number of k-points
|
||||||
REAL(KIND = DP), INTENT(inout) :: esigmar_all(nbndfst, nktotf, nw_specfun)
|
REAL(KIND = DP), INTENT(inout) :: esigmar_all(nbndfst, nktotf, nw_specfun, nstemp)
|
||||||
!! Real part of the electron-phonon self-energy accross all pools
|
!! Real part of the electron-phonon self-energy accross all pools
|
||||||
REAL(KIND = DP), INTENT(inout) :: esigmai_all(nbndfst, nktotf, nw_specfun)
|
REAL(KIND = DP), INTENT(inout) :: esigmai_all(nbndfst, nktotf, nw_specfun, nstemp)
|
||||||
!! Imaginary part of the electron-phonon self-energy accross all pools
|
!! Imaginary part of the electron-phonon self-energy accross all pools
|
||||||
!
|
!
|
||||||
! Local variables
|
! Local variables
|
||||||
|
@ -273,11 +291,13 @@
|
||||||
!! Counter on the frequency
|
!! Counter on the frequency
|
||||||
INTEGER :: lesigma_all
|
INTEGER :: lesigma_all
|
||||||
!! Length of the vector
|
!! Length of the vector
|
||||||
|
INTEGER :: itemp
|
||||||
|
!! Counter on temperature
|
||||||
REAL(KIND = DP) :: dw
|
REAL(KIND = DP) :: dw
|
||||||
!! Frequency intervals
|
!! Frequency intervals
|
||||||
REAL(KIND = DP) :: ww(nw_specfun)
|
REAL(KIND = DP) :: ww(nw_specfun)
|
||||||
!! Current frequency
|
!! Current frequency
|
||||||
REAL(KIND = DP) :: aux(2 * nbndfst * nktotf * nw_specfun + 2)
|
REAL(KIND = DP) :: aux(2 * nbndfst * nktotf * nw_specfun * nstemp + 2)
|
||||||
!! Vector to store the array
|
!! Vector to store the array
|
||||||
!
|
!
|
||||||
IF (mpime == ionode_id) THEN
|
IF (mpime == ionode_id) THEN
|
||||||
|
@ -289,26 +309,30 @@
|
||||||
ww(iw) = wmin_specfun + DBLE(iw - 1) * dw
|
ww(iw) = wmin_specfun + DBLE(iw - 1) * dw
|
||||||
ENDDO
|
ENDDO
|
||||||
!
|
!
|
||||||
lesigma_all = 2 * nbndfst * nktotf * nw_specfun + 2
|
lesigma_all = 2 * nbndfst * nktotf * nw_specfun * nstemp + 2
|
||||||
! First element is the current q-point
|
! First element is the current q-point
|
||||||
aux(1) = REAL(iqq - 1, KIND = DP) ! we need to start at the next q
|
aux(1) = REAL(iqq - 1, KIND = DP) ! we need to start at the next q
|
||||||
! Second element is the total number of q-points
|
! Second element is the total number of q-points
|
||||||
aux(2) = REAL(totq, KIND = DP)
|
aux(2) = REAL(totq, KIND = DP)
|
||||||
!
|
!
|
||||||
i = 2
|
i = 2
|
||||||
DO ik = 1, nktotf
|
DO itemp = 1, nstemp
|
||||||
DO ibnd = 1, nbndfst
|
DO ik = 1, nktotf
|
||||||
DO iw = 1, nw_specfun
|
DO ibnd = 1, nbndfst
|
||||||
i = i + 1
|
DO iw = 1, nw_specfun
|
||||||
aux(i) = esigmar_all(ibnd, ik, iw)
|
i = i + 1
|
||||||
|
aux(i) = esigmar_all(ibnd, ik, iw, itemp)
|
||||||
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
DO ik = 1, nktotf
|
DO itemp = 1, nstemp
|
||||||
DO ibnd = 1, nbndfst
|
DO ik = 1, nktotf
|
||||||
DO iw = 1, nw_specfun
|
DO ibnd = 1, nbndfst
|
||||||
i = i + 1
|
DO iw = 1, nw_specfun
|
||||||
aux(i) = esigmai_all(ibnd, ik, iw)
|
i = i + 1
|
||||||
|
aux(i) = esigmai_all(ibnd, ik, iw, itemp)
|
||||||
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
|
@ -319,12 +343,12 @@
|
||||||
!
|
!
|
||||||
! Make everythin 0 except the range of k-points we are working on
|
! Make everythin 0 except the range of k-points we are working on
|
||||||
IF (lower_bnd > 1) THEN
|
IF (lower_bnd > 1) THEN
|
||||||
esigmar_all(:, 1:lower_bnd - 1, :) = zero
|
esigmar_all(:, 1:lower_bnd - 1, :, :) = zero
|
||||||
esigmai_all(:, 1:lower_bnd - 1, :) = zero
|
esigmai_all(:, 1:lower_bnd - 1, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (upper_bnd < nktotf) THEN
|
IF (upper_bnd < nktotf) THEN
|
||||||
esigmar_all(:, upper_bnd + 1:nktotf, :) = zero
|
esigmar_all(:, upper_bnd + 1:nktotf, :, :) = zero
|
||||||
esigmai_all(:, upper_bnd + 1:nktotf, :) = zero
|
esigmai_all(:, upper_bnd + 1:nktotf, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
!
|
!
|
||||||
!----------------------------------------------------------------------------
|
!----------------------------------------------------------------------------
|
||||||
|
@ -340,7 +364,7 @@
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE io_global, ONLY : stdout
|
USE io_global, ONLY : stdout
|
||||||
USE elph2, ONLY : lower_bnd, upper_bnd, nbndfst
|
USE elph2, ONLY : lower_bnd, upper_bnd, nbndfst
|
||||||
USE epwcom, ONLY : wmin_specfun, wmax_specfun, nw_specfun
|
USE epwcom, ONLY : nstemp, wmin_specfun, wmax_specfun, nw_specfun
|
||||||
USE io_var, ONLY : iufilesigma_all
|
USE io_var, ONLY : iufilesigma_all
|
||||||
USE io_files, ONLY : prefix, tmp_dir, diropn
|
USE io_files, ONLY : prefix, tmp_dir, diropn
|
||||||
USE constants_epw, ONLY : zero
|
USE constants_epw, ONLY : zero
|
||||||
|
@ -356,9 +380,9 @@
|
||||||
!! Total number of q-points
|
!! Total number of q-points
|
||||||
INTEGER, INTENT(in) :: nktotf
|
INTEGER, INTENT(in) :: nktotf
|
||||||
!! Total number of k-points
|
!! Total number of k-points
|
||||||
REAL(KIND = DP), INTENT(out) :: esigmar_all(nbndfst, nktotf, nw_specfun)
|
REAL(KIND = DP), INTENT(out) :: esigmar_all(nbndfst, nktotf, nw_specfun, nstemp)
|
||||||
!! Real part of the electron-phonon self-energy accross all pools
|
!! Real part of the electron-phonon self-energy accross all pools
|
||||||
REAL(KIND = DP), INTENT(out) :: esigmai_all(nbndfst, nktotf, nw_specfun)
|
REAL(KIND = DP), INTENT(out) :: esigmai_all(nbndfst, nktotf, nw_specfun, nstemp)
|
||||||
!! Imaginary part of the electron-phonon self-energy accross all pools
|
!! Imaginary part of the electron-phonon self-energy accross all pools
|
||||||
!
|
!
|
||||||
! Local variables
|
! Local variables
|
||||||
|
@ -376,11 +400,13 @@
|
||||||
!! Length of the vector
|
!! Length of the vector
|
||||||
INTEGER :: nqtotf_read
|
INTEGER :: nqtotf_read
|
||||||
!! Total number of q-point read
|
!! Total number of q-point read
|
||||||
|
INTEGER :: itemp
|
||||||
|
!! Counter on temperatures
|
||||||
REAL(KIND = DP) :: dw
|
REAL(KIND = DP) :: dw
|
||||||
!! Frequency intervals
|
!! Frequency intervals
|
||||||
REAL(KIND = DP) :: ww(nw_specfun)
|
REAL(KIND = DP) :: ww(nw_specfun)
|
||||||
!! Current frequency
|
!! Current frequency
|
||||||
REAL(KIND = DP) :: aux(2 * nbndfst * nktotf * nw_specfun + 2)
|
REAL(KIND = DP) :: aux(2 * nbndfst * nktotf * nw_specfun * nstemp + 2)
|
||||||
!! Vector to store the array
|
!! Vector to store the array
|
||||||
!
|
!
|
||||||
CHARACTER(LEN = 256) :: name1
|
CHARACTER(LEN = 256) :: name1
|
||||||
|
@ -398,7 +424,7 @@
|
||||||
!
|
!
|
||||||
IF (exst) THEN ! read the file
|
IF (exst) THEN ! read the file
|
||||||
!
|
!
|
||||||
lesigma_all = 2 * nbndfst * nktotf * nw_specfun + 2
|
lesigma_all = 2 * nbndfst * nktotf * nw_specfun * nstemp + 2
|
||||||
CALL diropn(iufilesigma_all, 'esigma_restart', lesigma_all, exst)
|
CALL diropn(iufilesigma_all, 'esigma_restart', lesigma_all, exst)
|
||||||
CALL davcio(aux, lesigma_all, iufilesigma_all, 1, -1)
|
CALL davcio(aux, lesigma_all, iufilesigma_all, 1, -1)
|
||||||
!
|
!
|
||||||
|
@ -410,19 +436,23 @@
|
||||||
&'Error: The current total number of q-point is not the same as the read one. ', 1)
|
&'Error: The current total number of q-point is not the same as the read one. ', 1)
|
||||||
!
|
!
|
||||||
i = 2
|
i = 2
|
||||||
DO ik = 1, nktotf
|
DO itemp = 1, nstemp
|
||||||
DO ibnd = 1, nbndfst
|
DO ik = 1, nktotf
|
||||||
DO iw = 1, nw_specfun
|
DO ibnd = 1, nbndfst
|
||||||
i = i + 1
|
DO iw = 1, nw_specfun
|
||||||
esigmar_all(ibnd, ik, iw) = aux(i)
|
i = i + 1
|
||||||
|
esigmar_all(ibnd, ik, iw, itemp) = aux(i)
|
||||||
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
DO ik = 1, nktotf
|
DO itemp = 1, nstemp
|
||||||
DO ibnd = 1, nbndfst
|
DO ik = 1, nktotf
|
||||||
DO iw = 1, nw_specfun
|
DO ibnd = 1, nbndfst
|
||||||
i = i + 1
|
DO iw = 1, nw_specfun
|
||||||
esigmai_all(ibnd, ik, iw) = aux(i)
|
i = i + 1
|
||||||
|
esigmai_all(ibnd, ik, iw, itemp) = aux(i)
|
||||||
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDDO
|
ENDDO
|
||||||
|
@ -439,12 +469,12 @@
|
||||||
!
|
!
|
||||||
! Make everythin 0 except the range of k-points we are working on
|
! Make everythin 0 except the range of k-points we are working on
|
||||||
IF (lower_bnd > 1) THEN
|
IF (lower_bnd > 1) THEN
|
||||||
esigmar_all(:, 1:lower_bnd - 1, :) = zero
|
esigmar_all(:, 1:lower_bnd - 1, :, :) = zero
|
||||||
esigmai_all(:, 1:lower_bnd - 1, :) = zero
|
esigmai_all(:, 1:lower_bnd - 1, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
IF (upper_bnd < nktotf) THEN
|
IF (upper_bnd < nktotf) THEN
|
||||||
esigmar_all(:, upper_bnd + 1:nktotf, :) = zero
|
esigmar_all(:, upper_bnd + 1:nktotf, :, :) = zero
|
||||||
esigmai_all(:, upper_bnd + 1:nktotf, :) = zero
|
esigmai_all(:, upper_bnd + 1:nktotf, :, :) = zero
|
||||||
ENDIF
|
ENDIF
|
||||||
!
|
!
|
||||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from: ', iqq,'/', totq
|
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from: ', iqq,'/', totq
|
||||||
|
|
|
@ -34,7 +34,7 @@
|
||||||
USE pwcom, ONLY : ef
|
USE pwcom, ONLY : ef
|
||||||
USE elph2, ONLY : ibndmin, etf, nkf, dmef, vmef, wf, wqf, &
|
USE elph2, ONLY : ibndmin, etf, nkf, dmef, vmef, wf, wqf, &
|
||||||
epf17, inv_tau_all, inv_tau_allcb, adapt_smearing, &
|
epf17, inv_tau_all, inv_tau_allcb, adapt_smearing, &
|
||||||
wkf, dmef, vmef, eta, transp_temp, lower_bnd, dos, &
|
wkf, dmef, vmef, eta, gtemp, lower_bnd, dos, &
|
||||||
nbndfst, nktotf
|
nbndfst, nktotf
|
||||||
USE constants_epw, ONLY : zero, one, two, ryd2mev, kelvin2eV, ryd2ev, eps4, eps8, &
|
USE constants_epw, ONLY : zero, one, two, ryd2mev, kelvin2eV, ryd2ev, eps4, eps8, &
|
||||||
eps6, eps10, bohr2ang, ang2cm
|
eps6, eps10, bohr2ang, ang2cm
|
||||||
|
@ -321,7 +321,7 @@
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
!
|
!
|
||||||
! Define the inverse so that we can efficiently multiply instead of dividing
|
! Define the inverse so that we can efficiently multiply instead of dividing
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
inv_etemp = 1.0 / etemp
|
inv_etemp = 1.0 / etemp
|
||||||
!
|
!
|
||||||
! Now pre-treat phonon modes for efficiency for this specific current q-point.
|
! Now pre-treat phonon modes for efficiency for this specific current q-point.
|
||||||
|
@ -629,7 +629,7 @@
|
||||||
! Now print the carrier density for checking (for non-metals)
|
! Now print the carrier density for checking (for non-metals)
|
||||||
IF (.NOT. assume_metal) THEN
|
IF (.NOT. assume_metal) THEN
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
carrier_density = 0.0
|
carrier_density = 0.0
|
||||||
!
|
!
|
||||||
IF (ncarrier < 0.0) THEN ! VB
|
IF (ncarrier < 0.0) THEN ! VB
|
||||||
|
|
|
@ -260,7 +260,7 @@
|
||||||
!!
|
!!
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE epwcom, ONLY : ncarrier, nstemp, nkf1, nkf2, nkf3, assume_metal
|
USE epwcom, ONLY : ncarrier, nstemp, nkf1, nkf2, nkf3, assume_metal
|
||||||
USE elph2, ONLY : nbndfst, transp_temp, nktotf
|
USE elph2, ONLY : nbndfst, gtemp, nktotf
|
||||||
USE constants_epw, ONLY : zero, two, kelvin2eV, ryd2ev, eps10, &
|
USE constants_epw, ONLY : zero, two, kelvin2eV, ryd2ev, eps10, &
|
||||||
bohr2ang, ang2cm, hbarJ
|
bohr2ang, ang2cm, hbarJ
|
||||||
USE symm_base, ONLY : nrot
|
USE symm_base, ONLY : nrot
|
||||||
|
@ -317,7 +317,7 @@
|
||||||
! compute conductivity
|
! compute conductivity
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
carrier_density = 0.0
|
carrier_density = 0.0
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
sigma(:, :) = zero
|
sigma(:, :) = zero
|
||||||
fi_check(:) = zero
|
fi_check(:) = zero
|
||||||
DO ik = 1, nktotf
|
DO ik = 1, nktotf
|
||||||
|
@ -464,7 +464,7 @@
|
||||||
!-----------------------------------------------------------------------
|
!-----------------------------------------------------------------------
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE epwcom, ONLY : ncarrier, nstemp, nkf1, nkf2, nkf3, assume_metal
|
USE epwcom, ONLY : ncarrier, nstemp, nkf1, nkf2, nkf3, assume_metal
|
||||||
USE elph2, ONLY : nbndfst, transp_temp, nktotf
|
USE elph2, ONLY : nbndfst, gtemp, nktotf
|
||||||
USE constants_epw, ONLY : zero, two, kelvin2eV, ryd2ev, eps10, &
|
USE constants_epw, ONLY : zero, two, kelvin2eV, ryd2ev, eps10, &
|
||||||
bohr2ang, ang2cm, hbarJ
|
bohr2ang, ang2cm, hbarJ
|
||||||
USE noncollin_module, ONLY : noncolin
|
USE noncollin_module, ONLY : noncolin
|
||||||
|
@ -519,7 +519,7 @@
|
||||||
CALL prtheader_mob()
|
CALL prtheader_mob()
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
carrier_density = 0.0
|
carrier_density = 0.0
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
sigma(:, :) = zero
|
sigma(:, :) = zero
|
||||||
fi_check(:) = zero
|
fi_check(:) = zero
|
||||||
DO ik = 1, nktotf
|
DO ik = 1, nktotf
|
||||||
|
@ -716,7 +716,8 @@
|
||||||
!!
|
!!
|
||||||
USE io_global, ONLY : stdout
|
USE io_global, ONLY : stdout
|
||||||
USE epwcom, ONLY : liso, laniso, lreal, imag_read, wscut
|
USE epwcom, ONLY : liso, laniso, lreal, imag_read, wscut
|
||||||
USE eliashbergcom, ONLY : nsiw, nsw, estemp
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsiw, nsw
|
||||||
USE constants_epw, ONLY : kelvin2eV
|
USE constants_epw, ONLY : kelvin2eV
|
||||||
USE constants, ONLY : pi
|
USE constants, ONLY : pi
|
||||||
!
|
!
|
||||||
|
@ -729,7 +730,7 @@
|
||||||
!
|
!
|
||||||
IF (cal_type == 1) THEN
|
IF (cal_type == 1) THEN
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
WRITE(stdout, '(5x, a, i3, a, f12.5, a, a, i3, a)') 'temp(', itemp, ') = ', estemp(itemp) / kelvin2eV, ' K'
|
WRITE(stdout, '(5x, a, i3, a, f12.5, a, a, i3, a)') 'temp(', itemp, ') = ', gtemp(itemp) / kelvin2eV, ' K'
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
IF (liso) &
|
IF (liso) &
|
||||||
WRITE(stdout, '(5x, a)') 'Solve isotropic Eliashberg equations on imaginary-axis'
|
WRITE(stdout, '(5x, a)') 'Solve isotropic Eliashberg equations on imaginary-axis'
|
||||||
|
@ -739,7 +740,7 @@
|
||||||
WRITE(stdout, '(5x, a)') 'Read from file delta and znorm on imaginary-axis '
|
WRITE(stdout, '(5x, a)') 'Read from file delta and znorm on imaginary-axis '
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
WRITE(stdout, '(5x, a, i6, a, i6)') 'Total number of frequency points nsiw(', itemp, ') = ', nsiw(itemp)
|
WRITE(stdout, '(5x, a, i6, a, i6)') 'Total number of frequency points nsiw(', itemp, ') = ', nsiw(itemp)
|
||||||
WRITE(stdout, '(5x, a, f10.4)') 'Cutoff frequency wscut = ', (2.d0 * nsiw(itemp) + 1) * pi * estemp(itemp)
|
WRITE(stdout, '(5x, a, f10.4)') 'Cutoff frequency wscut = ', (2.d0 * nsiw(itemp) + 1) * pi * gtemp(itemp)
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
ENDIF
|
ENDIF
|
||||||
!
|
!
|
||||||
|
@ -767,7 +768,7 @@
|
||||||
!
|
!
|
||||||
IF (cal_type == 4) THEN
|
IF (cal_type == 4) THEN
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
WRITE(stdout, '(5x, a, i3, a, f12.5, a, a, i3, a)') 'temp(', itemp, ') = ', estemp(itemp) / kelvin2eV, ' K'
|
WRITE(stdout, '(5x, a, i3, a, f12.5, a, a, i3, a)') 'temp(', itemp, ') = ', gtemp(itemp) / kelvin2eV, ' K'
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
IF (liso .AND. lreal) &
|
IF (liso .AND. lreal) &
|
||||||
WRITE(stdout, '(5x, a)') 'Solve isotropic Eliashberg equations on real-axis'
|
WRITE(stdout, '(5x, a)') 'Solve isotropic Eliashberg equations on real-axis'
|
||||||
|
|
1546
EPW/src/selfen.f90
1546
EPW/src/selfen.f90
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -25,6 +25,7 @@
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
|
!
|
||||||
CALL print_clock_epw()
|
CALL print_clock_epw()
|
||||||
!
|
!
|
||||||
WRITE(stdout, '(a)') " "
|
WRITE(stdout, '(a)') " "
|
||||||
|
|
|
@ -27,12 +27,12 @@
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE io_global, ONLY : stdout
|
USE io_global, ONLY : stdout
|
||||||
USE epwcom, ONLY : eliashberg, nkf1, nkf2, nkf3, nsiter, &
|
USE epwcom, ONLY : eliashberg, nkf1, nkf2, nkf3, nsiter, &
|
||||||
nqf1, nqf2, nqf3, ntempxx, nswi, nstemp, temps, &
|
nqf1, nqf2, nqf3, nswi, muc, lreal, lpade, &
|
||||||
muc, lreal, lpade, liso, limag, laniso, lacon, &
|
liso, limag, laniso, lacon, kerwrite, kerread, &
|
||||||
kerwrite, kerread, imag_read, fila2f, wsfc, wscut, &
|
imag_read, fila2f, wsfc, wscut, rand_q, &
|
||||||
tempsmin, tempsmax, rand_q, rand_k
|
rand_k
|
||||||
USE constants_epw, ONLY : kelvin2eV
|
USE constants_epw, ONLY : ryd2ev
|
||||||
USE eliashbergcom, ONLY : estemp
|
USE elph2, ONLY : gtemp
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
|
@ -80,12 +80,6 @@
|
||||||
CALL errore('eliashberg_init', 'nswi should be > 0', 1)
|
CALL errore('eliashberg_init', 'nswi should be > 0', 1)
|
||||||
IF (eliashberg .AND. wscut < 0.d0 ) &
|
IF (eliashberg .AND. wscut < 0.d0 ) &
|
||||||
CALL errore('eliashberg_init', 'wscut should be > 0.d0', 1)
|
CALL errore('eliashberg_init', 'wscut should be > 0.d0', 1)
|
||||||
IF (eliashberg .AND. nstemp < 1) &
|
|
||||||
CALL errore('eliashberg_init', 'wrong number of nstemp', 1)
|
|
||||||
IF (eliashberg .AND. MAXVAL(temps(:)) > 0.d0 .AND. tempsmin > 0.d0 .AND. tempsmax > 0.d0) &
|
|
||||||
CALL errore('eliashberg_init', 'define either (tempsmin and tempsmax) or temps(:)', 1)
|
|
||||||
IF (eliashberg .AND. tempsmax < tempsmin) &
|
|
||||||
CALL errore('eliashberg_init', 'tempsmax should be greater than tempsmin', 1)
|
|
||||||
IF (eliashberg .AND. nsiter < 1) &
|
IF (eliashberg .AND. nsiter < 1) &
|
||||||
CALL errore('eliashberg_init', 'wrong number of nsiter', 1)
|
CALL errore('eliashberg_init', 'wrong number of nsiter', 1)
|
||||||
IF (eliashberg .AND. muc < 0.d0) &
|
IF (eliashberg .AND. muc < 0.d0) &
|
||||||
|
@ -96,31 +90,8 @@
|
||||||
CALL errore('eliashberg_init', &
|
CALL errore('eliashberg_init', &
|
||||||
'eliashberg requires nkf1,nkf2,nkf3 to be multiple of nqf1,nqf2,nqf3 when fila2f is not used', 1)
|
'eliashberg requires nkf1,nkf2,nkf3 to be multiple of nqf1,nqf2,nqf3 when fila2f is not used', 1)
|
||||||
!
|
!
|
||||||
DO itemp = 1, ntempxx
|
! Ryd to eV
|
||||||
IF (temps(itemp) > 0.d0) THEN
|
gtemp(:) = gtemp * ryd2ev
|
||||||
nstemp = itemp
|
|
||||||
ENDIF
|
|
||||||
ENDDO
|
|
||||||
!
|
|
||||||
ALLOCATE(estemp(nstemp), STAT = ierr)
|
|
||||||
IF (ierr /= 0) CALL errore('eliashberg_init', 'Error allocating estemp', 1)
|
|
||||||
estemp(:) = 0.d0
|
|
||||||
!
|
|
||||||
! go from K to eV
|
|
||||||
IF (MAXVAL(temps(:)) > 0.d0) THEN
|
|
||||||
DO itemp= 1, nstemp
|
|
||||||
estemp(itemp) = temps(itemp) * kelvin2eV
|
|
||||||
ENDDO
|
|
||||||
ELSE
|
|
||||||
IF (nstemp == 1) THEN
|
|
||||||
estemp(1) = tempsmin * kelvin2eV
|
|
||||||
ELSE
|
|
||||||
dtemp = (tempsmax - tempsmin) * kelvin2eV / DBLE(nstemp - 1)
|
|
||||||
DO itemp = 1, nstemp
|
|
||||||
estemp(itemp) = tempsmin * kelvin2eV + DBLE(itemp - 1) * dtemp
|
|
||||||
ENDDO
|
|
||||||
ENDIF
|
|
||||||
ENDIF
|
|
||||||
!
|
!
|
||||||
RETURN
|
RETURN
|
||||||
!
|
!
|
||||||
|
@ -139,9 +110,10 @@
|
||||||
USE io_global, ONLY : stdout
|
USE io_global, ONLY : stdout
|
||||||
USE epwcom, ONLY : nqstep, nswi, nswfc, nswc, nstemp, &
|
USE epwcom, ONLY : nqstep, nswi, nswfc, nswc, nstemp, &
|
||||||
lreal, lpade, limag, lacon, wsfc, wscut
|
lreal, lpade, limag, lacon, wsfc, wscut
|
||||||
|
USE elph2, ONLY : gtemp
|
||||||
USE constants_epw, ONLY : eps6
|
USE constants_epw, ONLY : eps6
|
||||||
USE constants, ONLY : pi
|
USE constants, ONLY : pi
|
||||||
USE eliashbergcom, ONLY : estemp, nsw, nsiw, wsphmax
|
USE eliashbergcom, ONLY : nsw, nsiw, wsphmax
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
|
@ -173,7 +145,7 @@
|
||||||
nsiw(:) = nswi
|
nsiw(:) = nswi
|
||||||
ELSEIF (wscut > 0.d0) THEN
|
ELSEIF (wscut > 0.d0) THEN
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
nsiw(itemp) = int(0.5d0 * (wscut / pi / estemp(itemp) - 1.d0)) + 1
|
nsiw(itemp) = int(0.5d0 * (wscut / pi / gtemp(itemp) - 1.d0)) + 1
|
||||||
ENDDO
|
ENDDO
|
||||||
ELSEIF (nswi > 0 .AND. wscut > 0.d0) THEN
|
ELSEIF (nswi > 0 .AND. wscut > 0.d0) THEN
|
||||||
nsiw(:) = nswi
|
nsiw(:) = nswi
|
||||||
|
@ -675,12 +647,13 @@
|
||||||
!
|
!
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE epwcom, ONLY : nqstep, muc, nstemp
|
USE epwcom, ONLY : nqstep, muc, nstemp
|
||||||
USE eliashbergcom, ONLY : estemp, wsph, dwsph, a2f_iso, gap0
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : wsph, dwsph, a2f_iso, gap0
|
||||||
USE constants_epw, ONLY : kelvin2eV, zero
|
USE constants_epw, ONLY : kelvin2eV, zero
|
||||||
USE io_global, ONLY : stdout, ionode_id
|
USE io_global, ONLY : stdout, ionode_id
|
||||||
USE mp_global, ONLY : inter_pool_comm
|
USE mp_global, ONLY : inter_pool_comm
|
||||||
USE mp_world, ONLY : mpime
|
USE mp_world, ONLY : mpime
|
||||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
|
@ -726,18 +699,18 @@
|
||||||
WRITE(stdout, '(5x, a, f12.6, a)') 'Estimated BCS superconducting gap = ', gap0, ' eV'
|
WRITE(stdout, '(5x, a, f12.6, a)') 'Estimated BCS superconducting gap = ', gap0, ' eV'
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
!
|
!
|
||||||
IF (estemp(1) / kelvin2eV > tc) THEN
|
IF (gtemp(1) / kelvin2eV > tc) THEN
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
WRITE(stdout, '(5x, a)') 'WARNING WARNING WARNING '
|
WRITE(stdout, '(5x, a)') 'WARNING WARNING WARNING '
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
WRITE(stdout, '(5x, a, f9.3, a, f9.3, a)') 'The code may crash since tempsmin =', &
|
WRITE(stdout, '(5x, a, f9.3, a, f9.3, a)') 'The code may crash since tempsmin =', &
|
||||||
estemp(1) / kelvin2eV, ' K is larger than Allen-Dynes Tc = ', tc, ' K'
|
gtemp(1) / kelvin2eV, ' K is larger than Allen-Dynes Tc = ', tc, ' K'
|
||||||
ELSEIF (estemp(nstemp) / kelvin2eV > tc) THEN
|
ELSEIF (gtemp(nstemp) / kelvin2eV > tc) THEN
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
WRITE(stdout, '(5x, a)') 'WARNING WARNING WARNING '
|
WRITE(stdout, '(5x, a)') 'WARNING WARNING WARNING '
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
WRITE(stdout, '(5x, a, f9.3, a, f9.3, a)') 'The code may crash since tempsmax =', &
|
WRITE(stdout, '(5x, a, f9.3, a, f9.3, a)') 'The code may crash since tempsmax =', &
|
||||||
estemp(nstemp) / kelvin2eV, ' K is larger than Allen-Dynes Tc = ', tc, ' K'
|
gtemp(nstemp) / kelvin2eV, ' K is larger than Allen-Dynes Tc = ', tc, ' K'
|
||||||
ENDIF
|
ENDIF
|
||||||
!
|
!
|
||||||
ENDIF
|
ENDIF
|
||||||
|
@ -838,7 +811,8 @@
|
||||||
! itemp - temperature point
|
! itemp - temperature point
|
||||||
!
|
!
|
||||||
USE epwcom, ONLY : nqstep, lpade, lacon, laniso
|
USE epwcom, ONLY : nqstep, lpade, lacon, laniso
|
||||||
USE eliashbergcom, ONLY : nsw, nsiw, ws, wsi, wsph, dwsph, estemp, wsphmax
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsw, nsiw, ws, wsi, wsph, dwsph, wsphmax
|
||||||
USE constants_epw, ONLY : zero
|
USE constants_epw, ONLY : zero
|
||||||
USE constants, ONLY : pi
|
USE constants, ONLY : pi
|
||||||
USE low_lvl, ONLY : mem_size_eliashberg
|
USE low_lvl, ONLY : mem_size_eliashberg
|
||||||
|
@ -872,7 +846,7 @@
|
||||||
wsi(:) = zero
|
wsi(:) = zero
|
||||||
DO iw = 1, nsiw(itemp)
|
DO iw = 1, nsiw(itemp)
|
||||||
n = iw - 1
|
n = iw - 1
|
||||||
wsi(iw) = DBLE(2 * n + 1) * pi * estemp(itemp)
|
wsi(iw) = DBLE(2 * n + 1) * pi * gtemp(itemp)
|
||||||
!WRITE(*, *) iw, wsi(iw)
|
!WRITE(*, *) iw, wsi(iw)
|
||||||
ENDDO
|
ENDDO
|
||||||
!
|
!
|
||||||
|
@ -950,7 +924,8 @@
|
||||||
USE io_var, ONLY : iuqdos
|
USE io_var, ONLY : iuqdos
|
||||||
USE io_files, ONLY : prefix
|
USE io_files, ONLY : prefix
|
||||||
USE epwcom, ONLY : lreal, limag, liso, laniso, fsthick
|
USE epwcom, ONLY : lreal, limag, liso, laniso, fsthick
|
||||||
USE eliashbergcom, ONLY : nsw, estemp, dwsph, ws, dws, delta, adelta, &
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsw, dwsph, ws, dws, delta, adelta, &
|
||||||
wkfs, w0g, nkfs, nbndfs, ef0, ekfs
|
wkfs, w0g, nkfs, nbndfs, ef0, ekfs
|
||||||
USE constants_epw, ONLY : kelvin2eV, zero, ci
|
USE constants_epw, ONLY : kelvin2eV, zero, ci
|
||||||
!
|
!
|
||||||
|
@ -992,7 +967,7 @@
|
||||||
degaussw0 = 1.d0 * dwsph
|
degaussw0 = 1.d0 * dwsph
|
||||||
ENDIF
|
ENDIF
|
||||||
!
|
!
|
||||||
temp = estemp(itemp) / kelvin2eV
|
temp = gtemp(itemp) / kelvin2eV
|
||||||
IF (temp < 10.d0) THEN
|
IF (temp < 10.d0) THEN
|
||||||
WRITE(fildos, '(a, a8, f4.2)') TRIM(prefix), '.qdos_00', temp
|
WRITE(fildos, '(a, a8, f4.2)') TRIM(prefix), '.qdos_00', temp
|
||||||
ELSEIF (temp >= 10.d0 .AND. temp < 100.d0) THEN
|
ELSEIF (temp >= 10.d0 .AND. temp < 100.d0) THEN
|
||||||
|
@ -1053,7 +1028,8 @@
|
||||||
USE io_var, ONLY : iufe
|
USE io_var, ONLY : iufe
|
||||||
USE io_files, ONLY : prefix
|
USE io_files, ONLY : prefix
|
||||||
USE epwcom, ONLY : liso, laniso, fsthick
|
USE epwcom, ONLY : liso, laniso, fsthick
|
||||||
USE eliashbergcom, ONLY : estemp, wsi, nsiw, adeltai, aznormi, naznormi, &
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : wsi, nsiw, adeltai, aznormi, naznormi, &
|
||||||
deltai, znormi, nznormi, &
|
deltai, znormi, nznormi, &
|
||||||
wkfs, w0g, nkfs, nbndfs, ef0, ekfs
|
wkfs, w0g, nkfs, nbndfs, ef0, ekfs
|
||||||
USE constants_epw, ONLY : kelvin2eV, zero
|
USE constants_epw, ONLY : kelvin2eV, zero
|
||||||
|
@ -1086,7 +1062,7 @@
|
||||||
REAL(KIND = DP) :: dFE
|
REAL(KIND = DP) :: dFE
|
||||||
!! free energy difference between supercond and normal states
|
!! free energy difference between supercond and normal states
|
||||||
!
|
!
|
||||||
temp = estemp(itemp) / kelvin2eV
|
temp = gtemp(itemp) / kelvin2eV
|
||||||
IF (temp < 10.d0) THEN
|
IF (temp < 10.d0) THEN
|
||||||
WRITE(filfe, '(a, a6, f4.2)') TRIM(prefix), '.fe_00', temp
|
WRITE(filfe, '(a, a6, f4.2)') TRIM(prefix), '.fe_00', temp
|
||||||
ELSEIF (temp >= 10.d0 .AND. temp < 100.d0) THEN
|
ELSEIF (temp >= 10.d0 .AND. temp < 100.d0) THEN
|
||||||
|
@ -1118,7 +1094,7 @@
|
||||||
* (znormi(iw) - nznormi(iw) * wsi(iw) / omega)
|
* (znormi(iw) - nznormi(iw) * wsi(iw) / omega)
|
||||||
ENDDO
|
ENDDO
|
||||||
ENDIF
|
ENDIF
|
||||||
dFE = dFE * pi * estemp(itemp)
|
dFE = dFE * pi * gtemp(itemp)
|
||||||
WRITE(iufe, '(2ES20.10)') temp, dFE
|
WRITE(iufe, '(2ES20.10)') temp, dFE
|
||||||
CLOSE(iufe)
|
CLOSE(iufe)
|
||||||
!
|
!
|
||||||
|
@ -1263,15 +1239,16 @@
|
||||||
!! deallocates the variables allocated by eliashberg_init and read_a2f
|
!! deallocates the variables allocated by eliashberg_init and read_a2f
|
||||||
!!
|
!!
|
||||||
USE epwcom, ONLY : limag
|
USE epwcom, ONLY : limag
|
||||||
USE eliashbergcom, ONLY : a2f_iso, wsph, estemp, nsiw
|
USE eliashbergcom, ONLY : a2f_iso, wsph, nsiw
|
||||||
|
USE elph2, ONLY : gtemp
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
INTEGER :: ierr
|
INTEGER :: ierr
|
||||||
!! Error status
|
!! Error status
|
||||||
!
|
!
|
||||||
DEALLOCATE(estemp, STAT = ierr)
|
DEALLOCATE(gtemp, STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('deallocate_eliashberg_iso', 'Error deallocating estemp', 1)
|
IF (ierr /= 0) CALL errore('deallocate_eliashberg_iso', 'Error deallocating gtemp', 1)
|
||||||
DEALLOCATE(wsph, STAT = ierr)
|
DEALLOCATE(wsph, STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('deallocate_eliashberg_iso', 'Error deallocating wsph', 1)
|
IF (ierr /= 0) CALL errore('deallocate_eliashberg_iso', 'Error deallocating wsph', 1)
|
||||||
IF (limag) THEN
|
IF (limag) THEN
|
||||||
|
@ -1296,18 +1273,18 @@
|
||||||
!! and evaluate_a2f_lambda subroutines
|
!! and evaluate_a2f_lambda subroutines
|
||||||
!!
|
!!
|
||||||
USE epwcom, ONLY : limag
|
USE epwcom, ONLY : limag
|
||||||
USE elph2, ONLY : wf, wqf, xqf
|
USE elph2, ONLY : wf, wqf, xqf, gtemp
|
||||||
USE eliashbergcom, ONLY : ekfs, xkfs, wkfs, g2, a2f_iso, w0g, &
|
USE eliashbergcom, ONLY : ekfs, xkfs, wkfs, g2, a2f_iso, w0g, &
|
||||||
ixkff, ixkqf, ixqfs, nqfs, memlt_pool, &
|
ixkff, ixkqf, ixqfs, nqfs, memlt_pool, &
|
||||||
wsph, estemp, nsiw
|
wsph, nsiw
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
INTEGER :: ierr
|
INTEGER :: ierr
|
||||||
!! Error status
|
!! Error status
|
||||||
!
|
!
|
||||||
DEALLOCATE(estemp, STAT = ierr)
|
DEALLOCATE(gtemp, STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('deallocate_eliashberg_aniso', 'Error deallocating estemp', 1)
|
IF (ierr /= 0) CALL errore('deallocate_eliashberg_aniso', 'Error deallocating gtemp', 1)
|
||||||
DEALLOCATE(wsph, STAT = ierr)
|
DEALLOCATE(wsph, STAT = ierr)
|
||||||
IF (ierr /= 0) CALL errore('deallocate_eliashberg_aniso', 'Error deallocating wsph', 1)
|
IF (ierr /= 0) CALL errore('deallocate_eliashberg_aniso', 'Error deallocating wsph', 1)
|
||||||
IF (limag) THEN
|
IF (limag) THEN
|
||||||
|
|
|
@ -29,8 +29,9 @@
|
||||||
USE control_flags, ONLY : iverbosity
|
USE control_flags, ONLY : iverbosity
|
||||||
USE epwcom, ONLY : nsiter, nstemp, broyden_beta, broyden_ndim, &
|
USE epwcom, ONLY : nsiter, nstemp, broyden_beta, broyden_ndim, &
|
||||||
limag, lpade, lacon, fsthick, imag_read, wscut
|
limag, lpade, lacon, fsthick, imag_read, wscut
|
||||||
|
USE elph2, ONLY : gtemp
|
||||||
USE eliashbergcom, ONLY : nsw, nsiw, adelta, adeltap, adeltai, adeltaip, &
|
USE eliashbergcom, ONLY : nsw, nsiw, adelta, adeltap, adeltai, adeltaip, &
|
||||||
estemp, nkfs, nbndfs, ekfs, ef0
|
nkfs, nbndfs, ekfs, ef0
|
||||||
USE supercond, ONLY : free_energy, dos_quasiparticle, gen_freqgrid_iaxis, &
|
USE supercond, ONLY : free_energy, dos_quasiparticle, gen_freqgrid_iaxis, &
|
||||||
deallocate_eliashberg_iaxis, deallocate_eliashberg_raxis, &
|
deallocate_eliashberg_iaxis, deallocate_eliashberg_raxis, &
|
||||||
deallocate_eliashberg_aniso, eliashberg_grid
|
deallocate_eliashberg_aniso, eliashberg_grid
|
||||||
|
@ -301,9 +302,9 @@
|
||||||
!! This routine solves the anisotropic Eliashberg equations on the imaginary-axis
|
!! This routine solves the anisotropic Eliashberg equations on the imaginary-axis
|
||||||
!!
|
!!
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE elph2, ONLY : wqf
|
USE elph2, ONLY : wqf, gtemp
|
||||||
USE epwcom, ONLY : nsiter, nstemp, muc, conv_thr_iaxis, fsthick
|
USE epwcom, ONLY : nsiter, nstemp, muc, conv_thr_iaxis, fsthick
|
||||||
USE eliashbergcom, ONLY : nsiw, estemp, gap0, gap, agap, wsi, akeri, limag_fly, &
|
USE eliashbergcom, ONLY : nsiw, gap0, gap, agap, wsi, akeri, limag_fly, &
|
||||||
naznormi, aznormi, adeltai, adeltaip, nznormi, znormi, &
|
naznormi, aznormi, adeltai, adeltaip, nznormi, znormi, &
|
||||||
deltai, wsphmax, nkfs, nbndfs, dosef, ef0, ixkqf, ixqfs, &
|
deltai, wsphmax, nkfs, nbndfs, dosef, ef0, ixkqf, ixqfs, &
|
||||||
nqfs, wkfs, w0g, ekfs
|
nqfs, wkfs, w0g, ekfs
|
||||||
|
@ -508,16 +509,16 @@
|
||||||
nznormi(iw) = nznormi(iw) + weight * naznormi(ibnd, ik, iw)
|
nznormi(iw) = nznormi(iw) + weight * naznormi(ibnd, ik, iw)
|
||||||
znormi(iw) = znormi(iw) + weight * aznormi(ibnd, ik, iw)
|
znormi(iw) = znormi(iw) + weight * aznormi(ibnd, ik, iw)
|
||||||
deltai(iw) = deltai(iw) + weight * adeltai(ibnd, ik, iw)
|
deltai(iw) = deltai(iw) + weight * adeltai(ibnd, ik, iw)
|
||||||
naznormi(ibnd, ik, iw) = 1.d0 + pi * estemp(itemp) * naznormi(ibnd, ik, iw) / wsi(iw)
|
naznormi(ibnd, ik, iw) = 1.d0 + pi * gtemp(itemp) * naznormi(ibnd, ik, iw) / wsi(iw)
|
||||||
! Eqs.(21)-(22) in Margine and Giustino, PRB 87, 024505 (2013)
|
! Eqs.(21)-(22) in Margine and Giustino, PRB 87, 024505 (2013)
|
||||||
aznormi(ibnd, ik, iw) = 1.d0 + pi * estemp(itemp) * aznormi(ibnd, ik, iw) / wsi(iw)
|
aznormi(ibnd, ik, iw) = 1.d0 + pi * gtemp(itemp) * aznormi(ibnd, ik, iw) / wsi(iw)
|
||||||
adeltai(ibnd, ik, iw) = pi * estemp(itemp) * adeltai(ibnd, ik, iw) / aznormi(ibnd, ik, iw)
|
adeltai(ibnd, ik, iw) = pi * gtemp(itemp) * adeltai(ibnd, ik, iw) / aznormi(ibnd, ik, iw)
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDDO ! ibnd
|
ENDDO ! ibnd
|
||||||
ENDDO ! ik
|
ENDDO ! ik
|
||||||
nznormi(iw) = 1.d0 + pi * estemp(itemp) * nznormi(iw) / wsi(iw)
|
nznormi(iw) = 1.d0 + pi * gtemp(itemp) * nznormi(iw) / wsi(iw)
|
||||||
znormi(iw) = 1.d0 + pi * estemp(itemp) * znormi(iw) / wsi(iw)
|
znormi(iw) = 1.d0 + pi * gtemp(itemp) * znormi(iw) / wsi(iw)
|
||||||
deltai(iw) = pi * estemp(itemp) * deltai(iw) / znormi(iw)
|
deltai(iw) = pi * gtemp(itemp) * deltai(iw) / znormi(iw)
|
||||||
reldelta = reldelta + ABS(deltai(iw) - deltaold(iw))
|
reldelta = reldelta + ABS(deltai(iw) - deltaold(iw))
|
||||||
absdelta = absdelta + ABS(deltai(iw))
|
absdelta = absdelta + ABS(deltai(iw))
|
||||||
ENDDO ! iw
|
ENDDO ! iw
|
||||||
|
@ -597,10 +598,10 @@
|
||||||
!
|
!
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE modes, ONLY : nmodes
|
USE modes, ONLY : nmodes
|
||||||
USE elph2, ONLY : wqf, wf
|
USE elph2, ONLY : wqf, wf, gtemp
|
||||||
USE epwcom, ONLY : nqstep, degaussq, nsiter, conv_thr_racon, fsthick, &
|
USE epwcom, ONLY : nqstep, degaussq, nsiter, conv_thr_racon, fsthick, &
|
||||||
lpade, eps_acustic
|
lpade, eps_acustic
|
||||||
USE eliashbergcom, ONLY : nsw, estemp, dwsph, ws, wsph, gap, agap, gp, gm, adsumi, azsumi, &
|
USE eliashbergcom, ONLY : nsw, dwsph, ws, wsph, gap, agap, gp, gm, adsumi, azsumi, &
|
||||||
delta, znorm, adelta, adeltap, aznorm, aznormp, g2, lacon_fly, &
|
delta, znorm, adelta, adeltap, aznorm, aznormp, g2, lacon_fly, &
|
||||||
a2fij, wkfs, dosef, ixkqf, ixqfs, nqfs, w0g, nkfs, nbndfs, ef0, ekfs
|
a2fij, wkfs, dosef, ixkqf, ixqfs, nqfs, w0g, nkfs, nbndfs, ef0, ekfs
|
||||||
USE supercond, ONLY : gamma_acont
|
USE supercond, ONLY : gamma_acont
|
||||||
|
@ -725,7 +726,7 @@
|
||||||
! ! Eq.(28) in Margine and Giustino, PRB 87, 024505 (2013)
|
! ! Eq.(28) in Margine and Giustino, PRB 87, 024505 (2013)
|
||||||
DO iw = 1, nsw ! loop over omega
|
DO iw = 1, nsw ! loop over omega
|
||||||
DO iwp = 1, nqstep ! loop over omega_prime
|
DO iwp = 1, nqstep ! loop over omega_prime
|
||||||
CALL gamma_acont(ws(iw), ws(iwp), estemp(itemp), rgammap, rgammam)
|
CALL gamma_acont(ws(iw), ws(iwp), gtemp(itemp), rgammap, rgammam)
|
||||||
gp(iw, iwp) = rgammap
|
gp(iw, iwp) = rgammap
|
||||||
gm(iw, iwp) = rgammam
|
gm(iw, iwp) = rgammam
|
||||||
ENDDO
|
ENDDO
|
||||||
|
@ -807,8 +808,8 @@
|
||||||
ENDDO ! iq
|
ENDDO ! iq
|
||||||
! Eqs.(26)-(27) in Margine and Giustino, PRB 87, 024505 (2013)
|
! Eqs.(26)-(27) in Margine and Giustino, PRB 87, 024505 (2013)
|
||||||
DO iw = 1, nsw ! loop over omega
|
DO iw = 1, nsw ! loop over omega
|
||||||
aznorm(ibnd, ik, iw) = - estemp(itemp) * azsumi(ibnd, ik, iw) + ci * aznorm(ibnd, ik, iw) * dwsph
|
aznorm(ibnd, ik, iw) = - gtemp(itemp) * azsumi(ibnd, ik, iw) + ci * aznorm(ibnd, ik, iw) * dwsph
|
||||||
adelta(ibnd, ik, iw) = estemp(itemp) * adsumi(ibnd, ik, iw) + ci * adelta(ibnd, ik, iw) * dwsph
|
adelta(ibnd, ik, iw) = gtemp(itemp) * adsumi(ibnd, ik, iw) + ci * adelta(ibnd, ik, iw) * dwsph
|
||||||
ENDDO ! iw
|
ENDDO ! iw
|
||||||
ENDIF ! fsthick
|
ENDIF ! fsthick
|
||||||
ENDDO ! ibnd
|
ENDDO ! ibnd
|
||||||
|
@ -1093,7 +1094,8 @@
|
||||||
!!
|
!!
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE epwcom, ONLY : fsthick
|
USE epwcom, ONLY : fsthick
|
||||||
USE eliashbergcom, ONLY : nkfs, nbndfs, nsiw, estemp, akeri, ekfs, ef0, ixkqf, ixqfs, nqfs
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nkfs, nbndfs, nsiw, akeri, ekfs, ef0, ixkqf, ixqfs, nqfs
|
||||||
USE constants_epw, ONLY : zero
|
USE constants_epw, ONLY : zero
|
||||||
USE constants, ONLY : pi
|
USE constants, ONLY : pi
|
||||||
USE division, ONLY : fkbounds
|
USE division, ONLY : fkbounds
|
||||||
|
@ -1144,7 +1146,7 @@
|
||||||
IF (ABS(ekfs(jbnd, ixkqf(ik, iq0)) - ef0) < fsthick) THEN
|
IF (ABS(ekfs(jbnd, ixkqf(ik, iq0)) - ef0) < fsthick) THEN
|
||||||
DO iw = 1, 2*nsiw(itemp)
|
DO iw = 1, 2*nsiw(itemp)
|
||||||
n = iw - 1
|
n = iw - 1
|
||||||
omega = DBLE(2 * n) * pi * estemp(itemp)
|
omega = DBLE(2 * n) * pi * gtemp(itemp)
|
||||||
CALL lambdar_aniso_ver1(ik, iq, ibnd, jbnd, omega, lambda_eph)
|
CALL lambdar_aniso_ver1(ik, iq, ibnd, jbnd, omega, lambda_eph)
|
||||||
!CALL lambdar_aniso_ver2(ik, iq, ibnd, jbnd, omega, lambda_eph)
|
!CALL lambdar_aniso_ver2(ik, iq, ibnd, jbnd, omega, lambda_eph)
|
||||||
akeri(ik, iq, ibnd, jbnd, iw) = lambda_eph
|
akeri(ik, iq, ibnd, jbnd, iw) = lambda_eph
|
||||||
|
|
|
@ -30,7 +30,8 @@
|
||||||
USE control_flags, ONLY : iverbosity
|
USE control_flags, ONLY : iverbosity
|
||||||
USE epwcom, ONLY : nsiter, nstemp, broyden_beta, broyden_ndim, &
|
USE epwcom, ONLY : nsiter, nstemp, broyden_beta, broyden_ndim, &
|
||||||
limag, lpade, lacon
|
limag, lpade, lacon
|
||||||
USE eliashbergcom, ONLY : nsw, nsiw, deltai, deltaip, delta, deltap, estemp
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsw, nsiw, deltai, deltaip, delta, deltap
|
||||||
USE constants_epw, ONLY : kelvin2eV, ci, zero
|
USE constants_epw, ONLY : kelvin2eV, ci, zero
|
||||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||||
USE supercond, ONLY : free_energy, dos_quasiparticle, gen_freqgrid_iaxis, &
|
USE supercond, ONLY : free_energy, dos_quasiparticle, gen_freqgrid_iaxis, &
|
||||||
|
@ -236,7 +237,8 @@
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE io_global, ONLY : stdout
|
USE io_global, ONLY : stdout
|
||||||
USE epwcom, ONLY : nsiter, nstemp, muc, conv_thr_iaxis
|
USE epwcom, ONLY : nsiter, nstemp, muc, conv_thr_iaxis
|
||||||
USE eliashbergcom, ONLY : nsiw, estemp, gap0, gap, wsi, nznormi, znormi, deltai, deltaip, keri
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsiw, gap0, gap, wsi, nznormi, znormi, deltai, deltaip, keri
|
||||||
USE constants_epw, ONLY : zero
|
USE constants_epw, ONLY : zero
|
||||||
USE constants, ONLY : pi
|
USE constants, ONLY : pi
|
||||||
USE io_eliashberg, ONLY : eliashberg_write_iaxis
|
USE io_eliashberg, ONLY : eliashberg_write_iaxis
|
||||||
|
@ -326,10 +328,10 @@
|
||||||
znormi(iw) = znormi(iw) + wesqrt(iwp) * kernelm
|
znormi(iw) = znormi(iw) + wesqrt(iwp) * kernelm
|
||||||
deltai(iw) = deltai(iw) + desqrt(iwp) * (kernelp - 2.d0 * muc)
|
deltai(iw) = deltai(iw) + desqrt(iwp) * (kernelp - 2.d0 * muc)
|
||||||
ENDDO ! iwp
|
ENDDO ! iwp
|
||||||
znormi(iw) = 1.d0 + pi * estemp(itemp) * znormi(iw) / wsi(iw)
|
znormi(iw) = 1.d0 + pi * gtemp(itemp) * znormi(iw) / wsi(iw)
|
||||||
! Eqs.(34)-(35) in Margine and Giustino, PRB 87, 024505 (2013)
|
! Eqs.(34)-(35) in Margine and Giustino, PRB 87, 024505 (2013)
|
||||||
nznormi(iw) = 1.d0 + pi * estemp(itemp) * nznormi(iw) / wsi(iw)
|
nznormi(iw) = 1.d0 + pi * gtemp(itemp) * nznormi(iw) / wsi(iw)
|
||||||
deltai(iw) = pi * estemp(itemp) * deltai(iw) / znormi(iw)
|
deltai(iw) = pi * gtemp(itemp) * deltai(iw) / znormi(iw)
|
||||||
reldelta = reldelta + ABS(deltai(iw) - deltaold(iw))
|
reldelta = reldelta + ABS(deltai(iw) - deltaold(iw))
|
||||||
absdelta = absdelta + ABS(deltai(iw))
|
absdelta = absdelta + ABS(deltai(iw))
|
||||||
ENDDO ! iw
|
ENDDO ! iw
|
||||||
|
@ -386,7 +388,8 @@
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE io_global, ONLY : stdout
|
USE io_global, ONLY : stdout
|
||||||
USE epwcom, ONLY : nqstep, nsiter, conv_thr_racon, lpade
|
USE epwcom, ONLY : nqstep, nsiter, conv_thr_racon, lpade
|
||||||
USE eliashbergcom, ONLY : nsw, estemp, dwsph, ws, gap, a2f_iso, dsumi, zsumi, &
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsw, dwsph, ws, gap, a2f_iso, dsumi, zsumi, &
|
||||||
delta, deltap, znorm, znormp, gp, gm
|
delta, deltap, znorm, znormp, gp, gm
|
||||||
USE constants_epw, ONLY : ci, zero, czero, cone
|
USE constants_epw, ONLY : ci, zero, czero, cone
|
||||||
USE constants, ONLY : pi
|
USE constants, ONLY : pi
|
||||||
|
@ -461,7 +464,7 @@
|
||||||
DO iw = 1, nsw ! loop over omega
|
DO iw = 1, nsw ! loop over omega
|
||||||
DO iwp = 1, nqstep ! loop over omega_prime
|
DO iwp = 1, nqstep ! loop over omega_prime
|
||||||
IF (iter == 1) THEN
|
IF (iter == 1) THEN
|
||||||
CALL gamma_acont(ws(iw), ws(iwp), estemp(itemp), rgammap, rgammam)
|
CALL gamma_acont(ws(iw), ws(iwp), gtemp(itemp), rgammap, rgammam)
|
||||||
gp(iw, iwp) = rgammap
|
gp(iw, iwp) = rgammap
|
||||||
gm(iw, iwp) = rgammam
|
gm(iw, iwp) = rgammam
|
||||||
ENDIF
|
ENDIF
|
||||||
|
@ -494,8 +497,8 @@
|
||||||
ENDIF
|
ENDIF
|
||||||
delta(iw) = delta(iw) + deltap(i) * esqrt
|
delta(iw) = delta(iw) + deltap(i) * esqrt
|
||||||
ENDDO ! iwp
|
ENDDO ! iwp
|
||||||
znorm(iw) = 1.d0 + pi * (- estemp(itemp) * zsumi(iw) + ci * znorm(iw) * dwsph) / ws(iw)
|
znorm(iw) = 1.d0 + pi * (- gtemp(itemp) * zsumi(iw) + ci * znorm(iw) * dwsph) / ws(iw)
|
||||||
delta(iw) = pi * (estemp(itemp) * dsumi(iw) + ci * delta(iw) * dwsph) / znorm(iw)
|
delta(iw) = pi * (gtemp(itemp) * dsumi(iw) + ci * delta(iw) * dwsph) / znorm(iw)
|
||||||
reldelta = reldelta + ABS(delta(iw) - deltaold(iw))
|
reldelta = reldelta + ABS(delta(iw) - deltaold(iw))
|
||||||
absdelta = absdelta + ABS(delta(iw))
|
absdelta = absdelta + ABS(delta(iw))
|
||||||
ENDDO ! iw
|
ENDDO ! iw
|
||||||
|
@ -632,7 +635,8 @@
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE constants_epw, ONLY : zero
|
USE constants_epw, ONLY : zero
|
||||||
USE constants, ONLY : pi
|
USE constants, ONLY : pi
|
||||||
USE eliashbergcom, ONLY : nsiw, estemp, keri
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsiw, keri
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
!
|
!
|
||||||
|
@ -655,7 +659,7 @@
|
||||||
!
|
!
|
||||||
DO iw = 1, 2 * nsiw(itemp)
|
DO iw = 1, 2 * nsiw(itemp)
|
||||||
n = iw - 1
|
n = iw - 1
|
||||||
omega = DBLE(2 * n) * pi * estemp(itemp)
|
omega = DBLE(2 * n) * pi * gtemp(itemp)
|
||||||
CALL lambdar_iso(omega, lambda_eph)
|
CALL lambdar_iso(omega, lambda_eph)
|
||||||
keri(iw) = lambda_eph
|
keri(iw) = lambda_eph
|
||||||
ENDDO
|
ENDDO
|
||||||
|
@ -830,11 +834,12 @@
|
||||||
USE kinds, ONLY : DP
|
USE kinds, ONLY : DP
|
||||||
USE io_global, ONLY : stdout
|
USE io_global, ONLY : stdout
|
||||||
USE epwcom, ONLY : nsiter, nstemp, broyden_beta, broyden_ndim
|
USE epwcom, ONLY : nsiter, nstemp, broyden_beta, broyden_ndim
|
||||||
USE eliashbergcom, ONLY : nsw, delta, deltap, gap, estemp
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsw, delta, deltap, gap
|
||||||
USE constants_epw, ONLY : kelvin2eV, ci, zero
|
USE constants_epw, ONLY : kelvin2eV, ci, zero
|
||||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||||
USE supercond, ONLY : gen_freqgrid_raxis, eliashberg_grid
|
USE supercond, ONLY : gen_freqgrid_raxis, eliashberg_grid
|
||||||
USE utilities, ONLY : mix_broyden
|
USE utilities, ONLY : mix_broyden
|
||||||
USE printing, ONLY : prtheader_supercond
|
USE printing, ONLY : prtheader_supercond
|
||||||
!
|
!
|
||||||
IMPLICIT NONE
|
IMPLICIT NONE
|
||||||
|
@ -933,7 +938,7 @@
|
||||||
IF (ierr /= 0) CALL errore('eliashberg_iso_raxis', 'Error deallocating dv2', 1)
|
IF (ierr /= 0) CALL errore('eliashberg_iso_raxis', 'Error deallocating dv2', 1)
|
||||||
!
|
!
|
||||||
WRITE(stdout, '(5x, a, i3, a, f8.4, a, a, i3, a, f10.6, a, a, f10.6, a)') &
|
WRITE(stdout, '(5x, a, i3, a, f8.4, a, a, i3, a, f10.6, a, a, f10.6, a)') &
|
||||||
'temp(', itemp, ') = ', estemp(itemp) / kelvin2eV, ' K ', &
|
'temp(', itemp, ') = ', gtemp(itemp) / kelvin2eV, ' K ', &
|
||||||
' gap_edge(', itemp, ') = ', gap(itemp), ' eV ', &
|
' gap_edge(', itemp, ') = ', gap(itemp), ' eV ', &
|
||||||
' Re[delta(1)] = ', REAL(delta(1)), ' eV '
|
' Re[delta(1)] = ', REAL(delta(1)), ' eV '
|
||||||
WRITE(stdout, '(a)') ' '
|
WRITE(stdout, '(a)') ' '
|
||||||
|
@ -975,7 +980,8 @@
|
||||||
USE io_files, ONLY : prefix
|
USE io_files, ONLY : prefix
|
||||||
USE epwcom, ONLY : nswfc, nqstep, nsiter, muc, conv_thr_raxis, &
|
USE epwcom, ONLY : nswfc, nqstep, nsiter, muc, conv_thr_raxis, &
|
||||||
kerwrite, kerread, nstemp
|
kerwrite, kerread, nstemp
|
||||||
USE eliashbergcom, ONLY : nsw, estemp, ws, dws, gap0, gap, bewph, fdwp, &
|
USE elph2, ONLY : gtemp
|
||||||
|
USE eliashbergcom, ONLY : nsw, ws, dws, gap0, gap, bewph, fdwp, &
|
||||||
kp, km, delta, deltap, znorm, wsph
|
kp, km, delta, deltap, znorm, wsph
|
||||||
USE constants_epw, ONLY : kelvin2eV, ci, eps6, zero, czero
|
USE constants_epw, ONLY : kelvin2eV, ci, eps6, zero, czero
|
||||||
USE io_eliashberg, ONLY : eliashberg_write_raxis
|
USE io_eliashberg, ONLY : eliashberg_write_raxis
|
||||||
|
@ -1057,8 +1063,8 @@
|
||||||
! Fermi Dirac distribution
|
! Fermi Dirac distribution
|
||||||
fdwp(iw) = zero
|
fdwp(iw) = zero
|
||||||
DO iw = 1, nsw
|
DO iw = 1, nsw
|
||||||
IF (ABS(estemp(itemp)) > eps6) THEN
|
IF (ABS(gtemp(itemp)) > eps6) THEN
|
||||||
fdwp(iw) = wgauss(-ws(iw) / estemp(itemp), -99)
|
fdwp(iw) = wgauss(-ws(iw) / gtemp(itemp), -99)
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDDO
|
ENDDO
|
||||||
!
|
!
|
||||||
|
@ -1068,8 +1074,8 @@
|
||||||
IF (ierr /= 0) CALL errore('integrate_eliashberg_iso_raxis', 'Error allocating bewph', 1)
|
IF (ierr /= 0) CALL errore('integrate_eliashberg_iso_raxis', 'Error allocating bewph', 1)
|
||||||
bewph(:) = zero
|
bewph(:) = zero
|
||||||
DO iwph = 1, nqstep ! loop over omega (integration variable)
|
DO iwph = 1, nqstep ! loop over omega (integration variable)
|
||||||
IF (ABS(estemp(itemp)) > eps6) THEN
|
IF (ABS(gtemp(itemp)) > eps6) THEN
|
||||||
bewph(iwph) = wgauss(-wsph(iwph) / estemp(itemp), -99)
|
bewph(iwph) = wgauss(-wsph(iwph) / gtemp(itemp), -99)
|
||||||
bewph(iwph) = bewph(iwph) / (1.d0 - 2.d0 * bewph(iwph))
|
bewph(iwph) = bewph(iwph) / (1.d0 - 2.d0 * bewph(iwph))
|
||||||
ENDIF
|
ENDIF
|
||||||
ENDDO
|
ENDDO
|
||||||
|
@ -1078,7 +1084,7 @@
|
||||||
delta(:) = czero
|
delta(:) = czero
|
||||||
znorm(:) = czero
|
znorm(:) = czero
|
||||||
!
|
!
|
||||||
temp = estemp(itemp) / kelvin2eV
|
temp = gtemp(itemp) / kelvin2eV
|
||||||
IF (temp < 10.d0) THEN
|
IF (temp < 10.d0) THEN
|
||||||
WRITE(name1, '(a, a7, f4.2)') TRIM(prefix), '.ker_00', temp
|
WRITE(name1, '(a, a7, f4.2)') TRIM(prefix), '.ker_00', temp
|
||||||
ELSEIF (temp >= 10.d0) THEN
|
ELSEIF (temp >= 10.d0) THEN
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
USE pwcom, ONLY : ef
|
USE pwcom, ONLY : ef
|
||||||
USE elph2, ONLY : ibndmin, etf, nkqf, nkf, dmef, vmef, wf, wqf, &
|
USE elph2, ONLY : ibndmin, etf, nkqf, nkf, dmef, vmef, wf, wqf, &
|
||||||
epf17, nkqtotf, inv_tau_all, inv_tau_allcb, &
|
epf17, nkqtotf, inv_tau_all, inv_tau_allcb, &
|
||||||
xqf, zi_allvb, zi_allcb, nbndfst, nktotf, transp_temp, &
|
xqf, zi_allvb, zi_allcb, nbndfst, nktotf, gtemp, &
|
||||||
lower_bnd
|
lower_bnd
|
||||||
USE constants_epw, ONLY : zero, one, two, ryd2mev, kelvin2eV, ryd2ev, &
|
USE constants_epw, ONLY : zero, one, two, ryd2mev, kelvin2eV, ryd2ev, &
|
||||||
eps6, eps8, eps4
|
eps6, eps8, eps4
|
||||||
|
@ -165,7 +165,7 @@
|
||||||
! loop over temperatures
|
! loop over temperatures
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
!
|
!
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
!
|
!
|
||||||
! SP: Define the inverse so that we can efficiently multiply instead of dividing
|
! SP: Define the inverse so that we can efficiently multiply instead of dividing
|
||||||
!
|
!
|
||||||
|
@ -427,7 +427,7 @@
|
||||||
!
|
!
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
!
|
!
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
WRITE(stdout, '(a,f8.3,a)' ) ' Temperature ', etemp * ryd2ev / kelvin2eV, ' K'
|
WRITE(stdout, '(a,f8.3,a)' ) ' Temperature ', etemp * ryd2ev / kelvin2eV, ' K'
|
||||||
!
|
!
|
||||||
! In case we read another q-file, merge the scattering here
|
! In case we read another q-file, merge the scattering here
|
||||||
|
@ -573,7 +573,7 @@
|
||||||
int_mob, ncarrier, scatread, iterative_bte, vme, assume_metal
|
int_mob, ncarrier, scatread, iterative_bte, vme, assume_metal
|
||||||
USE pwcom, ONLY : ef
|
USE pwcom, ONLY : ef
|
||||||
USE elph2, ONLY : ibndmin, etf, nkf, wkf, dmef, vmef, &
|
USE elph2, ONLY : ibndmin, etf, nkf, wkf, dmef, vmef, &
|
||||||
inv_tau_all, nkqtotf, inv_tau_allcb, transp_temp, &
|
inv_tau_all, nkqtotf, inv_tau_allcb, gtemp, &
|
||||||
zi_allvb, zi_allcb, map_rebal, nbndfst, nktotf
|
zi_allvb, zi_allcb, map_rebal, nbndfst, nktotf
|
||||||
USE constants_epw, ONLY : zero, one, bohr2ang, ryd2ev, &
|
USE constants_epw, ONLY : zero, one, bohr2ang, ryd2ev, &
|
||||||
kelvin2eV, hbar, Ang2m, hbarJ, ang2cm, czero
|
kelvin2eV, hbar, Ang2m, hbarJ, ang2cm, czero
|
||||||
|
@ -722,7 +722,7 @@
|
||||||
! Compute the Fermi level
|
! Compute the Fermi level
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
!
|
!
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
!
|
!
|
||||||
! Lets gather the velocities from all pools
|
! Lets gather the velocities from all pools
|
||||||
#if defined(__MPI)
|
#if defined(__MPI)
|
||||||
|
@ -958,7 +958,7 @@
|
||||||
!
|
!
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
!
|
!
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
!
|
!
|
||||||
IF (itemp == 1) THEN
|
IF (itemp == 1) THEN
|
||||||
!
|
!
|
||||||
|
@ -1093,7 +1093,7 @@
|
||||||
WRITE(stdout, '(5x,a/)') REPEAT('=',67)
|
WRITE(stdout, '(5x,a/)') REPEAT('=',67)
|
||||||
!
|
!
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
! sigma in units of 1/(a.u.) is converted to 1/(Ohm * m)
|
! sigma in units of 1/(a.u.) is converted to 1/(Ohm * m)
|
||||||
IF (mpime == meta_ionode_id) THEN
|
IF (mpime == meta_ionode_id) THEN
|
||||||
WRITE(iufilsigma, '(11E16.8)') ef0(itemp) * ryd2ev, etemp * ryd2ev / kelvin2eV, &
|
WRITE(iufilsigma, '(11E16.8)') ef0(itemp) * ryd2ev, etemp * ryd2ev / kelvin2eV, &
|
||||||
|
@ -1183,7 +1183,7 @@
|
||||||
!
|
!
|
||||||
IF (int_mob .OR. (ncarrier > 1E5)) THEN
|
IF (int_mob .OR. (ncarrier > 1E5)) THEN
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
IF (itemp == 1) THEN
|
IF (itemp == 1) THEN
|
||||||
tdf_sigma(:) = zero
|
tdf_sigma(:) = zero
|
||||||
sigma(:, :) = zero
|
sigma(:, :) = zero
|
||||||
|
@ -1373,7 +1373,7 @@
|
||||||
WRITE(stdout, '(5x,"Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]")')
|
WRITE(stdout, '(5x,"Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]")')
|
||||||
WRITE(stdout, '(5x,a/)') REPEAT('=',67)
|
WRITE(stdout, '(5x,a/)') REPEAT('=',67)
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
IF (mpime == meta_ionode_id) THEN
|
IF (mpime == meta_ionode_id) THEN
|
||||||
! sigma in units of 1/(a.u.) is converted to 1/(Ohm * m)
|
! sigma in units of 1/(a.u.) is converted to 1/(Ohm * m)
|
||||||
IF (ABS(efcb(itemp)) < eps4) THEN
|
IF (ABS(efcb(itemp)) < eps4) THEN
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
USE epwcom, ONLY : mob_maxiter, nstemp, broyden_beta, &
|
USE epwcom, ONLY : mob_maxiter, nstemp, broyden_beta, &
|
||||||
mp_mesh_k, nkf1, nkf2, nkf3
|
mp_mesh_k, nkf1, nkf2, nkf3
|
||||||
USE elph2, ONLY : nkqf, wkf, xkf, nkqtotf, nbndfst, &
|
USE elph2, ONLY : nkqf, wkf, xkf, nkqtotf, nbndfst, &
|
||||||
nktotf, map_rebal, xqf, transp_temp, &
|
nktotf, map_rebal, xqf, gtemp, &
|
||||||
ixkqf_tr, s_bztoibz_full
|
ixkqf_tr, s_bztoibz_full
|
||||||
USE constants_epw, ONLY : zero, one, two, pi, kelvin2eV, ryd2ev, eps10, &
|
USE constants_epw, ONLY : zero, one, two, pi, kelvin2eV, ryd2ev, eps10, &
|
||||||
bohr2ang, ang2cm, hbarJ, eps6, eps8, &
|
bohr2ang, ang2cm, hbarJ, eps6, eps8, &
|
||||||
|
@ -224,7 +224,7 @@
|
||||||
WRITE(stdout, *) 'temp k-index ibnd k-point eig[Ry] F_SERTA '
|
WRITE(stdout, *) 'temp k-index ibnd k-point eig[Ry] F_SERTA '
|
||||||
ENDIF
|
ENDIF
|
||||||
DO itemp = 1, nstemp
|
DO itemp = 1, nstemp
|
||||||
etemp = transp_temp(itemp)
|
etemp = gtemp(itemp)
|
||||||
DO ik = 1, nktotf
|
DO ik = 1, nktotf
|
||||||
DO ibnd = 1, nbndfst
|
DO ibnd = 1, nbndfst
|
||||||
IF (ABS(inv_tau(ibnd, ik, itemp)) > eps160) THEN
|
IF (ABS(inv_tau(ibnd, ik, itemp)) > eps160) THEN
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
parallel_q = .false.
|
parallel_q = .false.
|
||||||
|
|
||||||
fsthick = 15 ! eV
|
fsthick = 15 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 1.0 ! eV
|
degaussw = 1.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 15 ! eV
|
fsthick = 15 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 1.0 ! eV
|
degaussw = 1.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 15 ! eV
|
fsthick = 15 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 1.0 ! eV
|
degaussw = 1.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -36,7 +36,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 15 ! eV
|
fsthick = 15 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 1.0 ! eV
|
degaussw = 1.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -32,7 +32,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 15 ! eV
|
fsthick = 15 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 1.0 ! eV
|
degaussw = 1.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
nw_specfun = 20
|
nw_specfun = 20
|
||||||
|
|
||||||
fsthick = 15 ! eV
|
fsthick = 15 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 1.0 ! eV
|
degaussw = 1.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 15 ! eV
|
fsthick = 15 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 1.0 ! eV
|
degaussw = 1.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 15 ! eV
|
fsthick = 15 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 1.0 ! eV
|
degaussw = 1.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -37,7 +37,7 @@
|
||||||
nw_specfun = 20
|
nw_specfun = 20
|
||||||
|
|
||||||
fsthick = 15 ! eV
|
fsthick = 15 ! eV
|
||||||
eptemp = 300 ! K
|
temps = 300 ! K
|
||||||
degaussw = 1.0 ! eV
|
degaussw = 1.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 1.5 ! eV
|
fsthick = 1.5 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 0.3 ! eV
|
degaussw = 0.3 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -35,7 +35,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 1.5 ! eV
|
fsthick = 1.5 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 0.3 ! eV
|
degaussw = 0.3 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -39,7 +39,7 @@
|
||||||
bnd_cum = 4
|
bnd_cum = 4
|
||||||
|
|
||||||
fsthick = 15 ! eV
|
fsthick = 15 ! eV
|
||||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
temps = 300 ! K (same as PRB 76, 165108)
|
||||||
degaussw = 1.0 ! eV
|
degaussw = 1.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
a2f = .true.
|
a2f = .true.
|
||||||
|
|
||||||
fsthick = 6 ! eV
|
fsthick = 6 ! eV
|
||||||
eptemp = 300 ! K
|
temps = 300 ! K
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
degaussq = 0.05 ! meV
|
degaussq = 0.05 ! meV
|
||||||
assume_metal = .TRUE.
|
assume_metal = .TRUE.
|
||||||
|
|
|
@ -46,7 +46,7 @@
|
||||||
asr_typ = 'crystal'
|
asr_typ = 'crystal'
|
||||||
|
|
||||||
fsthick = 6 ! eV
|
fsthick = 6 ! eV
|
||||||
eptemp = 300 ! K
|
temps = 300 ! K
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
degaussq = 0.05 ! meV
|
degaussq = 0.05 ! meV
|
||||||
assume_metal = .TRUE.
|
assume_metal = .TRUE.
|
||||||
|
|
|
@ -43,7 +43,6 @@
|
||||||
asr_typ = 'crystal'
|
asr_typ = 'crystal'
|
||||||
|
|
||||||
fsthick = 1 ! eV
|
fsthick = 1 ! eV
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.0 ! eV (adaptative smearing)
|
degaussw = 0.0 ! eV (adaptative smearing)
|
||||||
degaussq = 0.05 ! meV
|
degaussq = 0.05 ! meV
|
||||||
assume_metal = .true.
|
assume_metal = .true.
|
||||||
|
@ -61,8 +60,7 @@
|
||||||
restart_step = 50
|
restart_step = 50
|
||||||
selecqread = .false.
|
selecqread = .false.
|
||||||
nstemp = 2
|
nstemp = 2
|
||||||
tempsmin = 100
|
temps = 100 300
|
||||||
tempsmax = 300
|
|
||||||
|
|
||||||
dvscf_dir = './save'
|
dvscf_dir = './save'
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,6 @@
|
||||||
asr_typ = 'crystal'
|
asr_typ = 'crystal'
|
||||||
|
|
||||||
fsthick = 1 ! eV
|
fsthick = 1 ! eV
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.0 ! eV (adaptative smearing)
|
degaussw = 0.0 ! eV (adaptative smearing)
|
||||||
degaussq = 0.05 ! meV
|
degaussq = 0.05 ! meV
|
||||||
assume_metal = .true.
|
assume_metal = .true.
|
||||||
|
@ -61,8 +60,7 @@
|
||||||
restart_step = 50
|
restart_step = 50
|
||||||
selecqread = .true.
|
selecqread = .true.
|
||||||
nstemp = 2
|
nstemp = 2
|
||||||
tempsmin = 100
|
temps = 100 300
|
||||||
tempsmax = 300
|
|
||||||
|
|
||||||
dvscf_dir = './save'
|
dvscf_dir = './save'
|
||||||
|
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 1.2 ! eV
|
fsthick = 1.2 ! eV
|
||||||
eptemp = 1 ! K
|
temps = 1 ! K
|
||||||
degaussw = 0.01 ! eV
|
degaussw = 0.01 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -21,8 +21,7 @@
|
||||||
|
|
||||||
scissor = 0.7
|
scissor = 0.7
|
||||||
nstemp = 5
|
nstemp = 5
|
||||||
tempsmin = 300
|
temps = 300 500
|
||||||
tempsmax = 500
|
|
||||||
|
|
||||||
restart = .true.
|
restart = .true.
|
||||||
restart_step = 1000
|
restart_step = 1000
|
||||||
|
@ -61,7 +60,6 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 2.0 ! eV
|
fsthick = 2.0 ! eV
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.05 ! eV
|
degaussw = 0.05 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
--
|
-
|
||||||
&inputepw
|
&inputepw
|
||||||
prefix = 'si'
|
prefix = 'si'
|
||||||
amass(1) = 28.0855
|
amass(1) = 28.0855
|
||||||
|
@ -21,8 +21,7 @@
|
||||||
|
|
||||||
scissor = 0.7
|
scissor = 0.7
|
||||||
nstemp = 5
|
nstemp = 5
|
||||||
tempsmin = 300
|
temps = 300 500
|
||||||
tempsmax = 500
|
|
||||||
|
|
||||||
restart = .true.
|
restart = .true.
|
||||||
restart_step = 1000
|
restart_step = 1000
|
||||||
|
@ -61,7 +60,6 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 2.0 ! eV
|
fsthick = 2.0 ! eV
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.05 ! eV
|
degaussw = 0.05 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -56,7 +56,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 4.0 ! eV
|
fsthick = 4.0 ! eV
|
||||||
eptemp = 300 ! K
|
temps = 300 ! K
|
||||||
degaussw = 0.5 ! eV
|
degaussw = 0.5 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 2.0 ! eV
|
fsthick = 2.0 ! eV
|
||||||
eptemp = 1 ! K
|
temps = 1 ! K
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -28,8 +28,8 @@
|
||||||
|
|
||||||
scissor = 0.7
|
scissor = 0.7
|
||||||
nstemp = 2
|
nstemp = 2
|
||||||
tempsmin = 400
|
temps = 400 500
|
||||||
tempsmax = 500
|
|
||||||
|
|
||||||
restart = .true.
|
restart = .true.
|
||||||
restart_step = 50
|
restart_step = 50
|
||||||
|
@ -68,7 +68,6 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 4.0
|
fsthick = 4.0
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -28,8 +28,7 @@
|
||||||
|
|
||||||
scissor = 0.7
|
scissor = 0.7
|
||||||
nstemp = 2
|
nstemp = 2
|
||||||
tempsmin = 400
|
temps = 400 500
|
||||||
tempsmax = 500
|
|
||||||
|
|
||||||
restart = .true.
|
restart = .true.
|
||||||
restart_step = 50
|
restart_step = 50
|
||||||
|
@ -68,7 +67,6 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 4.0
|
fsthick = 4.0
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 2.0 ! eV
|
fsthick = 2.0 ! eV
|
||||||
eptemp = 1 ! K
|
temps = 1 ! K
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -28,8 +28,7 @@
|
||||||
|
|
||||||
scissor = 0.7
|
scissor = 0.7
|
||||||
nstemp = 2
|
nstemp = 2
|
||||||
tempsmin = 400
|
temps = 400 500
|
||||||
tempsmax = 500
|
|
||||||
|
|
||||||
restart = .true.
|
restart = .true.
|
||||||
restart_step = 50
|
restart_step = 50
|
||||||
|
@ -68,7 +67,6 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 4.0
|
fsthick = 4.0
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -28,8 +28,7 @@
|
||||||
|
|
||||||
scissor = 0.7
|
scissor = 0.7
|
||||||
nstemp = 2
|
nstemp = 2
|
||||||
tempsmin = 400
|
temps = 400 500
|
||||||
tempsmax = 500
|
|
||||||
|
|
||||||
restart = .true.
|
restart = .true.
|
||||||
restart_step = 50
|
restart_step = 50
|
||||||
|
@ -65,7 +64,6 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 4.0
|
fsthick = 4.0
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 2.0 ! eV
|
fsthick = 2.0 ! eV
|
||||||
eptemp = 1 ! K
|
temps = 1 ! K
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -26,8 +26,7 @@
|
||||||
|
|
||||||
scissor = 0.7
|
scissor = 0.7
|
||||||
nstemp = 2
|
nstemp = 2
|
||||||
tempsmin = 400
|
temps = 400 500
|
||||||
tempsmax = 500
|
|
||||||
|
|
||||||
restart = .true.
|
restart = .true.
|
||||||
restart_step = 50
|
restart_step = 50
|
||||||
|
@ -65,7 +64,6 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 4.0
|
fsthick = 4.0
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -26,8 +26,7 @@
|
||||||
|
|
||||||
scissor = 0.7
|
scissor = 0.7
|
||||||
nstemp = 2
|
nstemp = 2
|
||||||
tempsmin = 400
|
temps = 400 500
|
||||||
tempsmax = 500
|
|
||||||
|
|
||||||
restart = .true.
|
restart = .true.
|
||||||
restart_step = 50
|
restart_step = 50
|
||||||
|
@ -65,7 +64,6 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 0.5
|
fsthick = 0.5
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -26,8 +26,7 @@
|
||||||
|
|
||||||
scissor = 0.7
|
scissor = 0.7
|
||||||
nstemp = 2
|
nstemp = 2
|
||||||
tempsmin = 400
|
temps = 400 500
|
||||||
tempsmax = 500
|
|
||||||
|
|
||||||
restart = .true.
|
restart = .true.
|
||||||
restart_step = 50
|
restart_step = 50
|
||||||
|
@ -65,7 +64,6 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 0.5
|
fsthick = 0.5
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -26,8 +26,7 @@
|
||||||
broyden_beta= 0.7
|
broyden_beta= 0.7
|
||||||
|
|
||||||
nstemp = 1
|
nstemp = 1
|
||||||
tempsmin = 100
|
temps = 100
|
||||||
tempsmax = 200
|
|
||||||
|
|
||||||
restart = .true.
|
restart = .true.
|
||||||
restart_step = 5
|
restart_step = 5
|
||||||
|
@ -64,7 +63,6 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 0.4
|
fsthick = 0.4
|
||||||
eptemp = 1 ! K
|
|
||||||
degaussw = 0.0 ! eV
|
degaussw = 0.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -53,7 +53,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 100.0 ! eV
|
fsthick = 100.0 ! eV
|
||||||
eptemp = 1 ! K
|
temps = 1 ! K
|
||||||
degaussw = 0.01 ! eV
|
degaussw = 0.01 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save/'
|
dvscf_dir = './save/'
|
||||||
|
|
|
@ -29,8 +29,7 @@
|
||||||
epmatkqread = .false.
|
epmatkqread = .false.
|
||||||
|
|
||||||
nstemp = 2
|
nstemp = 2
|
||||||
tempsmin = 100
|
temps = 100 300
|
||||||
tempsmax = 300
|
|
||||||
|
|
||||||
lpolar = .true.
|
lpolar = .true.
|
||||||
etf_mem = 1
|
etf_mem = 1
|
||||||
|
|
|
@ -25,8 +25,7 @@
|
||||||
broyden_beta= 1.0
|
broyden_beta= 1.0
|
||||||
|
|
||||||
nstemp = 2
|
nstemp = 2
|
||||||
tempsmin = 100
|
temps = 100 300
|
||||||
tempsmax = 300
|
|
||||||
|
|
||||||
restart = .true.
|
restart = .true.
|
||||||
restart_step = 50
|
restart_step = 50
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -45,7 +45,7 @@
|
||||||
band_plot = .true.
|
band_plot = .true.
|
||||||
|
|
||||||
fsthick = 3.0
|
fsthick = 3.0
|
||||||
eptemp = 20.0
|
temps = 20.0
|
||||||
degaussw = 0.01
|
degaussw = 0.01
|
||||||
|
|
||||||
specfun_pl = .true.
|
specfun_pl = .true.
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 2.0 ! eV
|
fsthick = 2.0 ! eV
|
||||||
eptemp = 300 ! K
|
temps = 300 ! K
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save'
|
dvscf_dir = './save'
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 2.0 ! eV
|
fsthick = 2.0 ! eV
|
||||||
eptemp = 300 ! K
|
temps = 300 ! K
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save'
|
dvscf_dir = './save'
|
||||||
|
|
|
@ -48,7 +48,7 @@
|
||||||
a2f = .false.
|
a2f = .false.
|
||||||
|
|
||||||
fsthick = 2.0 ! eV
|
fsthick = 2.0 ! eV
|
||||||
eptemp = 300 ! K
|
temps = 300 ! K
|
||||||
degaussw = 0.1 ! eV
|
degaussw = 0.1 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save'
|
dvscf_dir = './save'
|
||||||
|
|
|
@ -44,7 +44,7 @@
|
||||||
a2f = .true.
|
a2f = .true.
|
||||||
|
|
||||||
fsthick = 20 ! eV
|
fsthick = 20 ! eV
|
||||||
eptemp = 500 ! K
|
temps = 500 ! K
|
||||||
degaussw = 0.2 ! eV
|
degaussw = 0.2 ! eV
|
||||||
degaussq = 0.1 ! meV
|
degaussq = 0.1 ! meV
|
||||||
|
|
||||||
|
|
|
@ -47,7 +47,7 @@
|
||||||
a2f = .true.
|
a2f = .true.
|
||||||
|
|
||||||
fsthick = 20 ! eV
|
fsthick = 20 ! eV
|
||||||
eptemp = 500 ! K
|
temps = 500 ! K
|
||||||
degaussw = 0.2 ! eV
|
degaussw = 0.2 ! eV
|
||||||
degaussq = 0.1 ! meV
|
degaussq = 0.1 ! meV
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
Comput. Phys. Commun. 209, 116 (2016)
|
Comput. Phys. Commun. 209, 116 (2016)
|
||||||
|
|
||||||
|
|
||||||
Program EPW v.5.2.0 starts on 1Jul2020 at 11:12: 9
|
Program EPW v.5.2.0 starts on 15Jul2020 at 10:37:19
|
||||||
|
|
||||||
This program is part of the open-source Quantum ESPRESSO suite
|
This program is part of the open-source Quantum ESPRESSO suite
|
||||||
for quantum simulation of materials; please cite
|
for quantum simulation of materials; please cite
|
||||||
|
@ -43,6 +43,8 @@
|
||||||
K-points division: npool = 4
|
K-points division: npool = 4
|
||||||
Fft bands division: nmany = 1
|
Fft bands division: nmany = 1
|
||||||
|
|
||||||
|
Reading supplied temperature list.
|
||||||
|
|
||||||
Reading xml data from directory:
|
Reading xml data from directory:
|
||||||
|
|
||||||
./MgB2.save/
|
./MgB2.save/
|
||||||
|
@ -149,7 +151,7 @@
|
||||||
l(1) = 0
|
l(1) = 0
|
||||||
EPW : 0.10s CPU 0.12s WALL
|
EPW : 0.10s CPU 0.12s WALL
|
||||||
|
|
||||||
EPW : 0.12s CPU 0.14s WALL
|
EPW : 0.13s CPU 0.15s WALL
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wannierization on 3 x 3 x 3 electronic grid
|
Wannierization on 3 x 3 x 3 electronic grid
|
||||||
|
@ -212,7 +214,7 @@
|
||||||
( 0.25000 0.43301 0.66488) : 1.07400
|
( 0.25000 0.43301 0.66488) : 1.07400
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
WANNIER : 1.14s CPU 1.22s WALL ( 1 calls)
|
WANNIER : 1.54s CPU 1.62s WALL ( 1 calls)
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
|
|
||||||
Dipole matrix elements calculated
|
Dipole matrix elements calculated
|
||||||
|
@ -221,7 +223,7 @@
|
||||||
Calculating kgmap
|
Calculating kgmap
|
||||||
|
|
||||||
Progress kgmap: ########################################
|
Progress kgmap: ########################################
|
||||||
kmaps : 0.02s CPU 0.06s WALL ( 1 calls)
|
kmaps : 0.02s CPU 0.05s WALL ( 1 calls)
|
||||||
Symmetries of Bravais lattice: 24
|
Symmetries of Bravais lattice: 24
|
||||||
Symmetries of crystal: 24
|
Symmetries of crystal: 24
|
||||||
|
|
||||||
|
@ -393,8 +395,8 @@
|
||||||
Writing Hamiltonian, Dynamical matrix and EP vertex in Wann rep to file
|
Writing Hamiltonian, Dynamical matrix and EP vertex in Wann rep to file
|
||||||
|
|
||||||
===================================================================
|
===================================================================
|
||||||
Memory usage: VmHWM = 88Mb
|
Memory usage: VmHWM = 44Mb
|
||||||
VmPeak = 690Mb
|
VmPeak = 618Mb
|
||||||
===================================================================
|
===================================================================
|
||||||
|
|
||||||
Using uniform q-mesh: 6 6 6
|
Using uniform q-mesh: 6 6 6
|
||||||
|
@ -431,16 +433,16 @@
|
||||||
|
|
||||||
Progression iq (fine) = 100/ 216
|
Progression iq (fine) = 100/ 216
|
||||||
Progression iq (fine) = 200/ 216
|
Progression iq (fine) = 200/ 216
|
||||||
Fermi level (eV) = 0.766447471440237D+01
|
Fermi level (eV) = 0.766447471508788D+01
|
||||||
DOS(states/spin/eV/Unit Cell) = 0.913085695277060D+00
|
DOS(states/spin/eV/Unit Cell) = 0.913085693176451D+00
|
||||||
Electron smearing (eV) = 0.100000000000000D+00
|
Electron smearing (eV) = 0.100000000000000D+00
|
||||||
Fermi window (eV) = 0.200000000000000D+02
|
Fermi window (eV) = 0.200000000000000D+02
|
||||||
|
|
||||||
Finish writing .ephmat files
|
Finish writing .ephmat files
|
||||||
|
|
||||||
===================================================================
|
===================================================================
|
||||||
Memory usage: VmHWM = 88Mb
|
Memory usage: VmHWM = 44Mb
|
||||||
VmPeak = 690Mb
|
VmPeak = 618Mb
|
||||||
===================================================================
|
===================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@ -451,8 +453,8 @@
|
||||||
|
|
||||||
Finish reading freq file
|
Finish reading freq file
|
||||||
|
|
||||||
Fermi level (eV) = 7.6644747144E+00
|
Fermi level (eV) = 7.6644747151E+00
|
||||||
DOS(states/spin/eV/Unit Cell) = 9.1308569528E-01
|
DOS(states/spin/eV/Unit Cell) = 9.1308569318E-01
|
||||||
Electron smearing (eV) = 1.0000000000E-01
|
Electron smearing (eV) = 1.0000000000E-01
|
||||||
Fermi window (eV) = 2.0000000000E+01
|
Fermi window (eV) = 2.0000000000E+01
|
||||||
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
||||||
|
@ -474,14 +476,14 @@
|
||||||
|
|
||||||
Finish reading .ephmat files
|
Finish reading .ephmat files
|
||||||
|
|
||||||
lambda_max = 126.3925342 lambda_k_max = 3.2058369
|
lambda_max = 126.3963398 lambda_k_max = 3.2058367
|
||||||
|
|
||||||
|
|
||||||
Finish reading a2f file
|
Finish reading a2f file
|
||||||
|
|
||||||
Electron-phonon coupling strength = 0.8715332
|
Electron-phonon coupling strength = 0.8715331
|
||||||
|
|
||||||
Estimated Allen-Dynes Tc = 26.410311 K for muc = 0.16000
|
Estimated Allen-Dynes Tc = 26.410306 K for muc = 0.16000
|
||||||
|
|
||||||
Estimated BCS superconducting gap = 0.004006 eV
|
Estimated BCS superconducting gap = 0.004006 eV
|
||||||
|
|
||||||
|
@ -494,12 +496,12 @@
|
||||||
Cutoff frequency wscut = 0.5076
|
Cutoff frequency wscut = 0.5076
|
||||||
|
|
||||||
iter ethr znormi [eV] deltai [eV]
|
iter ethr znormi [eV] deltai [eV]
|
||||||
1 2.532354E+00 1.842516E+00 4.449680E-03
|
1 2.532354E+00 1.842516E+00 4.449679E-03
|
||||||
2 7.635767E-02 1.841969E+00 4.682792E-03
|
2 7.635767E-02 1.841969E+00 4.682791E-03
|
||||||
3 4.520722E-02 1.840749E+00 4.928651E-03
|
3 4.520722E-02 1.840749E+00 4.928650E-03
|
||||||
4 3.432847E-02 1.839600E+00 5.113775E-03
|
4 3.432847E-02 1.839600E+00 5.113774E-03
|
||||||
5 7.511482E-02 1.837146E+00 5.503711E-03
|
5 7.511483E-02 1.837146E+00 5.503710E-03
|
||||||
6 1.990148E-03 1.837113E+00 5.510305E-03
|
6 1.990152E-03 1.837113E+00 5.510304E-03
|
||||||
Convergence was reached in nsiter = 6
|
Convergence was reached in nsiter = 6
|
||||||
|
|
||||||
iaxis_imag : 0.00s CPU 0.01s WALL ( 1 calls)
|
iaxis_imag : 0.00s CPU 0.01s WALL ( 1 calls)
|
||||||
|
@ -509,10 +511,10 @@
|
||||||
Cutoff frequency wscut = 0.5000
|
Cutoff frequency wscut = 0.5000
|
||||||
|
|
||||||
pade Re[znorm] [eV] Re[delta] [eV]
|
pade Re[znorm] [eV] Re[delta] [eV]
|
||||||
56 1.839946E+00 5.526960E-03
|
56 1.838340E+00 5.526959E-03
|
||||||
Convergence was reached for N = 56 Pade approximants
|
Convergence was reached for N = 56 Pade approximants
|
||||||
|
|
||||||
raxis_pade : 0.01s CPU 0.03s WALL ( 1 calls)
|
raxis_pade : 0.01s CPU 0.04s WALL ( 1 calls)
|
||||||
|
|
||||||
|
|
||||||
Analytic continuation of isotropic Eliashberg equations from imaginary-axis to real-axis
|
Analytic continuation of isotropic Eliashberg equations from imaginary-axis to real-axis
|
||||||
|
@ -521,44 +523,44 @@
|
||||||
Cutoff frequency wscut = 0.5000
|
Cutoff frequency wscut = 0.5000
|
||||||
|
|
||||||
iter ethr Re[znorm] [eV] Re[delta] [eV]
|
iter ethr Re[znorm] [eV] Re[delta] [eV]
|
||||||
1 1.397095E-01 1.838880E+00 5.530900E-03
|
1 1.657058E-01 1.838880E+00 5.530899E-03
|
||||||
2 2.413655E-02 1.838880E+00 5.530900E-03
|
2 2.794971E-02 1.838880E+00 5.530899E-03
|
||||||
3 1.306278E-02 1.838880E+00 5.530900E-03
|
3 1.383756E-02 1.838880E+00 5.530899E-03
|
||||||
4 3.909383E-03 1.838880E+00 5.530900E-03
|
4 3.575528E-03 1.838880E+00 5.530899E-03
|
||||||
Convergence was reached in nsiter = 4
|
Convergence was reached in nsiter = 4
|
||||||
|
|
||||||
raxis_acon : 1.34s CPU 1.36s WALL ( 1 calls)
|
raxis_acon : 1.29s CPU 1.32s WALL ( 1 calls)
|
||||||
|
|
||||||
itemp = 1 total cpu time : 1.4 secs
|
itemp = 1 total cpu time : 1.4 secs
|
||||||
|
|
||||||
Unfolding on the coarse grid
|
Unfolding on the coarse grid
|
||||||
elphon_wrap : 11.74s CPU 13.22s WALL ( 1 calls)
|
elphon_wrap : 13.53s CPU 15.05s WALL ( 1 calls)
|
||||||
|
|
||||||
INITIALIZATION:
|
INITIALIZATION:
|
||||||
|
|
||||||
set_drhoc : 0.19s CPU 0.19s WALL ( 28 calls)
|
set_drhoc : 0.36s CPU 0.36s WALL ( 28 calls)
|
||||||
init_vloc : 0.00s CPU 0.00s WALL ( 1 calls)
|
init_vloc : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||||
init_us_1 : 0.01s CPU 0.01s WALL ( 2 calls)
|
init_us_1 : 0.01s CPU 0.01s WALL ( 2 calls)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Electron-Phonon interpolation
|
Electron-Phonon interpolation
|
||||||
ephwann : 2.98s CPU 4.69s WALL ( 1 calls)
|
ephwann : 1.59s CPU 3.57s WALL ( 1 calls)
|
||||||
ep-interp : 2.82s CPU 4.46s WALL ( 216 calls)
|
ep-interp : 1.46s CPU 3.39s WALL ( 216 calls)
|
||||||
|
|
||||||
Ham: step 1 : 0.00s CPU 0.00s WALL ( 1 calls)
|
Ham: step 1 : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||||
Ham: step 2 : 0.00s CPU 0.00s WALL ( 1 calls)
|
Ham: step 2 : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||||
ep: step 1 : 0.00s CPU 0.00s WALL ( 243 calls)
|
ep: step 1 : 0.00s CPU 0.00s WALL ( 243 calls)
|
||||||
ep: step 2 : 48.44s CPU 50.28s WALL ( 1 calls)
|
ep: step 2 : 64.23s CPU 66.42s WALL ( 1 calls)
|
||||||
DynW2B : 0.01s CPU 0.01s WALL ( 216 calls)
|
DynW2B : 0.01s CPU 0.01s WALL ( 216 calls)
|
||||||
HamW2B : 0.04s CPU 0.04s WALL ( 3045 calls)
|
HamW2B : 0.05s CPU 0.05s WALL ( 3045 calls)
|
||||||
ephW2Bp : 2.31s CPU 2.32s WALL ( 216 calls)
|
ephW2Bp : 1.01s CPU 1.02s WALL ( 216 calls)
|
||||||
ephW2B : 0.03s CPU 0.03s WALL ( 1512 calls)
|
ephW2B : 0.04s CPU 0.04s WALL ( 1512 calls)
|
||||||
|
|
||||||
ELIASHBERG : 45.54s CPU 45.69s WALL ( 1 calls)
|
ELIASHBERG : 62.69s CPU 62.90s WALL ( 1 calls)
|
||||||
|
|
||||||
Total program execution
|
Total program execution
|
||||||
EPW : 1m 1.52s CPU 1m 4.96s WALL
|
EPW : 1m19.48s CPU 1m23.31s WALL
|
||||||
|
|
||||||
|
|
||||||
Please consider citing:
|
Please consider citing:
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
Comput. Phys. Commun. 209, 116 (2016)
|
Comput. Phys. Commun. 209, 116 (2016)
|
||||||
|
|
||||||
|
|
||||||
Program EPW v.5.2.0 starts on 1Jul2020 at 11:13:15
|
Program EPW v.5.2.0 starts on 15Jul2020 at 10:38:43
|
||||||
|
|
||||||
This program is part of the open-source Quantum ESPRESSO suite
|
This program is part of the open-source Quantum ESPRESSO suite
|
||||||
for quantum simulation of materials; please cite
|
for quantum simulation of materials; please cite
|
||||||
|
@ -43,6 +43,8 @@
|
||||||
K-points division: npool = 4
|
K-points division: npool = 4
|
||||||
Fft bands division: nmany = 1
|
Fft bands division: nmany = 1
|
||||||
|
|
||||||
|
Reading supplied temperature list.
|
||||||
|
|
||||||
Reading xml data from directory:
|
Reading xml data from directory:
|
||||||
|
|
||||||
./MgB2.save/
|
./MgB2.save/
|
||||||
|
@ -147,9 +149,9 @@
|
||||||
Generated by new atomic code, or converted to UPF format
|
Generated by new atomic code, or converted to UPF format
|
||||||
Using radial grid of 157 points, 1 beta functions with:
|
Using radial grid of 157 points, 1 beta functions with:
|
||||||
l(1) = 0
|
l(1) = 0
|
||||||
EPW : 0.14s CPU 0.17s WALL
|
EPW : 0.08s CPU 0.11s WALL
|
||||||
|
|
||||||
EPW : 0.15s CPU 0.19s WALL
|
EPW : 0.12s CPU 0.14s WALL
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Wannierization on 3 x 3 x 3 electronic grid
|
Wannierization on 3 x 3 x 3 electronic grid
|
||||||
|
@ -212,7 +214,7 @@
|
||||||
( 0.25000 0.43301 0.66488) : 1.07400
|
( 0.25000 0.43301 0.66488) : 1.07400
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
WANNIER : 1.11s CPU 1.18s WALL ( 1 calls)
|
WANNIER : 1.54s CPU 1.62s WALL ( 1 calls)
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
|
|
||||||
Dipole matrix elements calculated
|
Dipole matrix elements calculated
|
||||||
|
@ -221,7 +223,7 @@
|
||||||
Calculating kgmap
|
Calculating kgmap
|
||||||
|
|
||||||
Progress kgmap: ########################################
|
Progress kgmap: ########################################
|
||||||
kmaps : 0.03s CPU 0.06s WALL ( 1 calls)
|
kmaps : 0.03s CPU 0.26s WALL ( 1 calls)
|
||||||
Symmetries of Bravais lattice: 24
|
Symmetries of Bravais lattice: 24
|
||||||
Symmetries of crystal: 24
|
Symmetries of crystal: 24
|
||||||
|
|
||||||
|
@ -389,12 +391,22 @@
|
||||||
Bloch2wane: 26 / 27
|
Bloch2wane: 26 / 27
|
||||||
Bloch2wane: 27 / 27
|
Bloch2wane: 27 / 27
|
||||||
|
|
||||||
|
Bloch2wanp: 1 / 10
|
||||||
|
Bloch2wanp: 2 / 10
|
||||||
|
Bloch2wanp: 3 / 10
|
||||||
|
Bloch2wanp: 4 / 10
|
||||||
|
Bloch2wanp: 5 / 10
|
||||||
|
Bloch2wanp: 6 / 10
|
||||||
|
Bloch2wanp: 7 / 10
|
||||||
|
Bloch2wanp: 8 / 10
|
||||||
|
Bloch2wanp: 9 / 10
|
||||||
|
Bloch2wanp: 10 / 10
|
||||||
|
|
||||||
Writing Hamiltonian, Dynamical matrix and EP vertex in Wann rep to file
|
Writing Hamiltonian, Dynamical matrix and EP vertex in Wann rep to file
|
||||||
|
|
||||||
===================================================================
|
===================================================================
|
||||||
Memory usage: VmHWM = 88Mb
|
Memory usage: VmHWM = 40Mb
|
||||||
VmPeak = 691Mb
|
VmPeak = 636Mb
|
||||||
===================================================================
|
===================================================================
|
||||||
|
|
||||||
Using uniform q-mesh: 6 6 6
|
Using uniform q-mesh: 6 6 6
|
||||||
|
@ -424,8 +436,8 @@
|
||||||
|
|
||||||
All q-points are done, no need to restart !!
|
All q-points are done, no need to restart !!
|
||||||
===================================================================
|
===================================================================
|
||||||
Memory usage: VmHWM = 88Mb
|
Memory usage: VmHWM = 40Mb
|
||||||
VmPeak = 691Mb
|
VmPeak = 636Mb
|
||||||
===================================================================
|
===================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@ -436,8 +448,8 @@
|
||||||
|
|
||||||
Finish reading freq file
|
Finish reading freq file
|
||||||
|
|
||||||
Fermi level (eV) = 7.6644747144E+00
|
Fermi level (eV) = 7.6644747151E+00
|
||||||
DOS(states/spin/eV/Unit Cell) = 9.1308569528E-01
|
DOS(states/spin/eV/Unit Cell) = 9.1308569318E-01
|
||||||
Electron smearing (eV) = 1.0000000000E-01
|
Electron smearing (eV) = 1.0000000000E-01
|
||||||
Fermi window (eV) = 2.0000000000E+01
|
Fermi window (eV) = 2.0000000000E+01
|
||||||
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
||||||
|
@ -459,11 +471,11 @@
|
||||||
|
|
||||||
Finish reading .ephmat files
|
Finish reading .ephmat files
|
||||||
|
|
||||||
lambda_max = 126.3925342 lambda_k_max = 3.2058369
|
lambda_max = 126.3963398 lambda_k_max = 3.2058367
|
||||||
|
|
||||||
Electron-phonon coupling strength = 0.8715332
|
Electron-phonon coupling strength = 0.8715331
|
||||||
|
|
||||||
Estimated Allen-Dynes Tc = 26.410310 K for muc = 0.16000
|
Estimated Allen-Dynes Tc = 26.410306 K for muc = 0.16000
|
||||||
|
|
||||||
Estimated BCS superconducting gap = 0.004006 eV
|
Estimated BCS superconducting gap = 0.004006 eV
|
||||||
|
|
||||||
|
@ -478,56 +490,56 @@
|
||||||
|
|
||||||
Size of allocated memory per pool: ~= 0.0379 Gb
|
Size of allocated memory per pool: ~= 0.0379 Gb
|
||||||
iter ethr znormi [eV] deltai [eV]
|
iter ethr znormi [eV] deltai [eV]
|
||||||
1 2.322910E+00 1.842480E+00 5.100456E-03
|
1 2.322910E+00 1.842480E+00 5.100455E-03
|
||||||
2 1.037702E-01 1.838418E+00 5.781253E-03
|
2 1.037702E-01 1.838418E+00 5.781252E-03
|
||||||
3 1.129234E-01 1.832844E+00 6.595684E-03
|
3 1.129234E-01 1.832844E+00 6.595683E-03
|
||||||
4 9.043058E-02 1.828321E+00 7.220061E-03
|
4 9.043058E-02 1.828321E+00 7.220060E-03
|
||||||
5 1.666690E-01 1.817858E+00 8.456634E-03
|
5 1.666691E-01 1.817858E+00 8.456633E-03
|
||||||
6 8.954464E-02 1.823347E+00 7.861750E-03
|
6 8.954472E-02 1.823346E+00 7.861748E-03
|
||||||
7 1.235697E-02 1.822681E+00 7.938656E-03
|
7 1.235698E-02 1.822681E+00 7.938655E-03
|
||||||
8 4.779288E-03 1.822416E+00 7.973884E-03
|
8 4.779268E-03 1.822416E+00 7.973883E-03
|
||||||
Convergence was reached in nsiter = 8
|
Convergence was reached in nsiter = 8
|
||||||
|
|
||||||
iaxis_imag : 23.55s CPU 23.63s WALL ( 1 calls)
|
iaxis_imag : 25.22s CPU 25.24s WALL ( 1 calls)
|
||||||
|
|
||||||
|
|
||||||
Pade approximant of anisotropic Eliashberg equations from imaginary-axis to real-axis
|
Pade approximant of anisotropic Eliashberg equations from imaginary-axis to real-axis
|
||||||
Cutoff frequency wscut = 0.5000
|
Cutoff frequency wscut = 0.5000
|
||||||
|
|
||||||
pade Re[znorm] [eV] Re[delta] [eV]
|
pade Re[znorm] [eV] Re[delta] [eV]
|
||||||
56 1.677487E+00 7.373417E-03
|
56 1.677562E+00 7.373432E-03
|
||||||
|
|
||||||
Convergence was reached for N = 56 Pade approximants
|
Convergence was reached for N = 56 Pade approximants
|
||||||
|
|
||||||
raxis_pade : 0.08s CPU 0.09s WALL ( 1 calls)
|
raxis_pade : 0.10s CPU 0.11s WALL ( 1 calls)
|
||||||
|
|
||||||
itemp = 1 total cpu time : 23.73 secs
|
itemp = 1 total cpu time : 25.35 secs
|
||||||
|
|
||||||
|
|
||||||
Unfolding on the coarse grid
|
Unfolding on the coarse grid
|
||||||
elphon_wrap : 11.70s CPU 12.77s WALL ( 1 calls)
|
elphon_wrap : 13.55s CPU 15.17s WALL ( 1 calls)
|
||||||
|
|
||||||
INITIALIZATION:
|
INITIALIZATION:
|
||||||
|
|
||||||
set_drhoc : 0.19s CPU 0.20s WALL ( 28 calls)
|
set_drhoc : 0.36s CPU 0.36s WALL ( 28 calls)
|
||||||
init_vloc : 0.00s CPU 0.00s WALL ( 1 calls)
|
init_vloc : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||||
init_us_1 : 0.01s CPU 0.01s WALL ( 2 calls)
|
init_us_1 : 0.01s CPU 0.01s WALL ( 2 calls)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Electron-Phonon interpolation
|
Electron-Phonon interpolation
|
||||||
ephwann : 0.15s CPU 0.21s WALL ( 1 calls)
|
ephwann : 0.14s CPU 1.27s WALL ( 1 calls)
|
||||||
|
|
||||||
Ham: step 1 : 0.00s CPU 0.00s WALL ( 1 calls)
|
Ham: step 1 : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||||
Ham: step 2 : 0.02s CPU 0.02s WALL ( 1 calls)
|
Ham: step 2 : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||||
ep: step 1 : 0.00s CPU 0.00s WALL ( 243 calls)
|
ep: step 1 : 0.00s CPU 0.00s WALL ( 243 calls)
|
||||||
ep: step 2 : 67.82s CPU 68.74s WALL ( 1 calls)
|
ep: step 2 : 86.66s CPU 87.79s WALL ( 1 calls)
|
||||||
HamW2B : 0.00s CPU 0.00s WALL ( 21 calls)
|
HamW2B : 0.00s CPU 0.00s WALL ( 21 calls)
|
||||||
|
|
||||||
ELIASHBERG : 67.74s CPU 68.60s WALL ( 1 calls)
|
ELIASHBERG : 86.56s CPU 86.57s WALL ( 1 calls)
|
||||||
|
|
||||||
Total program execution
|
Total program execution
|
||||||
EPW : 1m20.85s CPU 1m22.95s WALL
|
EPW : 1m41.91s CPU 1m44.77s WALL
|
||||||
|
|
||||||
|
|
||||||
Please consider citing:
|
Please consider citing:
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
Comput. Phys. Commun. 209, 116 (2016)
|
Comput. Phys. Commun. 209, 116 (2016)
|
||||||
|
|
||||||
|
|
||||||
Program EPW v.5.2.0 starts on 1Jul2020 at 11:14:40
|
Program EPW v.5.2.0 starts on 15Jul2020 at 10:40:28
|
||||||
|
|
||||||
This program is part of the open-source Quantum ESPRESSO suite
|
This program is part of the open-source Quantum ESPRESSO suite
|
||||||
for quantum simulation of materials; please cite
|
for quantum simulation of materials; please cite
|
||||||
|
@ -43,6 +43,8 @@
|
||||||
K-points division: npool = 4
|
K-points division: npool = 4
|
||||||
Fft bands division: nmany = 1
|
Fft bands division: nmany = 1
|
||||||
|
|
||||||
|
Reading supplied temperature list.
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
RESTART - RESTART - RESTART - RESTART
|
RESTART - RESTART - RESTART - RESTART
|
||||||
Restart is done without reading PWSCF save file.
|
Restart is done without reading PWSCF save file.
|
||||||
|
@ -89,9 +91,9 @@
|
||||||
G cutoff = 0.0000 ( 0 G-vectors) FFT grid: ( 0, 0, 0)
|
G cutoff = 0.0000 ( 0 G-vectors) FFT grid: ( 0, 0, 0)
|
||||||
number of k points= 0
|
number of k points= 0
|
||||||
cart. coord. in units 2pi/a_0
|
cart. coord. in units 2pi/a_0
|
||||||
EPW : 0.00s CPU 0.05s WALL
|
EPW : 0.00s CPU 0.01s WALL
|
||||||
|
|
||||||
EPW : 0.00s CPU 0.05s WALL
|
EPW : 0.00s CPU 0.01s WALL
|
||||||
|
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
|
@ -116,8 +118,8 @@
|
||||||
Finished reading Wann rep data from file
|
Finished reading Wann rep data from file
|
||||||
|
|
||||||
===================================================================
|
===================================================================
|
||||||
Memory usage: VmHWM = 71Mb
|
Memory usage: VmHWM = 21Mb
|
||||||
VmPeak = 667Mb
|
VmPeak = 602Mb
|
||||||
===================================================================
|
===================================================================
|
||||||
|
|
||||||
Using uniform q-mesh: 6 6 6
|
Using uniform q-mesh: 6 6 6
|
||||||
|
@ -147,8 +149,8 @@
|
||||||
|
|
||||||
All q-points are done, no need to restart !!
|
All q-points are done, no need to restart !!
|
||||||
===================================================================
|
===================================================================
|
||||||
Memory usage: VmHWM = 72Mb
|
Memory usage: VmHWM = 23Mb
|
||||||
VmPeak = 667Mb
|
VmPeak = 629Mb
|
||||||
===================================================================
|
===================================================================
|
||||||
|
|
||||||
|
|
||||||
|
@ -159,8 +161,8 @@
|
||||||
|
|
||||||
Finish reading freq file
|
Finish reading freq file
|
||||||
|
|
||||||
Fermi level (eV) = 7.6644747144E+00
|
Fermi level (eV) = 7.6644747151E+00
|
||||||
DOS(states/spin/eV/Unit Cell) = 9.1308569528E-01
|
DOS(states/spin/eV/Unit Cell) = 9.1308569318E-01
|
||||||
Electron smearing (eV) = 1.0000000000E-01
|
Electron smearing (eV) = 1.0000000000E-01
|
||||||
Fermi window (eV) = 2.0000000000E+01
|
Fermi window (eV) = 2.0000000000E+01
|
||||||
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
||||||
|
@ -182,11 +184,11 @@
|
||||||
|
|
||||||
Finish reading .ephmat files
|
Finish reading .ephmat files
|
||||||
|
|
||||||
lambda_max = 126.3925342 lambda_k_max = 3.2058369
|
lambda_max = 126.3963398 lambda_k_max = 3.2058367
|
||||||
|
|
||||||
Electron-phonon coupling strength = 0.8715332
|
Electron-phonon coupling strength = 0.8715331
|
||||||
|
|
||||||
Estimated Allen-Dynes Tc = 26.410310 K for muc = 0.16000
|
Estimated Allen-Dynes Tc = 26.410306 K for muc = 0.16000
|
||||||
|
|
||||||
Estimated BCS superconducting gap = 0.004006 eV
|
Estimated BCS superconducting gap = 0.004006 eV
|
||||||
|
|
||||||
|
@ -201,30 +203,30 @@
|
||||||
|
|
||||||
Size of allocated memory per pool: ~= 0.0357 Gb
|
Size of allocated memory per pool: ~= 0.0357 Gb
|
||||||
iter ethr znormi [eV] deltai [eV]
|
iter ethr znormi [eV] deltai [eV]
|
||||||
1 2.324585E+00 1.842446E+00 5.071400E-03
|
1 2.324585E+00 1.842446E+00 5.071399E-03
|
||||||
2 1.050021E-01 1.838424E+00 5.747030E-03
|
2 1.050021E-01 1.838424E+00 5.747029E-03
|
||||||
3 1.139816E-01 1.832860E+00 6.561657E-03
|
3 1.139816E-01 1.832860E+00 6.561656E-03
|
||||||
4 8.845982E-02 1.828464E+00 7.170242E-03
|
4 8.845982E-02 1.828464E+00 7.170240E-03
|
||||||
5 1.774058E-01 1.817191E+00 8.498221E-03
|
5 1.774059E-01 1.817191E+00 8.498220E-03
|
||||||
6 9.894098E-02 1.823272E+00 7.840917E-03
|
6 9.894108E-02 1.823272E+00 7.840916E-03
|
||||||
7 1.447663E-02 1.822481E+00 7.932340E-03
|
7 1.447665E-02 1.822481E+00 7.932339E-03
|
||||||
8 2.983707E-03 1.822322E+00 7.955351E-03
|
8 2.983689E-03 1.822322E+00 7.955349E-03
|
||||||
Convergence was reached in nsiter = 8
|
Convergence was reached in nsiter = 8
|
||||||
|
|
||||||
iaxis_imag : 20.51s CPU 20.58s WALL ( 1 calls)
|
iaxis_imag : 22.41s CPU 22.46s WALL ( 1 calls)
|
||||||
|
|
||||||
|
|
||||||
Pade approximant of anisotropic Eliashberg equations from imaginary-axis to real-axis
|
Pade approximant of anisotropic Eliashberg equations from imaginary-axis to real-axis
|
||||||
Cutoff frequency wscut = 0.5000
|
Cutoff frequency wscut = 0.5000
|
||||||
|
|
||||||
pade Re[znorm] [eV] Re[delta] [eV]
|
pade Re[znorm] [eV] Re[delta] [eV]
|
||||||
52 1.678092E+00 7.358501E-03
|
52 1.678152E+00 7.358502E-03
|
||||||
|
|
||||||
Convergence was reached for N = 52 Pade approximants
|
Convergence was reached for N = 52 Pade approximants
|
||||||
|
|
||||||
raxis_pade : 0.08s CPU 0.09s WALL ( 1 calls)
|
raxis_pade : 0.09s CPU 0.10s WALL ( 1 calls)
|
||||||
|
|
||||||
itemp = 1 total cpu time : 20.67 secs
|
itemp = 1 total cpu time : 22.57 secs
|
||||||
|
|
||||||
|
|
||||||
Unfolding on the coarse grid
|
Unfolding on the coarse grid
|
||||||
|
@ -236,14 +238,14 @@
|
||||||
|
|
||||||
|
|
||||||
Electron-Phonon interpolation
|
Electron-Phonon interpolation
|
||||||
ephwann : 0.07s CPU 0.08s WALL ( 1 calls)
|
ephwann : 0.06s CPU 0.07s WALL ( 1 calls)
|
||||||
|
|
||||||
HamW2B : 0.00s CPU 0.00s WALL ( 21 calls)
|
HamW2B : 0.00s CPU 0.00s WALL ( 21 calls)
|
||||||
|
|
||||||
ELIASHBERG : 64.43s CPU 64.56s WALL ( 1 calls)
|
ELIASHBERG : 83.83s CPU 83.86s WALL ( 1 calls)
|
||||||
|
|
||||||
Total program execution
|
Total program execution
|
||||||
EPW : 1m 4.50s CPU 1m 4.70s WALL
|
EPW : 1m23.89s CPU 1m23.94s WALL
|
||||||
|
|
||||||
|
|
||||||
Please consider citing:
|
Please consider citing:
|
||||||
|
|
|
@ -27,7 +27,7 @@
|
||||||
Comput. Phys. Commun. 209, 116 (2016)
|
Comput. Phys. Commun. 209, 116 (2016)
|
||||||
|
|
||||||
|
|
||||||
Program EPW v.5.2.0 starts on 1Jul2020 at 11:15:45
|
Program EPW v.5.2.0 starts on 15Jul2020 at 10:41:53
|
||||||
|
|
||||||
This program is part of the open-source Quantum ESPRESSO suite
|
This program is part of the open-source Quantum ESPRESSO suite
|
||||||
for quantum simulation of materials; please cite
|
for quantum simulation of materials; please cite
|
||||||
|
@ -43,6 +43,8 @@
|
||||||
K-points division: npool = 4
|
K-points division: npool = 4
|
||||||
Fft bands division: nmany = 1
|
Fft bands division: nmany = 1
|
||||||
|
|
||||||
|
Reading supplied temperature list.
|
||||||
|
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
RESTART - RESTART - RESTART - RESTART
|
RESTART - RESTART - RESTART - RESTART
|
||||||
Restart is done without reading PWSCF save file.
|
Restart is done without reading PWSCF save file.
|
||||||
|
@ -97,8 +99,8 @@
|
||||||
|
|
||||||
Finish reading freq file
|
Finish reading freq file
|
||||||
|
|
||||||
Fermi level (eV) = 7.6644747144E+00
|
Fermi level (eV) = 7.6644747151E+00
|
||||||
DOS(states/spin/eV/Unit Cell) = 9.1308569528E-01
|
DOS(states/spin/eV/Unit Cell) = 9.1308569318E-01
|
||||||
Electron smearing (eV) = 1.0000000000E-01
|
Electron smearing (eV) = 1.0000000000E-01
|
||||||
Fermi window (eV) = 2.0000000000E+01
|
Fermi window (eV) = 2.0000000000E+01
|
||||||
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
||||||
|
@ -120,15 +122,19 @@
|
||||||
|
|
||||||
Finish reading .ephmat files
|
Finish reading .ephmat files
|
||||||
|
|
||||||
lambda_max = 126.3925342 lambda_k_max = 3.2058369
|
lambda_max = 126.3963398 lambda_k_max = 3.2058367
|
||||||
|
|
||||||
Electron-phonon coupling strength = 0.8715332
|
Electron-phonon coupling strength = 0.8715331
|
||||||
|
|
||||||
Estimated Allen-Dynes Tc = 26.410310 K for muc = 0.16000
|
Estimated Allen-Dynes Tc = 26.410306 K for muc = 0.16000
|
||||||
|
|
||||||
Estimated BCS superconducting gap = 0.004006 eV
|
Estimated BCS superconducting gap = 0.004006 eV
|
||||||
|
|
||||||
|
|
||||||
|
WARNING WARNING WARNING
|
||||||
|
|
||||||
|
The code may crash since tempsmax = 30.000 K is larger than Allen-Dynes Tc = 26.410 K
|
||||||
|
|
||||||
temp( 1) = 17.00000 K
|
temp( 1) = 17.00000 K
|
||||||
|
|
||||||
Solve anisotropic Eliashberg equations on imaginary-axis
|
Solve anisotropic Eliashberg equations on imaginary-axis
|
||||||
|
@ -139,30 +145,98 @@
|
||||||
|
|
||||||
Size of allocated memory per pool: ~= 0.0334 Gb
|
Size of allocated memory per pool: ~= 0.0334 Gb
|
||||||
iter ethr znormi [eV] deltai [eV]
|
iter ethr znormi [eV] deltai [eV]
|
||||||
1 2.319660E+00 1.842141E+00 5.045234E-03
|
1 2.319660E+00 1.842141E+00 5.045233E-03
|
||||||
2 1.046268E-01 1.838152E+00 5.713803E-03
|
2 1.046268E-01 1.838152E+00 5.713802E-03
|
||||||
3 1.138977E-01 1.832610E+00 6.525116E-03
|
3 1.138977E-01 1.832610E+00 6.525115E-03
|
||||||
4 8.885152E-02 1.828215E+00 7.134617E-03
|
4 8.885151E-02 1.828215E+00 7.134616E-03
|
||||||
5 1.922818E-01 1.815692E+00 8.594153E-03
|
5 1.922819E-01 1.815692E+00 8.594152E-03
|
||||||
6 1.168990E-01 1.822927E+00 7.817943E-03
|
6 1.168992E-01 1.822927E+00 7.817942E-03
|
||||||
7 1.390461E-02 1.822164E+00 7.905553E-03
|
7 1.390462E-02 1.822164E+00 7.905552E-03
|
||||||
8 1.784640E-03 1.822072E+00 7.920160E-03
|
8 1.784621E-03 1.822072E+00 7.920158E-03
|
||||||
Convergence was reached in nsiter = 8
|
Convergence was reached in nsiter = 8
|
||||||
|
|
||||||
iaxis_imag : 18.41s CPU 18.47s WALL ( 1 calls)
|
iaxis_imag : 19.64s CPU 19.67s WALL ( 1 calls)
|
||||||
|
|
||||||
|
|
||||||
Pade approximant of anisotropic Eliashberg equations from imaginary-axis to real-axis
|
Pade approximant of anisotropic Eliashberg equations from imaginary-axis to real-axis
|
||||||
Cutoff frequency wscut = 0.5000
|
Cutoff frequency wscut = 0.5000
|
||||||
|
|
||||||
pade Re[znorm] [eV] Re[delta] [eV]
|
pade Re[znorm] [eV] Re[delta] [eV]
|
||||||
48 1.679657E+00 7.328199E-03
|
48 1.673551E+00 7.328298E-03
|
||||||
|
|
||||||
Convergence was reached for N = 48 Pade approximants
|
Convergence was reached for N = 48 Pade approximants
|
||||||
|
|
||||||
raxis_pade : 0.08s CPU 0.09s WALL ( 1 calls)
|
raxis_pade : 0.09s CPU 0.10s WALL ( 1 calls)
|
||||||
|
|
||||||
itemp = 1 total cpu time : 18.56 secs
|
itemp = 1 total cpu time : 19.77 secs
|
||||||
|
|
||||||
|
|
||||||
|
temp( 2) = 20.00000 K
|
||||||
|
|
||||||
|
Solve anisotropic Eliashberg equations on imaginary-axis
|
||||||
|
|
||||||
|
Total number of frequency points nsiw( 2) = 46
|
||||||
|
Cutoff frequency wscut = 0.5035
|
||||||
|
|
||||||
|
|
||||||
|
Size of allocated memory per pool: ~= 0.0288 Gb
|
||||||
|
iter ethr znormi [eV] deltai [eV]
|
||||||
|
1 2.634223E+00 1.821334E+00 8.178218E-03
|
||||||
|
2 9.068172E-02 1.820045E+00 8.239481E-03
|
||||||
|
3 6.899058E-02 1.819340E+00 8.220390E-03
|
||||||
|
4 1.987348E-02 1.819781E+00 8.145507E-03
|
||||||
|
5 1.160557E-02 1.820480E+00 8.062323E-03
|
||||||
|
6 3.518963E-03 1.820678E+00 8.039078E-03
|
||||||
|
Convergence was reached in nsiter = 6
|
||||||
|
|
||||||
|
iaxis_imag : 30.74s CPU 30.79s WALL ( 2 calls)
|
||||||
|
|
||||||
|
|
||||||
|
Pade approximant of anisotropic Eliashberg equations from imaginary-axis to real-axis
|
||||||
|
Cutoff frequency wscut = 0.5000
|
||||||
|
|
||||||
|
pade Re[znorm] [eV] Re[delta] [eV]
|
||||||
|
42 1.676922E+00 7.446035E-03
|
||||||
|
|
||||||
|
Convergence was reached for N = 42 Pade approximants
|
||||||
|
|
||||||
|
raxis_pade : 0.17s CPU 0.20s WALL ( 2 calls)
|
||||||
|
|
||||||
|
itemp = 2 total cpu time : 30.99 secs
|
||||||
|
|
||||||
|
|
||||||
|
temp( 3) = 30.00000 K
|
||||||
|
|
||||||
|
Solve anisotropic Eliashberg equations on imaginary-axis
|
||||||
|
|
||||||
|
Total number of frequency points nsiw( 3) = 31
|
||||||
|
Cutoff frequency wscut = 0.5117
|
||||||
|
|
||||||
|
|
||||||
|
Size of allocated memory per pool: ~= 0.0203 Gb
|
||||||
|
iter ethr znormi [eV] deltai [eV]
|
||||||
|
1 2.691697E+00 1.821347E+00 8.042915E-03
|
||||||
|
2 9.841104E-02 1.820639E+00 8.036362E-03
|
||||||
|
3 8.046288E-02 1.820576E+00 7.940634E-03
|
||||||
|
4 2.992491E-02 1.821545E+00 7.800905E-03
|
||||||
|
5 2.602927E-02 1.823077E+00 7.617696E-03
|
||||||
|
6 6.406719E-03 1.823441E+00 7.574611E-03
|
||||||
|
Convergence was reached in nsiter = 6
|
||||||
|
|
||||||
|
iaxis_imag : 36.32s CPU 36.40s WALL ( 3 calls)
|
||||||
|
|
||||||
|
|
||||||
|
Pade approximant of anisotropic Eliashberg equations from imaginary-axis to real-axis
|
||||||
|
Cutoff frequency wscut = 0.5000
|
||||||
|
|
||||||
|
pade Re[znorm] [eV] Re[delta] [eV]
|
||||||
|
28 1.684948E+00 7.036544E-03
|
||||||
|
|
||||||
|
Convergence was reached for N = 28 Pade approximants
|
||||||
|
|
||||||
|
raxis_pade : 0.25s CPU 0.28s WALL ( 3 calls)
|
||||||
|
|
||||||
|
itemp = 3 total cpu time : 36.68 secs
|
||||||
|
|
||||||
|
|
||||||
Unfolding on the coarse grid
|
Unfolding on the coarse grid
|
||||||
|
@ -175,10 +249,10 @@
|
||||||
Electron-Phonon interpolation
|
Electron-Phonon interpolation
|
||||||
|
|
||||||
|
|
||||||
ELIASHBERG : 63.04s CPU 63.84s WALL ( 1 calls)
|
ELIASHBERG : 97.74s CPU 97.83s WALL ( 1 calls)
|
||||||
|
|
||||||
Total program execution
|
Total program execution
|
||||||
EPW : 1m 3.04s CPU 1m 3.85s WALL
|
EPW : 1m37.74s CPU 1m37.84s WALL
|
||||||
|
|
||||||
|
|
||||||
Please consider citing:
|
Please consider citing:
|
||||||
|
|
|
@ -29,11 +29,9 @@
|
||||||
|
|
||||||
iverbosity = 0
|
iverbosity = 0
|
||||||
|
|
||||||
eps_acustic = 5.0 ! Lowest boundary for the
|
ephwrite = .true. ! Writes .ephmat files used when Eliasberg = .true.
|
||||||
ephwrite = .true. ! Writes .ephmat files used when wliasberg = .true.
|
|
||||||
|
|
||||||
fsthick = 20.0 ! eV
|
fsthick = 20.0 ! eV
|
||||||
eptemp = 300 ! K
|
|
||||||
degaussw = 0.10 ! eV
|
degaussw = 0.10 ! eV
|
||||||
degaussq = 0.5 ! meV
|
degaussq = 0.5 ! meV
|
||||||
nqstep = 500
|
nqstep = 500
|
||||||
|
@ -50,12 +48,10 @@
|
||||||
|
|
||||||
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
||||||
|
|
||||||
nstemp = 1
|
nstemp = 1 ! Nr. of temps
|
||||||
tempsmin = 15.00
|
temps = 15.00 ! K provide list of temperetures OR (nstemp and temps = tempsmin tempsmax for even space mode)
|
||||||
tempsmax = 20.00
|
|
||||||
|
|
||||||
nsiter = 500
|
nsiter = 500
|
||||||
assume_metal = .TRUE.
|
|
||||||
muc = 0.16
|
muc = 0.16
|
||||||
|
|
||||||
dvscf_dir = './save'
|
dvscf_dir = './save'
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
epwwrite = .true.
|
epwwrite = .true.
|
||||||
epwread = .false.
|
epwread = .false.
|
||||||
|
|
||||||
etf_mem = 0
|
etf_mem = 1
|
||||||
vme = .false.
|
vme = .false.
|
||||||
|
|
||||||
nbndsub = 5,
|
nbndsub = 5,
|
||||||
|
@ -28,11 +28,9 @@
|
||||||
|
|
||||||
iverbosity = 0
|
iverbosity = 0
|
||||||
|
|
||||||
eps_acustic = 5.0 ! Lowest boundary for the
|
ephwrite = .true. ! Writes .ephmat files used when Eliasberg = .true.
|
||||||
ephwrite = .true. ! Writes .ephmat files used when wliasberg = .true.
|
|
||||||
|
|
||||||
fsthick = 20.0 ! eV
|
fsthick = 20.0 ! eV
|
||||||
eptemp = 300 ! K
|
|
||||||
degaussw = 0.10 ! eV
|
degaussw = 0.10 ! eV
|
||||||
degaussq = 0.5 ! meV
|
degaussq = 0.5 ! meV
|
||||||
nqstep = 500
|
nqstep = 500
|
||||||
|
@ -47,13 +45,11 @@
|
||||||
|
|
||||||
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
||||||
|
|
||||||
nstemp = 1
|
nstemp = 1 ! Nr. of temps
|
||||||
tempsmin = 15.00
|
temps = 15.00 ! K provide list of temperetures OR (nstemp and temps = tempsmin tempsmax for even space mode)
|
||||||
tempsmax = 20.00
|
|
||||||
|
|
||||||
nsiter = 500
|
nsiter = 500
|
||||||
assume_metal = .TRUE.
|
muc = 0.16
|
||||||
muc = 0.16
|
|
||||||
|
|
||||||
dvscf_dir = './save'
|
dvscf_dir = './save'
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
epwwrite = .false.
|
epwwrite = .false.
|
||||||
epwread = .true.
|
epwread = .true.
|
||||||
|
|
||||||
etf_mem = 0
|
etf_mem = 1
|
||||||
vme = .false.
|
vme = .false.
|
||||||
|
|
||||||
nbndsub = 5,
|
nbndsub = 5,
|
||||||
|
@ -28,11 +28,9 @@
|
||||||
|
|
||||||
iverbosity = 0
|
iverbosity = 0
|
||||||
|
|
||||||
eps_acustic = 5.0 ! Lowest boundary for the
|
ephwrite = .true. ! Writes .ephmat files used when Eliasberg = .true.
|
||||||
ephwrite = .true. ! Writes .ephmat files used when wliasberg = .true.
|
|
||||||
|
|
||||||
fsthick = 20.0 ! eV
|
fsthick = 20.0 ! eV
|
||||||
eptemp = 300 ! K
|
|
||||||
degaussw = 0.10 ! eV
|
degaussw = 0.10 ! eV
|
||||||
degaussq = 0.5 ! meV
|
degaussq = 0.5 ! meV
|
||||||
nqstep = 500
|
nqstep = 500
|
||||||
|
@ -47,12 +45,10 @@
|
||||||
|
|
||||||
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
||||||
|
|
||||||
nstemp = 1
|
nstemp = 1 ! Nr. of temps
|
||||||
tempsmin = 16.00
|
temps = 16.00 ! K provide list of temperetures OR (nstemp and temps = tempsmin tempsmax for even space mode)
|
||||||
tempsmax = 20.00
|
|
||||||
|
|
||||||
nsiter = 500
|
nsiter = 500
|
||||||
assume_metal = .TRUE.
|
|
||||||
muc = 0.16
|
muc = 0.16
|
||||||
|
|
||||||
dvscf_dir = './save'
|
dvscf_dir = './save'
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
epwwrite = .false.
|
epwwrite = .false.
|
||||||
epwread = .true.
|
epwread = .true.
|
||||||
|
|
||||||
etf_mem = 0
|
etf_mem = 1
|
||||||
vme = .false.
|
vme = .false.
|
||||||
|
|
||||||
nbndsub = 5,
|
nbndsub = 5,
|
||||||
|
@ -29,10 +29,9 @@
|
||||||
iverbosity = 0
|
iverbosity = 0
|
||||||
|
|
||||||
eps_acustic = 5.0 ! Lowest boundary for the
|
eps_acustic = 5.0 ! Lowest boundary for the
|
||||||
ephwrite = .false. ! Writes .ephmat files used when wliasberg = .true.
|
ephwrite = .false. ! Writes .ephmat files used when Eliasberg = .true.
|
||||||
|
|
||||||
fsthick = 20.0 ! eV
|
fsthick = 20.0 ! eV
|
||||||
eptemp = 300 ! K
|
|
||||||
degaussw = 0.10 ! eV
|
degaussw = 0.10 ! eV
|
||||||
degaussq = 0.5 ! meV
|
degaussq = 0.5 ! meV
|
||||||
nqstep = 500
|
nqstep = 500
|
||||||
|
@ -47,12 +46,10 @@
|
||||||
|
|
||||||
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
||||||
|
|
||||||
nstemp = 1
|
! nstemp = 1 ! Nr. of temps (not required for the list mode in this example)
|
||||||
tempsmin = 17.00
|
temps = 17 20 30 ! K provide list of temperetures OR (nstemp and temps = tempsmin tempsmax for even space mode)
|
||||||
tempsmax = 20.00
|
|
||||||
|
|
||||||
nsiter = 500
|
nsiter = 500
|
||||||
assume_metal = .TRUE.
|
|
||||||
muc = 0.16
|
muc = 0.16
|
||||||
|
|
||||||
dvscf_dir = './save'
|
dvscf_dir = './save'
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
a2f = .true.
|
a2f = .true.
|
||||||
|
|
||||||
fsthick = 15 ! eV
|
fsthick = 15 ! eV
|
||||||
eptemp = 2000 ! K
|
temps = 2000 ! K
|
||||||
degaussw = 1.0 ! eV
|
degaussw = 1.0 ! eV
|
||||||
|
|
||||||
dvscf_dir = './save'
|
dvscf_dir = './save'
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
prtgkk = .true.
|
prtgkk = .true.
|
||||||
|
|
||||||
fsthick = 7.0
|
fsthick = 7.0
|
||||||
eptemp = 20
|
temps = 20
|
||||||
degaussw = 0.05
|
degaussw = 0.05
|
||||||
|
|
||||||
filqf = 'pathq.dat'
|
filqf = 'pathq.dat'
|
||||||
|
|
|
@ -40,7 +40,7 @@
|
||||||
prtgkk = .true.
|
prtgkk = .true.
|
||||||
|
|
||||||
fsthick = 7.0
|
fsthick = 7.0
|
||||||
eptemp = 20
|
temps = 20
|
||||||
degaussw = 0.05
|
degaussw = 0.05
|
||||||
|
|
||||||
filqf = 'pathq.dat'
|
filqf = 'pathq.dat'
|
||||||
|
|
Loading…
Reference in New Issue