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
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = '../phonons/save'
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
|
||||
fsthick = 1.36056981 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = '../phonons/save'
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
|
||||
|
||||
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
|
||||
|
||||
dvscf_dir = '../phonons/save'
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
|
||||
fsthick = 3.0
|
||||
eptemp = 300.0
|
||||
temps = 300.0
|
||||
degaussw = 0.1
|
||||
efermi_read = .true.
|
||||
fermi_energy= 9.9775
|
||||
|
|
|
@ -28,12 +28,10 @@
|
|||
|
||||
iverbosity = 2
|
||||
|
||||
|
||||
eps_acustic = 2.0 ! Lowest boundary for the
|
||||
ephwrite = .true. ! Writes .ephmat files used when wliasberg = .true.
|
||||
eps_acustic = 2.0 ! Lowest boundary for the phonon frequency
|
||||
ephwrite = .true. ! Writes .ephmat files used when Eliasberg = .true.
|
||||
|
||||
fsthick = 0.4 ! eV
|
||||
eptemp = 300 ! K
|
||||
degaussw = 0.10 ! eV
|
||||
nsmear = 1
|
||||
delta_smear = 0.04 ! eV
|
||||
|
@ -51,9 +49,8 @@
|
|||
|
||||
wscut = 1.0 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
||||
|
||||
nstemp = 1
|
||||
tempsmin = 15.00
|
||||
tempsmax = 60.00
|
||||
nstemp = 1 ! Nr. of temps
|
||||
temps = 15.00 ! K provide list of temperetures OR (nstemp and temps = tempsmin tempsmax for even space mode)
|
||||
|
||||
nsiter = 500
|
||||
|
||||
|
@ -78,32 +75,3 @@
|
|||
nqf2 = 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
|
||||
eptemp = 0.0 ! K
|
||||
temps = 0.0 ! K
|
||||
degaussw = 0.005 ! eV
|
||||
degaussq = 0.05 !meV
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
|
||||
|
||||
fsthick = 6 ! eV
|
||||
eptemp = 0.075 ! K
|
||||
temps = 0.075 ! K
|
||||
degaussw = 0.05 ! eV
|
||||
|
||||
a2f = .true.
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
|
||||
|
||||
fsthick = 2.80284905 ! eV
|
||||
eptemp = 200 ! K
|
||||
temps = 200 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = '../phonons/save'
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
kmaps, kerwrite, kerread, imag_read, nkc3, &
|
||||
gap_edge, fsthick, filqf, filkf, nqc1, nqc2, nqc3,&
|
||||
fileig, fila2f, fermi_energy, nc, nkc1, nkc2, &
|
||||
etf_mem, epwwrite, epwread, eptemp, nbndsub, &
|
||||
etf_mem, epwwrite, epwread, nbndsub, &
|
||||
eps_acustic, ephwrite, epbread, nsiter, nqstep, &
|
||||
nqsmear, nqf3, nqf2, nqf1, nkf3, nkf2, nkf1, &
|
||||
muc, mp_mesh_q, mp_mesh_k, max_memlt, lunif, &
|
||||
|
@ -41,7 +41,7 @@
|
|||
wsfc, wscut, write_wfn, wmin_specfun, wmin, &
|
||||
wmax_specfun, wmax, wepexst, wannierize, &
|
||||
vme, longrange, shortrange, system_2d, lindabs, &
|
||||
tempsmin, tempsmax, temps, delta_approx, title, &
|
||||
temps, tempsmin, tempsmax, delta_approx, title, &
|
||||
scattering, scattering_serta, scattering_0rta, &
|
||||
int_mob, scissor, carrier, ncarrier, &
|
||||
restart, restart_step, prtgkk, nel, meff, epsiheg,&
|
||||
|
@ -219,7 +219,6 @@
|
|||
CALL mp_bcast(muc , 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(eptemp , 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(nel , meta_ionode_id, world_comm)
|
||||
|
|
|
@ -35,16 +35,18 @@
|
|||
!!
|
||||
!-----------------------------------------------------------------------
|
||||
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 io_global, ONLY : stdout
|
||||
USE io_var, ONLY : iospectral_sup, iospectral_cum
|
||||
USE epwcom, ONLY : eptemp, wmin_specfun, wmax_specfun, nw_specfun, &
|
||||
bnd_cum
|
||||
USE elph2, ONLY : ibndmin, ibndmax
|
||||
USE epwcom, ONLY : wmin_specfun, wmax_specfun, nw_specfun, &
|
||||
bnd_cum, nstemp, eliashberg
|
||||
USE elph2, ONLY : ibndmin, ibndmax, gtemp
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
CHARACTER(LEN = 20) :: tp
|
||||
CHARACTER(LEN = 256) :: filespecsup
|
||||
CHARACTER(LEN = 64) :: line
|
||||
!! Auxiliary string
|
||||
CHARACTER(LEN = 64) :: filespec
|
||||
|
@ -67,6 +69,8 @@
|
|||
!! Total number of k-points
|
||||
INTEGER :: i0
|
||||
!! Energy index of Fermi level (w=0)
|
||||
INTEGER :: itemp
|
||||
!! Counter on temperatures
|
||||
INTEGER :: ierr
|
||||
!! Error status
|
||||
REAL(KIND = DP) :: dw
|
||||
|
@ -107,154 +111,165 @@
|
|||
WRITE(stdout, '(5x,a)') 'Warning: the routine is sequential but very fast.'
|
||||
WRITE(stdout, '(5x,a/)') REPEAT('=',75)
|
||||
!
|
||||
OPEN (UNIT = iospectral_sup, FILE = 'specfun_sup.elself', STATUS = 'old', IOSTAT = ios)
|
||||
IF (ios /= 0) CALL errore('spectral_cumulant', 'opening file specfun_sup.elself', ABS(ios))
|
||||
!
|
||||
! determine number of k points, ibndmin, ibndmax
|
||||
DO im = 1, 6
|
||||
READ(iospectral_sup, '(a)') line
|
||||
ENDDO
|
||||
DO im = 1, maxrecs
|
||||
READ (iospectral_sup, *, IOSTAT = ios) i1, i2
|
||||
IF (im == 1) ibndmin = i2
|
||||
IF (ios /= 0) EXIT
|
||||
IF (im == maxrecs) CALL errore('spectral_cumulant', 'increase maxrecs', 1)
|
||||
ENDDO
|
||||
!
|
||||
REWIND(iospectral_sup)
|
||||
!
|
||||
nk = i1
|
||||
ibndmax = i2
|
||||
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, &
|
||||
", ibndmin = ", ibndmin, ", ibndmax = ", ibndmax, " kbT (eV) = ", eptemp * ryd2ev
|
||||
!
|
||||
ALLOCATE(ww(nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating ww', 1)
|
||||
ALLOCATE(ek(nk), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating ek', 1)
|
||||
ALLOCATE(sigmar(nk, nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating sigmar', 1)
|
||||
ALLOCATE(sigmai(nk, nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating sigmai', 1)
|
||||
ALLOCATE(a_mig(nw_specfun, nk), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_mig', 1)
|
||||
ALLOCATE(a_cw(nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_cw', 1)
|
||||
ALLOCATE(a_ct(nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_ct', 1)
|
||||
ALLOCATE(a_tmp(nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_tmp', 1)
|
||||
!
|
||||
! read and store Kohn-Sham energy, energy grid, real and im sigma for designated band
|
||||
DO im = 1,6
|
||||
READ(iospectral_sup, '(a)') line
|
||||
ENDDO
|
||||
DO ibnd = 1, ibndmax - ibndmin + 1
|
||||
DO ik = 1, nk
|
||||
DO iw = 1, nw_specfun
|
||||
READ(iospectral_sup,*) i1, i2, a1, a2, a3, a4
|
||||
IF (i2 == bnd_cum) THEN
|
||||
! ek, w read in eV; Sigma read in meV
|
||||
ek(ik) = a1 / ryd2ev
|
||||
ww(iw) = a2 / ryd2ev
|
||||
sigmar(ik, iw) = a3 / ryd2mev ! / ( EXP(ww(iw)/eptemp )+1.d0 )
|
||||
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
|
||||
DO itemp = 1, nstemp
|
||||
WRITE(tp, "(f8.3)") gtemp(itemp) * ryd2ev / kelvin2eV
|
||||
filespecsup = 'specfun_sup.elself.' // trim(adjustl(tp)) // 'K'
|
||||
OPEN (UNIT = iospectral_sup, FILE = filespecsup, STATUS = 'old', IOSTAT = ios)
|
||||
IF (ios /= 0) CALL errore('spectral_cumulant', 'opening file specfun_sup.elself', ABS(ios))
|
||||
!
|
||||
! determine number of k points, ibndmin, ibndmax
|
||||
DO im = 1, 6
|
||||
READ(iospectral_sup, '(a)') line
|
||||
ENDDO
|
||||
DO im = 1, maxrecs
|
||||
READ (iospectral_sup, *, IOSTAT = ios) i1, i2
|
||||
IF (im == 1) ibndmin = i2
|
||||
IF (ios /= 0) EXIT
|
||||
IF (im == maxrecs) CALL errore('spectral_cumulant', 'increase maxrecs', 1)
|
||||
ENDDO
|
||||
!
|
||||
REWIND(iospectral_sup)
|
||||
!
|
||||
nk = i1
|
||||
ibndmax = i2
|
||||
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, &
|
||||
", ibndmin = ", ibndmin, ", ibndmax = ", ibndmax, " kbT (eV) = ", gtemp(itemp) * ryd2ev
|
||||
!
|
||||
ALLOCATE(ww(nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating ww', 1)
|
||||
ALLOCATE(ek(nk), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating ek', 1)
|
||||
ALLOCATE(sigmar(nk, nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating sigmar', 1)
|
||||
ALLOCATE(sigmai(nk, nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating sigmai', 1)
|
||||
ALLOCATE(a_mig(nw_specfun, nk), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_mig', 1)
|
||||
ALLOCATE(a_cw(nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_cw', 1)
|
||||
ALLOCATE(a_ct(nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_ct', 1)
|
||||
ALLOCATE(a_tmp(nw_specfun), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('spectral_cumulant', 'Error allocating a_tmp', 1)
|
||||
!
|
||||
! read and store Kohn-Sham energy, energy grid, real and im sigma for designated band
|
||||
DO im = 1,6
|
||||
READ(iospectral_sup, '(a)') line
|
||||
ENDDO
|
||||
DO ibnd = 1, ibndmax - ibndmin + 1
|
||||
DO ik = 1, nk
|
||||
DO iw = 1, nw_specfun
|
||||
READ(iospectral_sup,*) i1, i2, a1, a2, a3, a4
|
||||
IF (i2 == bnd_cum) THEN
|
||||
! ek, w read in eV; Sigma read in meV
|
||||
ek(ik) = a1 / ryd2ev
|
||||
ww(iw) = a2 / ryd2ev
|
||||
sigmar(ik, iw) = a3 / ryd2mev ! / ( EXP(ww(iw)/eptemp )+1.d0 )
|
||||
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
|
||||
!
|
||||
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'
|
||||
!
|
||||
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)
|
||||
! Deallocate temperature when no supercond
|
||||
IF (.NOT. eliashberg) THEN
|
||||
DEALLOCATE(gtemp, STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('cum_mod', 'Error deallocating gtemp', 1)
|
||||
ENDIF
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
END SUBROUTINE spectral_cumulant
|
||||
|
|
|
@ -36,8 +36,6 @@
|
|||
!! frequency on real-axis, wsph(nqstep)
|
||||
REAL(KIND = DP), ALLOCATABLE :: wsi(:)
|
||||
!! 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
|
||||
|
|
|
@ -72,8 +72,8 @@
|
|||
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.
|
||||
REAL(KIND = DP), ALLOCATABLE ::&
|
||||
a_all(:, :), &! electronic spectral function du to electron-phonon interaction
|
||||
a_all_ph(:, :), &! phononic 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
|
||||
dos(:), &! Density of states at the chemical potential.
|
||||
et_ks(:, :), &! lda eigenvalues
|
||||
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_ks(:, :), &! interpolated eigenvalues (nbnd, nkqf) KS eigenvalues in the case of eig_read
|
||||
wf(:, :), &! interpolated eigenfrequencies
|
||||
gamma_all(:, :, :), &! Gamma
|
||||
gamma_all(:, :, :, :), &! Gamma
|
||||
gamma_nest(:, :), &! Nesting function in the case of q-parallelization
|
||||
gamma_v_all(:, :, :), &! Gamma
|
||||
lambda_all(:, :, :), &! Electron-phonon coupling parameter
|
||||
lambda_v_all(:, :, :), &! Electron-phonon coupling parameter (transport)
|
||||
sigmar_all(:, :), &! Real 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
|
||||
zi_all(:, :), &! Z renormalization factor
|
||||
gamma_v_all(:, :, :, :), &! Gamma
|
||||
lambda_all(:, :, :, :), &! Electron-phonon coupling parameter
|
||||
lambda_v_all(:, :, :, :), &! Electron-phonon coupling parameter (transport)
|
||||
sigmar_all(:, :, :), &! Real 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
|
||||
zi_all(:, :, :), &! Z renormalization factor
|
||||
eta(:, :, :), &! Adaptative smearing
|
||||
esigmar_all(:, :, :), &! energy of the real self-energy
|
||||
esigmai_all(:, :, :), &! energy of the imaginary self-energy
|
||||
esigmar_all(:, :, :, :), &! energy of the real self-energy
|
||||
esigmai_all(:, :, :, :), &! energy of the imaginary self-energy
|
||||
jdos(:), &! j-DOS
|
||||
spectra(:, :, :, :, :, :), &! dipole absorption spectra, polarizations, nomega, nsmear, dme/vme, absorption/emission
|
||||
zstar(:, :, :), &! Born effective charges
|
||||
|
@ -109,10 +109,10 @@
|
|||
zi_allcb(:, :, :), &! Second Z-factor in scattering rate (for both VB and CB calculations)
|
||||
ifc(:,:,:,:,:,:,:), &! Interatomic force constant in real space
|
||||
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.
|
||||
epsilon2_abs_lorenz(:, :, :), &! Imaginary part of dielectric function for phonon-assisted absorption, vs omega, vs broadening
|
||||
transp_temp(:), &! Temperatures used for the transport module
|
||||
epsilon2_abs_lorenz(:, :, :, :), &! Imaginary part of dielectric function for phonon-assisted absorption, vs omega, vs broadening
|
||||
gtemp(:), &! Temperature used globally (units of Ry)
|
||||
mobilityh_save(:), &! Error in the hole mobility
|
||||
mobilityel_save(:) ! Error in the electron mobility
|
||||
COMPLEX(KIND = DP), ALLOCATABLE :: &
|
||||
|
|
|
@ -906,7 +906,7 @@ CONTAINS
|
|||
USE io_global, ONLY : stdout,ionode_id, meta_ionode_id
|
||||
USE modes, ONLY : nmodes
|
||||
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, &
|
||||
model_vertex, nkf1, nkf2, nkf3, conv_thr_polaron, &
|
||||
r01, r02, r03, num_cbands, start_mode, cb_shift, &
|
||||
|
|
|
@ -34,7 +34,8 @@
|
|||
nqf2, nqf3, mp_mesh_k, restart, plselfen, &
|
||||
specfun_pl, lindabs, use_ws, epbread, &
|
||||
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 noncollin_module, ONLY : noncolin
|
||||
USE constants_epw, ONLY : ryd2ev, ryd2mev, one, two, zero, czero, eps40, &
|
||||
|
@ -54,7 +55,7 @@
|
|||
inv_tau_allcb, zi_allcb, exband, gamma_v_all, &
|
||||
esigmar_all, esigmai_all, lower_bnd, upper_bnd, &
|
||||
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, &
|
||||
ephwan2blochp, ephwan2bloch, vmewan2bloch, &
|
||||
dynifc2blochf, vmewan2blochp
|
||||
|
@ -113,6 +114,12 @@
|
|||
!! Wannier centers
|
||||
!
|
||||
! 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
|
||||
!! Name of the file to write/read
|
||||
CHARACTER(LEN = 30) :: myfmt
|
||||
|
@ -181,6 +188,8 @@
|
|||
!! Counter on bands when use_ws == .TRUE.
|
||||
INTEGER :: itemp
|
||||
!! Temperature index
|
||||
INTEGER :: itempphen
|
||||
!! Temperature counter for writing phonon selfen
|
||||
INTEGER :: icbm
|
||||
!! Index of the CBM
|
||||
INTEGER :: totq
|
||||
|
@ -934,34 +943,34 @@
|
|||
ALLOCATE(epf17(nbndfst, nbndfst, nmodes, nkf), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error allocating epf17', 1)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
lambda_all(:, :, :) = zero
|
||||
lambda_v_all(:, :, :) = zero
|
||||
gamma_all(:, :, :) = zero
|
||||
gamma_v_all(:, :, :) = zero
|
||||
lambda_all(:, :, :, :) = zero
|
||||
lambda_v_all(:, :, :, :) = zero
|
||||
gamma_all(:, :, :, :) = zero
|
||||
gamma_v_all(:, :, :, :) = zero
|
||||
ENDIF
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
esigmar_all(:, :, :) = zero
|
||||
esigmai_all(:, :, :) = zero
|
||||
a_all(:, :) = zero
|
||||
esigmar_all(:, :, :, :) = zero
|
||||
esigmai_all(:, :, :, :) = zero
|
||||
a_all(:, :, :) = zero
|
||||
ENDIF
|
||||
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)
|
||||
a_all_ph(:, :) = zero
|
||||
a_all_ph(:, :, :) = zero
|
||||
ENDIF
|
||||
IF (scattering .AND. .NOT. iterative_bte) THEN
|
||||
ALLOCATE(inv_tau_all(nstemp, nbndfst, nktotf), STAT = ierr)
|
||||
|
@ -980,19 +989,19 @@
|
|||
zi_allcb(:, :, :) = zero
|
||||
ENDIF
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
sigmar_all(:, :) = zero
|
||||
sigmai_all(:, :) = zero
|
||||
zi_all(:, :) = zero
|
||||
sigmar_all(:, :, :) = zero
|
||||
sigmai_all(:, :, :) = zero
|
||||
zi_all(:, :, :) = zero
|
||||
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)
|
||||
sigmai_mode(:, :, :) = zero
|
||||
sigmai_mode(:, :, :, :) = zero
|
||||
ENDIF
|
||||
ENDIF ! elecselfen
|
||||
!
|
||||
|
@ -1083,6 +1092,7 @@
|
|||
CALL mp_bcast(npool_tmp, ionode_id, world_comm)
|
||||
CALL mp_bcast(lrepmatw2_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 (mpime == ionode_id) THEN
|
||||
|
@ -1096,7 +1106,6 @@
|
|||
ENDIF
|
||||
CALL mp_bcast(inv_tau_all, 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
|
||||
inv_tau_all(:, 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
|
||||
IF (iqq == iq_restart) THEN
|
||||
DO itemp = 1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
CALL fermicarrier(itemp, etemp, ef0, efcb, ctype)
|
||||
! compute dos for metals
|
||||
IF (assume_metal) THEN
|
||||
|
@ -1563,37 +1572,42 @@
|
|||
IF (mpime == ionode_id) THEN
|
||||
!
|
||||
IF (phonselfen) THEN
|
||||
OPEN(UNIT = lambda_phself, FILE = 'lambda.phself')
|
||||
WRITE(lambda_phself, '(/2x,a/)') '#Lambda phonon self-energy'
|
||||
WRITE(lambda_phself, *) '#Modes ',(imode, imode = 1, nmodes)
|
||||
DO iqq = 1, nqtotf
|
||||
!
|
||||
!myfmt = "(*(3x,E15.5))" This does not work with PGI
|
||||
myfmt = "(1000(3x,E15.5))"
|
||||
WRITE(lambda_phself,'(i9,4x)', ADVANCE = 'no') iqq
|
||||
WRITE(lambda_phself, FMT = myfmt) (REAL(lambda_all(imode, iqq, 1)), imode = 1, nmodes)
|
||||
!
|
||||
ENDDO
|
||||
CLOSE(lambda_phself)
|
||||
!
|
||||
! 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))
|
||||
DO itempphen = 1, nstemp
|
||||
WRITE(tp, "(f8.3)") gtemp(itempphen) * ryd2ev / kelvin2eV
|
||||
filephselfen = 'lambda.phself.' // trim(adjustl(tp)) // 'K'
|
||||
OPEN(UNIT = lambda_phself, FILE = filephselfen)
|
||||
WRITE(lambda_phself, '(/2x,a/)') '#Lambda phonon self-energy'
|
||||
WRITE(lambda_phself, *) '#Modes ',(imode, imode = 1, nmodes)
|
||||
DO iqq = 1, nqtotf
|
||||
!
|
||||
!myfmt = "(*(3x,E15.5))" This does not work with PGI
|
||||
myfmt = "(1000(3x,E15.5))"
|
||||
WRITE(lambda_phself,'(i9,4x)', ADVANCE = 'no') iqq
|
||||
WRITE(lambda_phself, FMT = myfmt) (REAL(lambda_all(imode, iqq, 1, itempphen)), imode = 1, nmodes)
|
||||
!
|
||||
ENDDO
|
||||
CLOSE(lambda_phself)
|
||||
!
|
||||
ENDDO
|
||||
CLOSE(linewidth_phself)
|
||||
! 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
|
||||
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
|
||||
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
|
||||
ENDIF
|
||||
DO itemp = 1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
IF (int_mob .OR. carrier) THEN
|
||||
! SP: Determination of the Fermi level and dos for intrinsic or doped carrier
|
||||
! 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)
|
||||
DEALLOCATE(etf_all, STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating etf_all', 1)
|
||||
DEALLOCATE(transp_temp, STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating transp_temp', 1)
|
||||
! Deallocate temperature when no cumulant or supercond
|
||||
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)
|
||||
IF (ierr /= 0) CALL errore('ephwann_shuffle', 'Error deallocating et_ks', 1)
|
||||
IF (assume_metal) THEN
|
||||
|
|
|
@ -37,7 +37,8 @@
|
|||
iterative_bte, longrange, scatread, nqf1, prtgkk, &
|
||||
nqf2, nqf3, mp_mesh_k, restart, plselfen, epbread, &
|
||||
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 noncollin_module, ONLY : noncolin
|
||||
USE constants_epw, ONLY : ryd2ev, ryd2mev, one, two, zero, czero, cone, &
|
||||
|
@ -57,7 +58,7 @@
|
|||
inv_tau_allcb, zi_allcb, exband, nbndskip, &
|
||||
gamma_v_all, esigmar_all, esigmai_all, &
|
||||
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
|
||||
USE wan2bloch, ONLY : dmewan2bloch, hamwan2bloch, dynwan2bloch, &
|
||||
ephwan2blochp, ephwan2bloch, vmewan2bloch, &
|
||||
|
@ -105,6 +106,12 @@
|
|||
!! Wannier centers
|
||||
!
|
||||
! 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
|
||||
!! Name of the file to write/read
|
||||
CHARACTER(LEN = 30) :: myfmt
|
||||
|
@ -173,6 +180,8 @@
|
|||
!! Counter on bands when use_ws == .TRUE.
|
||||
INTEGER :: itemp
|
||||
!! Temperature index
|
||||
INTEGER :: itempphen
|
||||
!! Temperature counter for writing phonon selfen
|
||||
INTEGER :: icbm
|
||||
!! Index of the CBM
|
||||
INTEGER :: totq
|
||||
|
@ -877,34 +886,34 @@
|
|||
ALLOCATE(epmatlrT(nbndsub, nbndsub, nmodes, nkf), STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error allocating epmatlrT', 1)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
lambda_all(:, :, :) = zero
|
||||
lambda_v_all(:, :, :) = zero
|
||||
gamma_all(:, :, :) = zero
|
||||
gamma_v_all(:, :, :) = zero
|
||||
lambda_all(:, :, :, :) = zero
|
||||
lambda_v_all(:, :, :, :) = zero
|
||||
gamma_all(:, :, :, :) = zero
|
||||
gamma_v_all(:, :, :, :) = zero
|
||||
ENDIF
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
esigmar_all(:, :, :) = zero
|
||||
esigmai_all(:, :, :) = zero
|
||||
a_all(:, :) = zero
|
||||
esigmar_all(:, :, :, :) = zero
|
||||
esigmai_all(:, :, :, :) = zero
|
||||
a_all(:, :, :) = zero
|
||||
ENDIF
|
||||
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)
|
||||
a_all_ph(:, :) = zero
|
||||
a_all_ph(:, :, :) = zero
|
||||
ENDIF
|
||||
IF (scattering .AND. .NOT. iterative_bte) THEN
|
||||
ALLOCATE(inv_tau_all(nstemp, nbndfst, nktotf), STAT = ierr)
|
||||
|
@ -923,19 +932,19 @@
|
|||
zi_allcb(:, :, :) = zero
|
||||
ENDIF
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
sigmar_all(:, :) = zero
|
||||
sigmai_all(:, :) = zero
|
||||
zi_all(:, :) = zero
|
||||
sigmar_all(:, :, :) = zero
|
||||
sigmai_all(:, :, :) = zero
|
||||
zi_all(:, :, :) = zero
|
||||
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)
|
||||
sigmai_mode(:, :, :) = zero
|
||||
sigmai_mode(:, :, :, :) = zero
|
||||
ENDIF
|
||||
ENDIF ! elecselfen
|
||||
!
|
||||
|
@ -993,6 +1002,7 @@
|
|||
CALL mp_bcast(npool_tmp, ionode_id, world_comm)
|
||||
CALL mp_bcast(lrepmatw2_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 (mpime == ionode_id) THEN
|
||||
|
@ -1006,7 +1016,6 @@
|
|||
ENDIF
|
||||
CALL mp_bcast(inv_tau_all, 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
|
||||
inv_tau_all(:, 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
|
||||
IF (iqq == iq_restart) THEN
|
||||
DO itemp = 1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
CALL fermicarrier(itemp, etemp, ef0, efcb, ctype)
|
||||
! compute dos for metals
|
||||
IF (assume_metal) THEN
|
||||
|
@ -1400,37 +1409,42 @@
|
|||
IF (mpime == ionode_id) THEN
|
||||
!
|
||||
IF (phonselfen) THEN
|
||||
OPEN(UNIT = lambda_phself, FILE = 'lambda.phself')
|
||||
WRITE(lambda_phself, '(/2x,a/)') '#Lambda phonon self-energy'
|
||||
WRITE(lambda_phself, *) '#Modes ',(imode, imode = 1, nmodes)
|
||||
DO iqq = 1, nqtotf
|
||||
!
|
||||
!myfmt = "(*(3x,E15.5))" This does not work with PGI
|
||||
myfmt = "(1000(3x,E15.5))"
|
||||
WRITE(lambda_phself,'(i9,4x)', ADVANCE = 'no') iqq
|
||||
WRITE(lambda_phself, FMT = myfmt) (REAL(lambda_all(imode, iqq, 1)), imode = 1, nmodes)
|
||||
!
|
||||
ENDDO
|
||||
CLOSE(lambda_phself)
|
||||
!
|
||||
! 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))
|
||||
DO itempphen = 1, nstemp
|
||||
WRITE(tp, "(f8.3)") gtemp(itempphen) * ryd2ev / kelvin2eV
|
||||
filephselfen = 'lambda.phself.' // trim(adjustl(tp)) // 'K'
|
||||
OPEN(UNIT = lambda_phself, FILE = filephselfen)
|
||||
WRITE(lambda_phself, '(/2x,a/)') '#Lambda phonon self-energy'
|
||||
WRITE(lambda_phself, *) '#Modes ',(imode, imode = 1, nmodes)
|
||||
DO iqq = 1, nqtotf
|
||||
!
|
||||
!myfmt = "(*(3x,E15.5))" This does not work with PGI
|
||||
myfmt = "(1000(3x,E15.5))"
|
||||
WRITE(lambda_phself,'(i9,4x)', ADVANCE = 'no') iqq
|
||||
WRITE(lambda_phself, FMT = myfmt) (REAL(lambda_all(imode, iqq, 1, itempphen)), imode = 1, nmodes)
|
||||
!
|
||||
ENDDO
|
||||
CLOSE(lambda_phself)
|
||||
!
|
||||
ENDDO
|
||||
CLOSE(linewidth_phself)
|
||||
! 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
|
||||
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
|
||||
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
|
||||
ENDIF
|
||||
DO itemp = 1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
IF (int_mob .OR. carrier) THEN
|
||||
! SP: Determination of the Fermi level for intrinsic or doped carrier
|
||||
! 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)
|
||||
DEALLOCATE(etf_all, STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error deallocating etf_all', 1)
|
||||
DEALLOCATE(transp_temp, STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error deallocating transp_temp', 1)
|
||||
! Deallocate temperature when no cumulant or supercond
|
||||
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)
|
||||
IF (ierr /= 0) CALL errore('ephwann_shuffle_mem', 'Error deallocating et_ks', 1)
|
||||
IF (assume_metal) THEN
|
||||
|
|
|
@ -94,7 +94,6 @@
|
|||
WRITE(stdout,'(a)') " Be aware that some consistency checks are therefore not done. "
|
||||
WRITE(stdout,'(a)') " ------------------------------------------------------------------------ "
|
||||
WRITE(stdout,'(a)') " "
|
||||
CALL epw_setup_restart()
|
||||
ELSE
|
||||
CALL epw_setup()
|
||||
ENDIF
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
USE start_k, ONLY : nk1, nk2, nk3
|
||||
USe disp, ONLY : nq1, nq2, nq3
|
||||
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, &
|
||||
vme, degaussw, epexst, epwwrite, epbread, phonselfen, nqc2,&
|
||||
elecselfen, a2f, plselfen, specfun_pl, nest_fn, filukk, &
|
||||
|
@ -39,7 +39,7 @@
|
|||
nqc3, nkf1, nkf2, nkf3, nqf1, nqf2, nqf3, eps_acustic, nw, &
|
||||
wmax, wmin, mp_mesh_q, mp_mesh_k, filqf, filkf, nswi, nc, &
|
||||
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, &
|
||||
gap_edge, conv_thr_iaxis, nqsmear, iprint, wepexst, nswfc, &
|
||||
epwread, eliashberg, imag_read, kerread, kerwrite, lunif, &
|
||||
|
@ -47,7 +47,7 @@
|
|||
ep_coupling, nw_specfun, wmax_specfun, wmin_specfun, &
|
||||
laniso, lpolar, lifc, asr_typ, lscreen, scr_typ, nbndsub, &
|
||||
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, &
|
||||
system_2d, delta_approx, title, int_mob, scissor, &
|
||||
iterative_bte, scattering, selecqread, epmatkqread, &
|
||||
|
@ -61,7 +61,7 @@
|
|||
wannier_plot_radius, &
|
||||
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 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 io_files, ONLY : tmp_dir, prefix
|
||||
USE control_flags, ONLY : iverbosity, modenum, gamma_only
|
||||
|
@ -115,6 +115,10 @@
|
|||
!! Counter for loops
|
||||
INTEGER :: ik
|
||||
!! Counter on k-points
|
||||
INTEGER :: itemp
|
||||
!! counter on temperatures
|
||||
INTEGER :: nstemp_hold = 0
|
||||
!! placeholder for nstemp
|
||||
INTEGER :: nk1tmp
|
||||
!! temp vars for saving kgrid info
|
||||
INTEGER :: nk2tmp
|
||||
|
@ -129,7 +133,7 @@
|
|||
elph, nq1, nq2, nq3, nk1, nk2, nk3, nbndsub, &
|
||||
filukk, epbread, epbwrite, epwread, epwwrite, etf_mem, kmaps, &
|
||||
eig_read, wepexst, epexst, vme, &
|
||||
degaussw, fsthick, eptemp, nsmear, delta_smear, &
|
||||
degaussw, fsthick, nsmear, delta_smear, &
|
||||
dvscf_dir, ngaussw, epmatkqread, selecqread, &
|
||||
wannierize, dis_win_max, dis_win_min, dis_froz_min, dis_froz_max, &
|
||||
num_iter, proj, bands_skipped, wdata, iprint, write_wfn, &
|
||||
|
@ -140,7 +144,7 @@
|
|||
mp_mesh_k, mp_mesh_q, filqf, filkf, ephwrite, &
|
||||
band_plot, degaussq, delta_qsmear, nqsmear, nqstep, &
|
||||
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, &
|
||||
gap_edge, nsiter, muc, lreal, limag, lpade, lacon, liso, laniso, lpolar,&
|
||||
lscreen, scr_typ, fermi_diff, smear_rpa, cumulant, bnd_cum, &
|
||||
|
@ -433,7 +437,6 @@
|
|||
eps_acustic = 5.d0 ! cm-1
|
||||
nw = 10
|
||||
fsthick = 1.d10 ! eV
|
||||
eptemp = 300.0d0
|
||||
degaussw = 0.025d0 ! eV
|
||||
a2f = .FALSE.
|
||||
etf_mem = 1
|
||||
|
@ -513,9 +516,7 @@
|
|||
conv_thr_iaxis = 1.d-05
|
||||
conv_thr_racon = 5.d-04
|
||||
gap_edge = 0.d0
|
||||
nstemp = 1
|
||||
tempsmin = 0.d0
|
||||
tempsmax = 0.d0
|
||||
nstemp = 0
|
||||
temps(:) = 0.d0
|
||||
nsiter = 40
|
||||
muc = 0.d0
|
||||
|
@ -711,10 +712,10 @@
|
|||
'You should define either filqf or nqf when band_plot = .true.', 1)
|
||||
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)
|
||||
IF (scattering .AND. nstemp < 1) CALL errore('epw_readin', 'wrong number of nstemp', 1)
|
||||
IF (scattering .AND. MAXVAL(temps(:)) > 0.d0 .AND. tempsmin > 0.d0 .AND. tempsmax > 0.d0) &
|
||||
CALL errore('epw_readin', 'define either (tempsmin and tempsmax) or temps(:)', 1)
|
||||
IF (scattering .AND. tempsmax < tempsmin) CALL errore('epw_readin', 'tempsmax should be greater than tempsmin', 1)
|
||||
IF (MAXVAL(temps(:)) == 0.d0 .AND. nstemp > 0) &
|
||||
CALL errore('epw_readin', 'temps(:) must be specified if nstemp > 0', 1)
|
||||
IF (nstemp > ntempxx) &
|
||||
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', &
|
||||
'carrier must be .TRUE. if you specify ncarrier.', 1)
|
||||
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."
|
||||
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.
|
||||
! This is achieved with assume_metal == .true.
|
||||
IF (ngaussw == -99 .AND. .NOT. assume_metal) THEN
|
||||
|
@ -783,7 +828,6 @@
|
|||
! 1 K in eV = 8.6173423e-5
|
||||
! from K to Ryd
|
||||
! Out-of bound issue with GCC compiler. Multiple Fermi temp is not used anyway.
|
||||
eptemp = eptemp * kelvin2eV / ryd2ev
|
||||
!
|
||||
! from cm-1 to Ryd
|
||||
eps_acustic = eps_acustic / ev2cmm1 / ryd2ev
|
||||
|
@ -805,19 +849,6 @@
|
|||
omegamin = omegamin / ryd2ev
|
||||
omegamax = omegamax / 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
|
||||
!
|
||||
|
@ -835,6 +866,13 @@
|
|||
IF (wannier_plot) CALL mp_bcast(wanplotlist, meta_ionode_id, world_comm)
|
||||
!
|
||||
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.
|
||||
! Now allocate space for pwscf variables, read and check them.
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
USE kinds, ONLY : DP
|
||||
USE ions_base, ONLY : tau, nat, ntyp => nsp, ityp
|
||||
USE cell_base, ONLY : at, bg
|
||||
USE io_global, ONLY : ionode_id
|
||||
USE klist, ONLY : nkstot
|
||||
USE lsda_mod, ONLY : nspin, starting_magnetization
|
||||
USE scf, ONLY : v, vrs, vltot, kedtau
|
||||
|
@ -29,7 +28,7 @@
|
|||
USE eqv, ONLY : dmuxc
|
||||
USE uspp_param, ONLY : upf
|
||||
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 uspp, ONLY : nlcc_any
|
||||
USE control_ph, ONLY : search_sym, u_from_file
|
||||
|
@ -40,12 +39,10 @@
|
|||
USE funct, ONLY : dft_is_gradient
|
||||
USE mp_global, ONLY : world_comm
|
||||
USE mp, ONLY : mp_bcast
|
||||
USE epwcom, ONLY : scattering, nstemp, tempsmin, tempsmax, temps, &
|
||||
nkc1, nkc2, nkc3
|
||||
USE epwcom, ONLY : scattering, nkc1, nkc2, nkc3
|
||||
USE klist_epw, ONLY : xk_cryst
|
||||
USE fft_base, ONLY : dfftp
|
||||
USE gvecs, ONLY : doublegrid
|
||||
USE elph2, ONLY : transp_temp
|
||||
USE noncollin_module, ONLY : noncolin, m_loc, angle1, angle2, ux, nspin_mag
|
||||
! ---------------------------------------------------------------------------------
|
||||
! Added for polaron calculations. Originally by Danny Sio, modified by Chao Lian.
|
||||
|
@ -65,8 +62,6 @@
|
|||
!! counter on irrepr
|
||||
INTEGER :: na
|
||||
!! counter on atoms
|
||||
INTEGER :: itemp
|
||||
!! counter on temperatures
|
||||
INTEGER :: ierr
|
||||
!! Error status
|
||||
REAL(KIND = DP) :: xx_c, yy_c, zz_c
|
||||
|
@ -206,83 +201,9 @@
|
|||
npertx = MAX(npertx, npert(irr))
|
||||
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')
|
||||
RETURN
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
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
|
||||
INTEGER :: nwanxx = 200
|
||||
!! parameter used in writing prefix.win file.
|
||||
INTEGER :: ntempxx = 25
|
||||
!! Maximum number of wannier functions
|
||||
INTEGER :: ntempxx = 50
|
||||
!! Maximum number of temperatures
|
||||
INTEGER :: etf_mem
|
||||
!! If 0, all in memory. If 1, less is stored in memory (read files).
|
||||
INTEGER :: scr_typ
|
||||
|
@ -222,6 +222,14 @@
|
|||
!! band index for which the cumulant calculation is done
|
||||
INTEGER :: mob_maxiter
|
||||
!! 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
|
||||
INTEGER :: nswfc
|
||||
|
@ -230,8 +238,6 @@
|
|||
!! nr. of grid points between (wsfc,wscut)
|
||||
INTEGER :: nswi
|
||||
!! nr. of grid points for Eliashberg equations of imaginary axis
|
||||
INTEGER :: nstemp
|
||||
!! nr. of temperature points for Eliashberg equations
|
||||
INTEGER :: nsiter
|
||||
!! nr. of iterations for self-consistency
|
||||
INTEGER :: broyden_ndim
|
||||
|
@ -245,8 +251,6 @@
|
|||
!! smearing width for Fermi surface average in e-ph coupling after wann interp
|
||||
REAL(KIND = DP) :: fsthick
|
||||
!! 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
|
||||
!! min frequency for frequency scan in \delta( e_k - e_k+q - w ) when strict sel. rule is applied
|
||||
REAL(KIND = DP) :: wmax
|
||||
|
@ -295,10 +299,6 @@
|
|||
!! power used to define a non-uniform grid between wsfc and wscut
|
||||
REAL(KIND = DP) :: wscut
|
||||
!! 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
|
||||
!! mixing factor for broyden mixing
|
||||
REAL(KIND = DP) :: conv_thr_raxis
|
||||
|
@ -318,8 +318,6 @@
|
|||
!! min frequency in electron spectral function due to e-p interaction
|
||||
REAL(KIND = DP) :: wmax_specfun
|
||||
!! 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
|
||||
REAL(KIND = DP) :: scissor
|
||||
|
|
|
@ -29,14 +29,14 @@
|
|||
USE io_global, ONLY : stdout
|
||||
USE io_var, ONLY : iuindabs
|
||||
USE modes, ONLY : nmodes
|
||||
USE epwcom, ONLY : fsthick, eptemp, degaussw, &
|
||||
USE epwcom, ONLY : nstemp, fsthick, degaussw, &
|
||||
eps_acustic, efermi_read, fermi_energy,&
|
||||
vme, omegamin, omegamax, omegastep
|
||||
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, &
|
||||
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_global, ONLY : inter_pool_comm
|
||||
USE cell_base, ONLY : omega
|
||||
|
@ -47,12 +47,14 @@
|
|||
!! Q-point index
|
||||
!
|
||||
! Local variables
|
||||
CHARACTER(LEN = 256) :: nameF = 'epsilon2_indabs.dat'
|
||||
CHARACTER(LEN = 256) :: nameF
|
||||
!! Name of the file
|
||||
CHARACTER(LEN = 10) :: c
|
||||
!! Number of eta values, in string format
|
||||
CHARACTER(LEN = 256) :: format_string
|
||||
!! Format string
|
||||
CHARACTER(LEN = 20) :: tp
|
||||
!! Temperature, in string format
|
||||
! Local variables
|
||||
INTEGER :: ik
|
||||
!! Counter on the k-point index
|
||||
|
@ -78,6 +80,8 @@
|
|||
!! Polarization direction
|
||||
INTEGER :: m
|
||||
!! Counter on denominator imaginary broadening values
|
||||
INTEGER :: itemp
|
||||
!! Counter on temperatures
|
||||
INTEGER :: ierr
|
||||
!! Error status
|
||||
INTEGER, PARAMETER :: neta = 9
|
||||
|
@ -128,7 +132,6 @@
|
|||
!
|
||||
! SP: Define the inverse so that we can efficiently multiply instead of dividing
|
||||
!
|
||||
inv_eptemp0 = 1.0 / eptemp
|
||||
inv_degaussw = 1.0 / degaussw
|
||||
!
|
||||
nomega = INT((omegamax - omegamin) / omegastep) + 1
|
||||
|
@ -145,16 +148,19 @@
|
|||
WRITE(stdout, '(5x,a/)') REPEAT('=',67)
|
||||
!
|
||||
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 (epsilon2_abs) ) ALLOCATE(epsilon2_abs(3, nomega, neta))
|
||||
!IF (.NOT. ALLOCATED (epsilon2_abs_lorenz) ) ALLOCATE(epsilon2_abs_lorenz(3, nomega, neta))
|
||||
ALLOCATE(omegap(nomega), STAT = ierr)
|
||||
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)
|
||||
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)
|
||||
!
|
||||
epsilon2_abs = 0.d0
|
||||
|
@ -176,121 +182,126 @@
|
|||
ef0 = efnew
|
||||
ENDIF
|
||||
!
|
||||
DO ik = 1, nkf
|
||||
!
|
||||
ikk = 2 * ik - 1
|
||||
ikq = ikk + 1
|
||||
!
|
||||
DO imode = 1, nmodes
|
||||
DO itemp = 1, nstemp
|
||||
inv_eptemp0 = 1.0 / gtemp(itemp)
|
||||
DO ik = 1, nkf
|
||||
!
|
||||
! the phonon frequency at this q and nu
|
||||
wq(imode) = wf(imode, iq)
|
||||
ikk = 2 * ik - 1
|
||||
ikq = ikk + 1
|
||||
!
|
||||
epf(:, :, imode) = epf17(:, :, imode,ik)
|
||||
IF (wq(imode) > eps_acustic) THEN
|
||||
nqv(imode) = wgauss(-wq(imode) / eptemp, -99)
|
||||
nqv(imode) = nqv(imode) / (one - two * nqv(imode))
|
||||
DO imode = 1, nmodes
|
||||
!
|
||||
! the phonon frequency at this q and nu
|
||||
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
|
||||
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)
|
||||
!
|
||||
DO jbnd = 1, nbndfst
|
||||
IF (ABS(ekk) < fsthick) THEN
|
||||
!
|
||||
! The fermi occupation for k+q
|
||||
ekq = etf(ibndmin - 1 + jbnd, ikq) - ef0
|
||||
wgkk = wgauss(-ekk * inv_eptemp0, -99)
|
||||
!
|
||||
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 (ekq - ekk + wq(nmodes) - omegamin < - 6.0 * degaussw) CYCLE
|
||||
!
|
||||
DO imode = 1, nmodes
|
||||
IF (ABS(ekq) < fsthick .AND. ekq < ekk + wq(nmodes) + omegamax + 6.0 * degaussw) THEN
|
||||
!
|
||||
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
|
||||
s1a = czero
|
||||
s1e = czero
|
||||
s2a = czero
|
||||
s2e = czero
|
||||
IF (wq(imode) > eps_acustic) THEN
|
||||
!
|
||||
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)
|
||||
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
|
||||
DO mbnd = 1, nbndfst
|
||||
!
|
||||
! The energy of the electron at k (relative to Ef)
|
||||
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) / &
|
||||
(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
|
||||
!
|
||||
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
|
||||
pfac = nqv(imode) * wgkk * (one - wgkq) - (nqv(imode) + one) * (one - wgkk) * wgkq
|
||||
pface = (nqv(imode) + one) * wgkk * (one - wgkq) - nqv(imode) * (one - wgkk) * wgkq
|
||||
!
|
||||
IF (ABS(ekq - ekk - wq(imode) - omegap(iw)) > 6.0 * degaussw .AND. &
|
||||
ABS(ekq - ekk + wq(imode) - omegap(iw)) > 6.0 * degaussw) CYCLE
|
||||
!
|
||||
weighte = w0gauss((ekq - ekk - omegap(iw) + wq(imode)) / degaussw, 0) / degaussw
|
||||
weighta = w0gauss((ekq - ekk - omegap(iw) - wq(imode)) / degaussw, 0) / degaussw
|
||||
!
|
||||
DO ipol = 1, 3
|
||||
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)
|
||||
epsilon2_abs(ipol, iw, m) = epsilon2_abs(ipol, iw, m) + (wkf(ikk) / 2.0) * wqf(iq) * &
|
||||
cfac / omegap(iw)**2 * pface * weighte * ABS(s1e(ipol) + s2e(ipol))**2 / (2 * wq(imode) * omega)
|
||||
epsilon2_abs_lorenz(ipol, iw, m) = epsilon2_abs_lorenz(ipol, iw, m) + (wkf(ikk) / 2.0) * wqf(iq) * &
|
||||
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
|
||||
epsilon2_abs_lorenz(ipol, iw, m) = epsilon2_abs_lorenz(ipol, iw, m) + (wkf(ikk) / 2.0) * wqf(iq) * &
|
||||
cfac / omegap(iw)**2 * pface * ABS(s1e(ipol) + s2e(ipol))**2 / (2 * wq(imode) * omega) * &
|
||||
(degaussw / (degaussw**2 + (ekq - ekk - omegap(iw) + wq(imode))**2 )) / pi
|
||||
ENDDO ! ipol
|
||||
ENDDO ! iw
|
||||
ENDDO ! neta
|
||||
ENDIF ! if wq > acoustic
|
||||
ENDDO ! imode
|
||||
ENDIF ! endif ekq in fsthick
|
||||
ENDDO ! jbnd
|
||||
ENDIF ! endif ekk in fsthick
|
||||
ENDDO ! ibnd
|
||||
ENDDO ! ik
|
||||
DO iw = 1, nomega
|
||||
!
|
||||
IF (ABS(ekq - ekk - wq(imode) - omegap(iw)) > 6.0 * degaussw .AND. &
|
||||
ABS(ekq - ekk + wq(imode) - omegap(iw)) > 6.0 * degaussw) CYCLE
|
||||
!
|
||||
weighte = w0gauss((ekq - ekk - omegap(iw) + wq(imode)) / degaussw, 0) / degaussw
|
||||
weighta = w0gauss((ekq - ekk - omegap(iw) - wq(imode)) / degaussw, 0) / degaussw
|
||||
!
|
||||
DO ipol = 1, 3
|
||||
epsilon2_abs(ipol, iw, m, itemp) = epsilon2_abs(ipol, iw, m, itemp) + (wkf(ikk) / 2.0) * wqf(iq) * &
|
||||
cfac / omegap(iw)**2 * pfac * weighta * ABS(s1a(ipol) + s2a(ipol))**2 / (2 * wq(imode) * omega)
|
||||
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)
|
||||
epsilon2_abs_lorenz(ipol, iw, m, itemp) = epsilon2_abs_lorenz(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) * &
|
||||
(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) + &
|
||||
(wkf(ikk) / 2.0) * wqf(iq) * &
|
||||
cfac / omegap(iw)**2 * pface * ABS(s1e(ipol) + s2e(ipol))**2 / (2 * wq(imode) * omega) * &
|
||||
(degaussw / (degaussw**2 + (ekq - ekk - omegap(iw) + wq(imode))**2 )) / pi
|
||||
ENDDO ! ipol
|
||||
ENDDO ! iw
|
||||
ENDDO ! neta
|
||||
ENDIF ! if wq > acoustic
|
||||
ENDDO ! imode
|
||||
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
|
||||
!
|
||||
|
@ -317,34 +328,39 @@
|
|||
WRITE(stdout, '(5x,a,4f15.6)') 'Broadenings: ', eta(1:4)
|
||||
WRITE(stdout, '(5x,a,5f15.6)') ' ', eta(5:9)
|
||||
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
|
||||
WRITE(stdout, '(5x,a)') 'Photon energy (eV), Imaginary dielectric function along x,y,z'
|
||||
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
|
||||
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)')
|
||||
!
|
||||
! Output to file
|
||||
WRITE(c,"(i0)") neta + 1
|
||||
format_string = "("//TRIM(c) // "E22.14)"
|
||||
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(:, iw, m)) / 3.0d0, m = 1, neta)
|
||||
DO itemp = 1,nstemp
|
||||
WRITE(c,"(i0)") neta + 1
|
||||
WRITE(tp,"(f8.1)") gtemp(itemp) * ryd2ev / kelvin2eV
|
||||
format_string = "("//TRIM(c) // "E22.14)"
|
||||
nameF = 'epsilon2_indabs_' // 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(:, 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
|
||||
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
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
|
|
|
@ -32,7 +32,8 @@
|
|||
USE io_files, ONLY : prefix
|
||||
USE control_flags, ONLY : iverbosity
|
||||
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, &
|
||||
dosef, wkfs, w0g
|
||||
USE constants_epw, ONLY : kelvin2eV, eps6, zero
|
||||
|
@ -109,7 +110,7 @@
|
|||
!
|
||||
IF (mpime == ionode_id) THEN
|
||||
!
|
||||
temp = estemp(itemp) / kelvin2eV
|
||||
temp = gtemp(itemp) / kelvin2eV
|
||||
! anisotropic case
|
||||
IF (temp < 10.d0) THEN
|
||||
WRITE(name1, 101) TRIM(prefix), '.imag_aniso_00', temp
|
||||
|
@ -193,7 +194,8 @@
|
|||
USE io_files, ONLY : prefix
|
||||
USE control_flags, ONLY : iverbosity
|
||||
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, &
|
||||
deltai, nkfs, nbndfs, ef0, ekfs
|
||||
USE constants_epw, ONLY : kelvin2eV
|
||||
|
@ -221,7 +223,7 @@
|
|||
REAL(KIND = DP) :: temp
|
||||
!! Temperature in K
|
||||
!
|
||||
temp = estemp(itemp) / kelvin2eV
|
||||
temp = gtemp(itemp) / kelvin2eV
|
||||
!
|
||||
cname = 'imag'
|
||||
!
|
||||
|
@ -304,7 +306,8 @@
|
|||
USE io_files, ONLY : prefix
|
||||
USE control_flags, ONLY : iverbosity
|
||||
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
|
||||
USE constants_epw, ONLY : kelvin2eV
|
||||
!
|
||||
|
@ -336,7 +339,7 @@
|
|||
REAL(KIND = DP) :: var1, var2, var3, var4
|
||||
!! Temporary working variables
|
||||
!
|
||||
temp = estemp(itemp) / kelvin2eV
|
||||
temp = gtemp(itemp) / kelvin2eV
|
||||
!
|
||||
IF (laniso) THEN
|
||||
IF (iverbosity == 2) THEN
|
||||
|
@ -444,7 +447,8 @@
|
|||
USE io_files, ONLY : prefix
|
||||
USE control_flags, ONLY : iverbosity
|
||||
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
|
||||
USE constants_epw, ONLY : kelvin2eV
|
||||
!
|
||||
|
@ -476,7 +480,7 @@
|
|||
REAL(KIND = DP) :: var1, var2, var3, var4
|
||||
!! Temporary working variables
|
||||
!
|
||||
temp = estemp(itemp) / kelvin2eV
|
||||
temp = gtemp(itemp) / kelvin2eV
|
||||
!
|
||||
IF (laniso) THEN
|
||||
IF (iverbosity == 2) THEN
|
||||
|
@ -2142,7 +2146,8 @@
|
|||
USE io_var, ONLY : iufilgap
|
||||
USE io_files, ONLY : prefix
|
||||
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
|
||||
!
|
||||
IMPLICIT NONE
|
||||
|
@ -2182,7 +2187,7 @@
|
|||
REAL(KIND = DP), EXTERNAL :: w0gauss
|
||||
!! This function computes the derivative of the Fermi-Dirac 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))
|
||||
nbin = NINT(delta_max / eps5) + 1
|
||||
|
@ -2241,7 +2246,8 @@
|
|||
USE cell_base, ONLY : bg
|
||||
USE control_flags, ONLY : iverbosity
|
||||
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
|
||||
!
|
||||
IMPLICIT NONE
|
||||
|
@ -2273,7 +2279,7 @@
|
|||
REAL(KIND = DP), ALLOCATABLE :: agap_tmp(:, :)
|
||||
!! Temporary array for superconducting gap at ik, ibnd
|
||||
!
|
||||
temp = estemp(itemp) / kelvin2eV
|
||||
temp = gtemp(itemp) / kelvin2eV
|
||||
!
|
||||
cname = 'imag'
|
||||
!
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
USE mp, ONLY : mp_barrier
|
||||
USE mp_world, ONLY : mpime
|
||||
USE io_global, ONLY : ionode_id
|
||||
USE epwcom, ONLY : nstemp
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -40,11 +41,11 @@
|
|||
!! Total number of q-points
|
||||
INTEGER, INTENT(in) :: nktotf
|
||||
!! 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(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
|
||||
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
|
||||
!
|
||||
! Local variables
|
||||
|
@ -58,34 +59,42 @@
|
|||
!! Local band index
|
||||
INTEGER :: lsigma_all
|
||||
!! 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
|
||||
!
|
||||
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
|
||||
aux(1) = REAL(iqq - 1, KIND = DP) ! we need to start at the next q
|
||||
! Second element is the total number of q-points
|
||||
aux(2) = REAL(totq, KIND = DP)
|
||||
!
|
||||
i = 2
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
aux(i) = sigmar_all(ibnd, ik)
|
||||
DO itemp = 1, nstemp
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
aux(i) = sigmar_all(ibnd, ik, itemp)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
aux(i) = sigmai_all(ibnd, ik)
|
||||
DO itemp = 1, nstemp
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
aux(i) = sigmai_all(ibnd, ik, itemp)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
aux(i) = zi_all(ibnd, ik)
|
||||
DO itemp = 1, nstemp
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
aux(i) = zi_all(ibnd, ik, itemp)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
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
|
||||
IF (lower_bnd > 1) THEN
|
||||
sigmar_all(:, 1:lower_bnd - 1) = zero
|
||||
sigmai_all(:, 1:lower_bnd - 1) = zero
|
||||
zi_all(:, 1:lower_bnd - 1) = zero
|
||||
sigmar_all(:, 1:lower_bnd - 1, :) = zero
|
||||
sigmai_all(:, 1:lower_bnd - 1, :) = zero
|
||||
zi_all(:, 1:lower_bnd - 1, :) = zero
|
||||
ENDIF
|
||||
IF (upper_bnd < nktotf) THEN
|
||||
sigmar_all(:, upper_bnd + 1:nktotf) = zero
|
||||
sigmai_all(:, upper_bnd + 1:nktotf) = zero
|
||||
zi_all(:, upper_bnd + 1:nktotf) = zero
|
||||
sigmar_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||
sigmai_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||
zi_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||
ENDIF
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
|
@ -124,6 +133,7 @@
|
|||
USE mp, ONLY : mp_barrier, mp_bcast
|
||||
USE mp_world, ONLY : mpime, world_comm
|
||||
USE io_global, ONLY : ionode_id
|
||||
USE epwcom, ONLY : nstemp
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -133,11 +143,11 @@
|
|||
!! Total number of q-points
|
||||
INTEGER, INTENT(in) :: nktotf
|
||||
!! 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(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
|
||||
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
|
||||
!
|
||||
! Local variables
|
||||
|
@ -153,7 +163,9 @@
|
|||
!! Length of the vector
|
||||
INTEGER :: nqtotf_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
|
||||
!
|
||||
CHARACTER(LEN = 256) :: name1
|
||||
|
@ -170,7 +182,7 @@
|
|||
!
|
||||
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 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)
|
||||
!
|
||||
i = 2
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
sigmar_all(ibnd, ik) = aux(i)
|
||||
DO itemp = 1, nstemp
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
sigmar_all(ibnd, ik, itemp) = aux(i)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
sigmai_all(ibnd, ik) = aux(i)
|
||||
DO itemp = 1, nstemp
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
sigmai_all(ibnd, ik, itemp) = aux(i)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
zi_all(ibnd, ik) = aux(i)
|
||||
DO itemp = 1, nstemp
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
i = i + 1
|
||||
zi_all(ibnd, ik, itemp) = aux(i)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
CLOSE(iufilsigma_all)
|
||||
|
@ -214,14 +232,14 @@
|
|||
!
|
||||
! Make everythin 0 except the range of k-points we are working on
|
||||
IF (lower_bnd > 1) THEN
|
||||
sigmar_all(:, 1:lower_bnd - 1) = zero
|
||||
sigmai_all(:, 1:lower_bnd - 1) = zero
|
||||
zi_all(:, 1:lower_bnd - 1) = zero
|
||||
sigmar_all(:, 1:lower_bnd - 1, :) = zero
|
||||
sigmai_all(:, 1:lower_bnd - 1, :) = zero
|
||||
zi_all(:, 1:lower_bnd - 1, :) = zero
|
||||
ENDIF
|
||||
IF (upper_bnd < nktotf) THEN
|
||||
sigmar_all(:, upper_bnd + 1:nktotf) = zero
|
||||
sigmai_all(:, upper_bnd + 1:nktotf) = zero
|
||||
zi_all(:, upper_bnd + 1:nktotf) = zero
|
||||
sigmar_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||
sigmai_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||
zi_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||
ENDIF
|
||||
!
|
||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from: ', iqq,'/', totq
|
||||
|
@ -239,7 +257,7 @@
|
|||
!!
|
||||
USE kinds, ONLY : DP
|
||||
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_files, ONLY : diropn
|
||||
USE constants_epw, ONLY : zero
|
||||
|
@ -255,9 +273,9 @@
|
|||
!! Total number of q-points
|
||||
INTEGER, INTENT(in) :: nktotf
|
||||
!! 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(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
|
||||
!
|
||||
! Local variables
|
||||
|
@ -273,11 +291,13 @@
|
|||
!! Counter on the frequency
|
||||
INTEGER :: lesigma_all
|
||||
!! Length of the vector
|
||||
INTEGER :: itemp
|
||||
!! Counter on temperature
|
||||
REAL(KIND = DP) :: dw
|
||||
!! Frequency intervals
|
||||
REAL(KIND = DP) :: ww(nw_specfun)
|
||||
!! 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
|
||||
!
|
||||
IF (mpime == ionode_id) THEN
|
||||
|
@ -289,26 +309,30 @@
|
|||
ww(iw) = wmin_specfun + DBLE(iw - 1) * dw
|
||||
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
|
||||
aux(1) = REAL(iqq - 1, KIND = DP) ! we need to start at the next q
|
||||
! Second element is the total number of q-points
|
||||
aux(2) = REAL(totq, KIND = DP)
|
||||
!
|
||||
i = 2
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
DO iw = 1, nw_specfun
|
||||
i = i + 1
|
||||
aux(i) = esigmar_all(ibnd, ik, iw)
|
||||
DO itemp = 1, nstemp
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
DO iw = 1, nw_specfun
|
||||
i = i + 1
|
||||
aux(i) = esigmar_all(ibnd, ik, iw, itemp)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
DO iw = 1, nw_specfun
|
||||
i = i + 1
|
||||
aux(i) = esigmai_all(ibnd, ik, iw)
|
||||
DO itemp = 1, nstemp
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
DO iw = 1, nw_specfun
|
||||
i = i + 1
|
||||
aux(i) = esigmai_all(ibnd, ik, iw, itemp)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
|
@ -319,12 +343,12 @@
|
|||
!
|
||||
! Make everythin 0 except the range of k-points we are working on
|
||||
IF (lower_bnd > 1) THEN
|
||||
esigmar_all(:, 1:lower_bnd - 1, :) = zero
|
||||
esigmai_all(:, 1:lower_bnd - 1, :) = zero
|
||||
esigmar_all(:, 1:lower_bnd - 1, :, :) = zero
|
||||
esigmai_all(:, 1:lower_bnd - 1, :, :) = zero
|
||||
ENDIF
|
||||
IF (upper_bnd < nktotf) THEN
|
||||
esigmar_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||
esigmai_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||
esigmar_all(:, upper_bnd + 1:nktotf, :, :) = zero
|
||||
esigmai_all(:, upper_bnd + 1:nktotf, :, :) = zero
|
||||
ENDIF
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
|
@ -340,7 +364,7 @@
|
|||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
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_files, ONLY : prefix, tmp_dir, diropn
|
||||
USE constants_epw, ONLY : zero
|
||||
|
@ -356,9 +380,9 @@
|
|||
!! Total number of q-points
|
||||
INTEGER, INTENT(in) :: nktotf
|
||||
!! 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(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
|
||||
!
|
||||
! Local variables
|
||||
|
@ -376,11 +400,13 @@
|
|||
!! Length of the vector
|
||||
INTEGER :: nqtotf_read
|
||||
!! Total number of q-point read
|
||||
INTEGER :: itemp
|
||||
!! Counter on temperatures
|
||||
REAL(KIND = DP) :: dw
|
||||
!! Frequency intervals
|
||||
REAL(KIND = DP) :: ww(nw_specfun)
|
||||
!! 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
|
||||
!
|
||||
CHARACTER(LEN = 256) :: name1
|
||||
|
@ -398,7 +424,7 @@
|
|||
!
|
||||
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 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)
|
||||
!
|
||||
i = 2
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
DO iw = 1, nw_specfun
|
||||
i = i + 1
|
||||
esigmar_all(ibnd, ik, iw) = aux(i)
|
||||
DO itemp = 1, nstemp
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
DO iw = 1, nw_specfun
|
||||
i = i + 1
|
||||
esigmar_all(ibnd, ik, iw, itemp) = aux(i)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
DO iw = 1, nw_specfun
|
||||
i = i + 1
|
||||
esigmai_all(ibnd, ik, iw) = aux(i)
|
||||
DO itemp = 1, nstemp
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
DO iw = 1, nw_specfun
|
||||
i = i + 1
|
||||
esigmai_all(ibnd, ik, iw, itemp) = aux(i)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
|
@ -439,12 +469,12 @@
|
|||
!
|
||||
! Make everythin 0 except the range of k-points we are working on
|
||||
IF (lower_bnd > 1) THEN
|
||||
esigmar_all(:, 1:lower_bnd - 1, :) = zero
|
||||
esigmai_all(:, 1:lower_bnd - 1, :) = zero
|
||||
esigmar_all(:, 1:lower_bnd - 1, :, :) = zero
|
||||
esigmai_all(:, 1:lower_bnd - 1, :, :) = zero
|
||||
ENDIF
|
||||
IF (upper_bnd < nktotf) THEN
|
||||
esigmar_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||
esigmai_all(:, upper_bnd + 1:nktotf, :) = zero
|
||||
esigmar_all(:, upper_bnd + 1:nktotf, :, :) = zero
|
||||
esigmai_all(:, upper_bnd + 1:nktotf, :, :) = zero
|
||||
ENDIF
|
||||
!
|
||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from: ', iqq,'/', totq
|
||||
|
|
|
@ -34,7 +34,7 @@
|
|||
USE pwcom, ONLY : ef
|
||||
USE elph2, ONLY : ibndmin, etf, nkf, dmef, vmef, wf, wqf, &
|
||||
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
|
||||
USE constants_epw, ONLY : zero, one, two, ryd2mev, kelvin2eV, ryd2ev, eps4, eps8, &
|
||||
eps6, eps10, bohr2ang, ang2cm
|
||||
|
@ -321,7 +321,7 @@
|
|||
DO itemp = 1, nstemp
|
||||
!
|
||||
! Define the inverse so that we can efficiently multiply instead of dividing
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
inv_etemp = 1.0 / etemp
|
||||
!
|
||||
! 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)
|
||||
IF (.NOT. assume_metal) THEN
|
||||
DO itemp = 1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
carrier_density = 0.0
|
||||
!
|
||||
IF (ncarrier < 0.0) THEN ! VB
|
||||
|
|
|
@ -260,7 +260,7 @@
|
|||
!!
|
||||
USE kinds, ONLY : DP
|
||||
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, &
|
||||
bohr2ang, ang2cm, hbarJ
|
||||
USE symm_base, ONLY : nrot
|
||||
|
@ -317,7 +317,7 @@
|
|||
! compute conductivity
|
||||
DO itemp = 1, nstemp
|
||||
carrier_density = 0.0
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
sigma(:, :) = zero
|
||||
fi_check(:) = zero
|
||||
DO ik = 1, nktotf
|
||||
|
@ -464,7 +464,7 @@
|
|||
!-----------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP
|
||||
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, &
|
||||
bohr2ang, ang2cm, hbarJ
|
||||
USE noncollin_module, ONLY : noncolin
|
||||
|
@ -519,7 +519,7 @@
|
|||
CALL prtheader_mob()
|
||||
DO itemp = 1, nstemp
|
||||
carrier_density = 0.0
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
sigma(:, :) = zero
|
||||
fi_check(:) = zero
|
||||
DO ik = 1, nktotf
|
||||
|
@ -716,7 +716,8 @@
|
|||
!!
|
||||
USE io_global, ONLY : stdout
|
||||
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, ONLY : pi
|
||||
!
|
||||
|
@ -729,7 +730,7 @@
|
|||
!
|
||||
IF (cal_type == 1) THEN
|
||||
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)') ' '
|
||||
IF (liso) &
|
||||
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, '(a)') ' '
|
||||
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)') ' '
|
||||
ENDIF
|
||||
!
|
||||
|
@ -767,7 +768,7 @@
|
|||
!
|
||||
IF (cal_type == 4) THEN
|
||||
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)') ' '
|
||||
IF (liso .AND. lreal) &
|
||||
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
|
||||
!
|
||||
!
|
||||
CALL print_clock_epw()
|
||||
!
|
||||
WRITE(stdout, '(a)') " "
|
||||
|
|
|
@ -27,12 +27,12 @@
|
|||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
USE epwcom, ONLY : eliashberg, nkf1, nkf2, nkf3, nsiter, &
|
||||
nqf1, nqf2, nqf3, ntempxx, nswi, nstemp, temps, &
|
||||
muc, lreal, lpade, liso, limag, laniso, lacon, &
|
||||
kerwrite, kerread, imag_read, fila2f, wsfc, wscut, &
|
||||
tempsmin, tempsmax, rand_q, rand_k
|
||||
USE constants_epw, ONLY : kelvin2eV
|
||||
USE eliashbergcom, ONLY : estemp
|
||||
nqf1, nqf2, nqf3, nswi, muc, lreal, lpade, &
|
||||
liso, limag, laniso, lacon, kerwrite, kerread, &
|
||||
imag_read, fila2f, wsfc, wscut, rand_q, &
|
||||
rand_k
|
||||
USE constants_epw, ONLY : ryd2ev
|
||||
USE elph2, ONLY : gtemp
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -80,12 +80,6 @@
|
|||
CALL errore('eliashberg_init', 'nswi should be > 0', 1)
|
||||
IF (eliashberg .AND. wscut < 0.d0 ) &
|
||||
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) &
|
||||
CALL errore('eliashberg_init', 'wrong number of nsiter', 1)
|
||||
IF (eliashberg .AND. muc < 0.d0) &
|
||||
|
@ -96,31 +90,8 @@
|
|||
CALL errore('eliashberg_init', &
|
||||
'eliashberg requires nkf1,nkf2,nkf3 to be multiple of nqf1,nqf2,nqf3 when fila2f is not used', 1)
|
||||
!
|
||||
DO itemp = 1, ntempxx
|
||||
IF (temps(itemp) > 0.d0) THEN
|
||||
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
|
||||
! Ryd to eV
|
||||
gtemp(:) = gtemp * ryd2ev
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
|
@ -139,9 +110,10 @@
|
|||
USE io_global, ONLY : stdout
|
||||
USE epwcom, ONLY : nqstep, nswi, nswfc, nswc, nstemp, &
|
||||
lreal, lpade, limag, lacon, wsfc, wscut
|
||||
USE elph2, ONLY : gtemp
|
||||
USE constants_epw, ONLY : eps6
|
||||
USE constants, ONLY : pi
|
||||
USE eliashbergcom, ONLY : estemp, nsw, nsiw, wsphmax
|
||||
USE eliashbergcom, ONLY : nsw, nsiw, wsphmax
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -173,7 +145,7 @@
|
|||
nsiw(:) = nswi
|
||||
ELSEIF (wscut > 0.d0) THEN
|
||||
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
|
||||
ELSEIF (nswi > 0 .AND. wscut > 0.d0) THEN
|
||||
nsiw(:) = nswi
|
||||
|
@ -675,12 +647,13 @@
|
|||
!
|
||||
USE kinds, ONLY : DP
|
||||
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 io_global, ONLY : stdout, ionode_id
|
||||
USE mp_global, ONLY : inter_pool_comm
|
||||
USE mp_world, ONLY : mpime
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE io_global, ONLY : stdout, ionode_id
|
||||
USE mp_global, ONLY : inter_pool_comm
|
||||
USE mp_world, ONLY : mpime
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -726,18 +699,18 @@
|
|||
WRITE(stdout, '(5x, a, f12.6, a)') 'Estimated BCS superconducting gap = ', gap0, ' eV'
|
||||
WRITE(stdout, '(a)') ' '
|
||||
!
|
||||
IF (estemp(1) / kelvin2eV > tc) THEN
|
||||
IF (gtemp(1) / kelvin2eV > tc) THEN
|
||||
WRITE(stdout, '(a)') ' '
|
||||
WRITE(stdout, '(5x, a)') 'WARNING WARNING WARNING '
|
||||
WRITE(stdout, '(a)') ' '
|
||||
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'
|
||||
ELSEIF (estemp(nstemp) / kelvin2eV > tc) THEN
|
||||
gtemp(1) / kelvin2eV, ' K is larger than Allen-Dynes Tc = ', tc, ' K'
|
||||
ELSEIF (gtemp(nstemp) / kelvin2eV > tc) THEN
|
||||
WRITE(stdout, '(a)') ' '
|
||||
WRITE(stdout, '(5x, a)') 'WARNING WARNING WARNING '
|
||||
WRITE(stdout, '(a)') ' '
|
||||
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
|
||||
|
@ -838,7 +811,8 @@
|
|||
! itemp - temperature point
|
||||
!
|
||||
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, ONLY : pi
|
||||
USE low_lvl, ONLY : mem_size_eliashberg
|
||||
|
@ -872,7 +846,7 @@
|
|||
wsi(:) = zero
|
||||
DO iw = 1, nsiw(itemp)
|
||||
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)
|
||||
ENDDO
|
||||
!
|
||||
|
@ -950,7 +924,8 @@
|
|||
USE io_var, ONLY : iuqdos
|
||||
USE io_files, ONLY : prefix
|
||||
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
|
||||
USE constants_epw, ONLY : kelvin2eV, zero, ci
|
||||
!
|
||||
|
@ -992,7 +967,7 @@
|
|||
degaussw0 = 1.d0 * dwsph
|
||||
ENDIF
|
||||
!
|
||||
temp = estemp(itemp) / kelvin2eV
|
||||
temp = gtemp(itemp) / kelvin2eV
|
||||
IF (temp < 10.d0) THEN
|
||||
WRITE(fildos, '(a, a8, f4.2)') TRIM(prefix), '.qdos_00', temp
|
||||
ELSEIF (temp >= 10.d0 .AND. temp < 100.d0) THEN
|
||||
|
@ -1053,7 +1028,8 @@
|
|||
USE io_var, ONLY : iufe
|
||||
USE io_files, ONLY : prefix
|
||||
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, &
|
||||
wkfs, w0g, nkfs, nbndfs, ef0, ekfs
|
||||
USE constants_epw, ONLY : kelvin2eV, zero
|
||||
|
@ -1086,7 +1062,7 @@
|
|||
REAL(KIND = DP) :: dFE
|
||||
!! free energy difference between supercond and normal states
|
||||
!
|
||||
temp = estemp(itemp) / kelvin2eV
|
||||
temp = gtemp(itemp) / kelvin2eV
|
||||
IF (temp < 10.d0) THEN
|
||||
WRITE(filfe, '(a, a6, f4.2)') TRIM(prefix), '.fe_00', temp
|
||||
ELSEIF (temp >= 10.d0 .AND. temp < 100.d0) THEN
|
||||
|
@ -1118,7 +1094,7 @@
|
|||
* (znormi(iw) - nznormi(iw) * wsi(iw) / omega)
|
||||
ENDDO
|
||||
ENDIF
|
||||
dFE = dFE * pi * estemp(itemp)
|
||||
dFE = dFE * pi * gtemp(itemp)
|
||||
WRITE(iufe, '(2ES20.10)') temp, dFE
|
||||
CLOSE(iufe)
|
||||
!
|
||||
|
@ -1263,15 +1239,16 @@
|
|||
!! deallocates the variables allocated by eliashberg_init and read_a2f
|
||||
!!
|
||||
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
|
||||
!
|
||||
INTEGER :: ierr
|
||||
!! Error status
|
||||
!
|
||||
DEALLOCATE(estemp, STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('deallocate_eliashberg_iso', 'Error deallocating estemp', 1)
|
||||
DEALLOCATE(gtemp, STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('deallocate_eliashberg_iso', 'Error deallocating gtemp', 1)
|
||||
DEALLOCATE(wsph, STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('deallocate_eliashberg_iso', 'Error deallocating wsph', 1)
|
||||
IF (limag) THEN
|
||||
|
@ -1296,18 +1273,18 @@
|
|||
!! and evaluate_a2f_lambda subroutines
|
||||
!!
|
||||
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, &
|
||||
ixkff, ixkqf, ixqfs, nqfs, memlt_pool, &
|
||||
wsph, estemp, nsiw
|
||||
wsph, nsiw
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER :: ierr
|
||||
!! Error status
|
||||
!
|
||||
DEALLOCATE(estemp, STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('deallocate_eliashberg_aniso', 'Error deallocating estemp', 1)
|
||||
DEALLOCATE(gtemp, STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('deallocate_eliashberg_aniso', 'Error deallocating gtemp', 1)
|
||||
DEALLOCATE(wsph, STAT = ierr)
|
||||
IF (ierr /= 0) CALL errore('deallocate_eliashberg_aniso', 'Error deallocating wsph', 1)
|
||||
IF (limag) THEN
|
||||
|
|
|
@ -29,8 +29,9 @@
|
|||
USE control_flags, ONLY : iverbosity
|
||||
USE epwcom, ONLY : nsiter, nstemp, broyden_beta, broyden_ndim, &
|
||||
limag, lpade, lacon, fsthick, imag_read, wscut
|
||||
USE elph2, ONLY : gtemp
|
||||
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, &
|
||||
deallocate_eliashberg_iaxis, deallocate_eliashberg_raxis, &
|
||||
deallocate_eliashberg_aniso, eliashberg_grid
|
||||
|
@ -301,9 +302,9 @@
|
|||
!! This routine solves the anisotropic Eliashberg equations on the imaginary-axis
|
||||
!!
|
||||
USE kinds, ONLY : DP
|
||||
USE elph2, ONLY : wqf
|
||||
USE elph2, ONLY : wqf, gtemp
|
||||
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, &
|
||||
deltai, wsphmax, nkfs, nbndfs, dosef, ef0, ixkqf, ixqfs, &
|
||||
nqfs, wkfs, w0g, ekfs
|
||||
|
@ -508,16 +509,16 @@
|
|||
nznormi(iw) = nznormi(iw) + weight * naznormi(ibnd, ik, iw)
|
||||
znormi(iw) = znormi(iw) + weight * aznormi(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)
|
||||
aznormi(ibnd, ik, iw) = 1.d0 + pi * estemp(itemp) * aznormi(ibnd, ik, iw) / wsi(iw)
|
||||
adeltai(ibnd, ik, iw) = pi * estemp(itemp) * adeltai(ibnd, ik, iw) / aznormi(ibnd, ik, iw)
|
||||
aznormi(ibnd, ik, iw) = 1.d0 + pi * gtemp(itemp) * aznormi(ibnd, ik, iw) / wsi(iw)
|
||||
adeltai(ibnd, ik, iw) = pi * gtemp(itemp) * adeltai(ibnd, ik, iw) / aznormi(ibnd, ik, iw)
|
||||
ENDIF
|
||||
ENDDO ! ibnd
|
||||
ENDDO ! ik
|
||||
nznormi(iw) = 1.d0 + pi * estemp(itemp) * nznormi(iw) / wsi(iw)
|
||||
znormi(iw) = 1.d0 + pi * estemp(itemp) * znormi(iw) / wsi(iw)
|
||||
deltai(iw) = pi * estemp(itemp) * deltai(iw) / znormi(iw)
|
||||
nznormi(iw) = 1.d0 + pi * gtemp(itemp) * nznormi(iw) / wsi(iw)
|
||||
znormi(iw) = 1.d0 + pi * gtemp(itemp) * znormi(iw) / wsi(iw)
|
||||
deltai(iw) = pi * gtemp(itemp) * deltai(iw) / znormi(iw)
|
||||
reldelta = reldelta + ABS(deltai(iw) - deltaold(iw))
|
||||
absdelta = absdelta + ABS(deltai(iw))
|
||||
ENDDO ! iw
|
||||
|
@ -597,10 +598,10 @@
|
|||
!
|
||||
USE kinds, ONLY : DP
|
||||
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, &
|
||||
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, &
|
||||
a2fij, wkfs, dosef, ixkqf, ixqfs, nqfs, w0g, nkfs, nbndfs, ef0, ekfs
|
||||
USE supercond, ONLY : gamma_acont
|
||||
|
@ -725,7 +726,7 @@
|
|||
! ! Eq.(28) in Margine and Giustino, PRB 87, 024505 (2013)
|
||||
DO iw = 1, nsw ! loop over omega
|
||||
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
|
||||
gm(iw, iwp) = rgammam
|
||||
ENDDO
|
||||
|
@ -807,8 +808,8 @@
|
|||
ENDDO ! iq
|
||||
! Eqs.(26)-(27) in Margine and Giustino, PRB 87, 024505 (2013)
|
||||
DO iw = 1, nsw ! loop over omega
|
||||
aznorm(ibnd, ik, iw) = - estemp(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
|
||||
aznorm(ibnd, ik, iw) = - gtemp(itemp) * azsumi(ibnd, ik, iw) + ci * aznorm(ibnd, ik, iw) * dwsph
|
||||
adelta(ibnd, ik, iw) = gtemp(itemp) * adsumi(ibnd, ik, iw) + ci * adelta(ibnd, ik, iw) * dwsph
|
||||
ENDDO ! iw
|
||||
ENDIF ! fsthick
|
||||
ENDDO ! ibnd
|
||||
|
@ -1093,7 +1094,8 @@
|
|||
!!
|
||||
USE kinds, ONLY : DP
|
||||
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, ONLY : pi
|
||||
USE division, ONLY : fkbounds
|
||||
|
@ -1144,7 +1146,7 @@
|
|||
IF (ABS(ekfs(jbnd, ixkqf(ik, iq0)) - ef0) < fsthick) THEN
|
||||
DO iw = 1, 2*nsiw(itemp)
|
||||
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_ver2(ik, iq, ibnd, jbnd, omega, lambda_eph)
|
||||
akeri(ik, iq, ibnd, jbnd, iw) = lambda_eph
|
||||
|
|
|
@ -30,7 +30,8 @@
|
|||
USE control_flags, ONLY : iverbosity
|
||||
USE epwcom, ONLY : nsiter, nstemp, broyden_beta, broyden_ndim, &
|
||||
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 mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE supercond, ONLY : free_energy, dos_quasiparticle, gen_freqgrid_iaxis, &
|
||||
|
@ -236,7 +237,8 @@
|
|||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
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, ONLY : pi
|
||||
USE io_eliashberg, ONLY : eliashberg_write_iaxis
|
||||
|
@ -326,10 +328,10 @@
|
|||
znormi(iw) = znormi(iw) + wesqrt(iwp) * kernelm
|
||||
deltai(iw) = deltai(iw) + desqrt(iwp) * (kernelp - 2.d0 * muc)
|
||||
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)
|
||||
nznormi(iw) = 1.d0 + pi * estemp(itemp) * nznormi(iw) / wsi(iw)
|
||||
deltai(iw) = pi * estemp(itemp) * deltai(iw) / znormi(iw)
|
||||
nznormi(iw) = 1.d0 + pi * gtemp(itemp) * nznormi(iw) / wsi(iw)
|
||||
deltai(iw) = pi * gtemp(itemp) * deltai(iw) / znormi(iw)
|
||||
reldelta = reldelta + ABS(deltai(iw) - deltaold(iw))
|
||||
absdelta = absdelta + ABS(deltai(iw))
|
||||
ENDDO ! iw
|
||||
|
@ -386,7 +388,8 @@
|
|||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
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
|
||||
USE constants_epw, ONLY : ci, zero, czero, cone
|
||||
USE constants, ONLY : pi
|
||||
|
@ -461,7 +464,7 @@
|
|||
DO iw = 1, nsw ! loop over omega
|
||||
DO iwp = 1, nqstep ! loop over omega_prime
|
||||
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
|
||||
gm(iw, iwp) = rgammam
|
||||
ENDIF
|
||||
|
@ -494,8 +497,8 @@
|
|||
ENDIF
|
||||
delta(iw) = delta(iw) + deltap(i) * esqrt
|
||||
ENDDO ! iwp
|
||||
znorm(iw) = 1.d0 + pi * (- estemp(itemp) * zsumi(iw) + ci * znorm(iw) * dwsph) / ws(iw)
|
||||
delta(iw) = pi * (estemp(itemp) * dsumi(iw) + ci * delta(iw) * dwsph) / znorm(iw)
|
||||
znorm(iw) = 1.d0 + pi * (- gtemp(itemp) * zsumi(iw) + ci * znorm(iw) * dwsph) / ws(iw)
|
||||
delta(iw) = pi * (gtemp(itemp) * dsumi(iw) + ci * delta(iw) * dwsph) / znorm(iw)
|
||||
reldelta = reldelta + ABS(delta(iw) - deltaold(iw))
|
||||
absdelta = absdelta + ABS(delta(iw))
|
||||
ENDDO ! iw
|
||||
|
@ -632,7 +635,8 @@
|
|||
USE kinds, ONLY : DP
|
||||
USE constants_epw, ONLY : zero
|
||||
USE constants, ONLY : pi
|
||||
USE eliashbergcom, ONLY : nsiw, estemp, keri
|
||||
USE elph2, ONLY : gtemp
|
||||
USE eliashbergcom, ONLY : nsiw, keri
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -655,7 +659,7 @@
|
|||
!
|
||||
DO iw = 1, 2 * nsiw(itemp)
|
||||
n = iw - 1
|
||||
omega = DBLE(2 * n) * pi * estemp(itemp)
|
||||
omega = DBLE(2 * n) * pi * gtemp(itemp)
|
||||
CALL lambdar_iso(omega, lambda_eph)
|
||||
keri(iw) = lambda_eph
|
||||
ENDDO
|
||||
|
@ -830,11 +834,12 @@
|
|||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
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 mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE supercond, ONLY : gen_freqgrid_raxis, eliashberg_grid
|
||||
USE utilities, ONLY : mix_broyden
|
||||
USE supercond, ONLY : gen_freqgrid_raxis, eliashberg_grid
|
||||
USE utilities, ONLY : mix_broyden
|
||||
USE printing, ONLY : prtheader_supercond
|
||||
!
|
||||
IMPLICIT NONE
|
||||
|
@ -933,7 +938,7 @@
|
|||
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)') &
|
||||
'temp(', itemp, ') = ', estemp(itemp) / kelvin2eV, ' K ', &
|
||||
'temp(', itemp, ') = ', gtemp(itemp) / kelvin2eV, ' K ', &
|
||||
' gap_edge(', itemp, ') = ', gap(itemp), ' eV ', &
|
||||
' Re[delta(1)] = ', REAL(delta(1)), ' eV '
|
||||
WRITE(stdout, '(a)') ' '
|
||||
|
@ -975,7 +980,8 @@
|
|||
USE io_files, ONLY : prefix
|
||||
USE epwcom, ONLY : nswfc, nqstep, nsiter, muc, conv_thr_raxis, &
|
||||
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
|
||||
USE constants_epw, ONLY : kelvin2eV, ci, eps6, zero, czero
|
||||
USE io_eliashberg, ONLY : eliashberg_write_raxis
|
||||
|
@ -1057,8 +1063,8 @@
|
|||
! Fermi Dirac distribution
|
||||
fdwp(iw) = zero
|
||||
DO iw = 1, nsw
|
||||
IF (ABS(estemp(itemp)) > eps6) THEN
|
||||
fdwp(iw) = wgauss(-ws(iw) / estemp(itemp), -99)
|
||||
IF (ABS(gtemp(itemp)) > eps6) THEN
|
||||
fdwp(iw) = wgauss(-ws(iw) / gtemp(itemp), -99)
|
||||
ENDIF
|
||||
ENDDO
|
||||
!
|
||||
|
@ -1068,8 +1074,8 @@
|
|||
IF (ierr /= 0) CALL errore('integrate_eliashberg_iso_raxis', 'Error allocating bewph', 1)
|
||||
bewph(:) = zero
|
||||
DO iwph = 1, nqstep ! loop over omega (integration variable)
|
||||
IF (ABS(estemp(itemp)) > eps6) THEN
|
||||
bewph(iwph) = wgauss(-wsph(iwph) / estemp(itemp), -99)
|
||||
IF (ABS(gtemp(itemp)) > eps6) THEN
|
||||
bewph(iwph) = wgauss(-wsph(iwph) / gtemp(itemp), -99)
|
||||
bewph(iwph) = bewph(iwph) / (1.d0 - 2.d0 * bewph(iwph))
|
||||
ENDIF
|
||||
ENDDO
|
||||
|
@ -1078,7 +1084,7 @@
|
|||
delta(:) = czero
|
||||
znorm(:) = czero
|
||||
!
|
||||
temp = estemp(itemp) / kelvin2eV
|
||||
temp = gtemp(itemp) / kelvin2eV
|
||||
IF (temp < 10.d0) THEN
|
||||
WRITE(name1, '(a, a7, f4.2)') TRIM(prefix), '.ker_00', temp
|
||||
ELSEIF (temp >= 10.d0) THEN
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
USE pwcom, ONLY : ef
|
||||
USE elph2, ONLY : ibndmin, etf, nkqf, nkf, dmef, vmef, wf, wqf, &
|
||||
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
|
||||
USE constants_epw, ONLY : zero, one, two, ryd2mev, kelvin2eV, ryd2ev, &
|
||||
eps6, eps8, eps4
|
||||
|
@ -165,7 +165,7 @@
|
|||
! loop over temperatures
|
||||
DO itemp = 1, nstemp
|
||||
!
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
!
|
||||
! SP: Define the inverse so that we can efficiently multiply instead of dividing
|
||||
!
|
||||
|
@ -427,7 +427,7 @@
|
|||
!
|
||||
DO itemp = 1, nstemp
|
||||
!
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
WRITE(stdout, '(a,f8.3,a)' ) ' Temperature ', etemp * ryd2ev / kelvin2eV, ' K'
|
||||
!
|
||||
! In case we read another q-file, merge the scattering here
|
||||
|
@ -573,7 +573,7 @@
|
|||
int_mob, ncarrier, scatread, iterative_bte, vme, assume_metal
|
||||
USE pwcom, ONLY : ef
|
||||
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
|
||||
USE constants_epw, ONLY : zero, one, bohr2ang, ryd2ev, &
|
||||
kelvin2eV, hbar, Ang2m, hbarJ, ang2cm, czero
|
||||
|
@ -722,7 +722,7 @@
|
|||
! Compute the Fermi level
|
||||
DO itemp = 1, nstemp
|
||||
!
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
!
|
||||
! Lets gather the velocities from all pools
|
||||
#if defined(__MPI)
|
||||
|
@ -958,7 +958,7 @@
|
|||
!
|
||||
DO itemp = 1, nstemp
|
||||
!
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
!
|
||||
IF (itemp == 1) THEN
|
||||
!
|
||||
|
@ -1093,7 +1093,7 @@
|
|||
WRITE(stdout, '(5x,a/)') REPEAT('=',67)
|
||||
!
|
||||
DO itemp = 1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
! sigma in units of 1/(a.u.) is converted to 1/(Ohm * m)
|
||||
IF (mpime == meta_ionode_id) THEN
|
||||
WRITE(iufilsigma, '(11E16.8)') ef0(itemp) * ryd2ev, etemp * ryd2ev / kelvin2eV, &
|
||||
|
@ -1183,7 +1183,7 @@
|
|||
!
|
||||
IF (int_mob .OR. (ncarrier > 1E5)) THEN
|
||||
DO itemp = 1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
IF (itemp == 1) THEN
|
||||
tdf_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,a/)') REPEAT('=',67)
|
||||
DO itemp = 1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
IF (mpime == meta_ionode_id) THEN
|
||||
! sigma in units of 1/(a.u.) is converted to 1/(Ohm * m)
|
||||
IF (ABS(efcb(itemp)) < eps4) THEN
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
USE epwcom, ONLY : mob_maxiter, nstemp, broyden_beta, &
|
||||
mp_mesh_k, nkf1, nkf2, nkf3
|
||||
USE elph2, ONLY : nkqf, wkf, xkf, nkqtotf, nbndfst, &
|
||||
nktotf, map_rebal, xqf, transp_temp, &
|
||||
nktotf, map_rebal, xqf, gtemp, &
|
||||
ixkqf_tr, s_bztoibz_full
|
||||
USE constants_epw, ONLY : zero, one, two, pi, kelvin2eV, ryd2ev, eps10, &
|
||||
bohr2ang, ang2cm, hbarJ, eps6, eps8, &
|
||||
|
@ -224,7 +224,7 @@
|
|||
WRITE(stdout, *) 'temp k-index ibnd k-point eig[Ry] F_SERTA '
|
||||
ENDIF
|
||||
DO itemp = 1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
etemp = gtemp(itemp)
|
||||
DO ik = 1, nktotf
|
||||
DO ibnd = 1, nbndfst
|
||||
IF (ABS(inv_tau(ibnd, ik, itemp)) > eps160) THEN
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
parallel_q = .false.
|
||||
|
||||
fsthick = 15 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 1.0 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 15 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 1.0 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 15 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 1.0 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 15 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 1.0 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -32,7 +32,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 15 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 1.0 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
nw_specfun = 20
|
||||
|
||||
fsthick = 15 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 1.0 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 15 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 1.0 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 15 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 1.0 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -37,7 +37,7 @@
|
|||
nw_specfun = 20
|
||||
|
||||
fsthick = 15 ! eV
|
||||
eptemp = 300 ! K
|
||||
temps = 300 ! K
|
||||
degaussw = 1.0 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 1.5 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 0.3 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -35,7 +35,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 1.5 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 0.3 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
bnd_cum = 4
|
||||
|
||||
fsthick = 15 ! eV
|
||||
eptemp = 300 ! K (same as PRB 76, 165108)
|
||||
temps = 300 ! K (same as PRB 76, 165108)
|
||||
degaussw = 1.0 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
a2f = .true.
|
||||
|
||||
fsthick = 6 ! eV
|
||||
eptemp = 300 ! K
|
||||
temps = 300 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
degaussq = 0.05 ! meV
|
||||
assume_metal = .TRUE.
|
||||
|
|
|
@ -46,7 +46,7 @@
|
|||
asr_typ = 'crystal'
|
||||
|
||||
fsthick = 6 ! eV
|
||||
eptemp = 300 ! K
|
||||
temps = 300 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
degaussq = 0.05 ! meV
|
||||
assume_metal = .TRUE.
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
asr_typ = 'crystal'
|
||||
|
||||
fsthick = 1 ! eV
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.0 ! eV (adaptative smearing)
|
||||
degaussq = 0.05 ! meV
|
||||
assume_metal = .true.
|
||||
|
@ -61,8 +60,7 @@
|
|||
restart_step = 50
|
||||
selecqread = .false.
|
||||
nstemp = 2
|
||||
tempsmin = 100
|
||||
tempsmax = 300
|
||||
temps = 100 300
|
||||
|
||||
dvscf_dir = './save'
|
||||
|
||||
|
|
|
@ -43,7 +43,6 @@
|
|||
asr_typ = 'crystal'
|
||||
|
||||
fsthick = 1 ! eV
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.0 ! eV (adaptative smearing)
|
||||
degaussq = 0.05 ! meV
|
||||
assume_metal = .true.
|
||||
|
@ -61,8 +60,7 @@
|
|||
restart_step = 50
|
||||
selecqread = .true.
|
||||
nstemp = 2
|
||||
tempsmin = 100
|
||||
tempsmax = 300
|
||||
temps = 100 300
|
||||
|
||||
dvscf_dir = './save'
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 1.2 ! eV
|
||||
eptemp = 1 ! K
|
||||
temps = 1 ! K
|
||||
degaussw = 0.01 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -21,8 +21,7 @@
|
|||
|
||||
scissor = 0.7
|
||||
nstemp = 5
|
||||
tempsmin = 300
|
||||
tempsmax = 500
|
||||
temps = 300 500
|
||||
|
||||
restart = .true.
|
||||
restart_step = 1000
|
||||
|
@ -61,7 +60,6 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 2.0 ! eV
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.05 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
--
|
||||
-
|
||||
&inputepw
|
||||
prefix = 'si'
|
||||
amass(1) = 28.0855
|
||||
|
@ -21,8 +21,7 @@
|
|||
|
||||
scissor = 0.7
|
||||
nstemp = 5
|
||||
tempsmin = 300
|
||||
tempsmax = 500
|
||||
temps = 300 500
|
||||
|
||||
restart = .true.
|
||||
restart_step = 1000
|
||||
|
@ -61,7 +60,6 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 2.0 ! eV
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.05 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -56,7 +56,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 4.0 ! eV
|
||||
eptemp = 300 ! K
|
||||
temps = 300 ! K
|
||||
degaussw = 0.5 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 2.0 ! eV
|
||||
eptemp = 1 ! K
|
||||
temps = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -28,8 +28,8 @@
|
|||
|
||||
scissor = 0.7
|
||||
nstemp = 2
|
||||
tempsmin = 400
|
||||
tempsmax = 500
|
||||
temps = 400 500
|
||||
|
||||
|
||||
restart = .true.
|
||||
restart_step = 50
|
||||
|
@ -68,7 +68,6 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 4.0
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
|
||||
scissor = 0.7
|
||||
nstemp = 2
|
||||
tempsmin = 400
|
||||
tempsmax = 500
|
||||
temps = 400 500
|
||||
|
||||
restart = .true.
|
||||
restart_step = 50
|
||||
|
@ -68,7 +67,6 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 4.0
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 2.0 ! eV
|
||||
eptemp = 1 ! K
|
||||
temps = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
|
||||
scissor = 0.7
|
||||
nstemp = 2
|
||||
tempsmin = 400
|
||||
tempsmax = 500
|
||||
temps = 400 500
|
||||
|
||||
restart = .true.
|
||||
restart_step = 50
|
||||
|
@ -68,7 +67,6 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 4.0
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
|
||||
scissor = 0.7
|
||||
nstemp = 2
|
||||
tempsmin = 400
|
||||
tempsmax = 500
|
||||
temps = 400 500
|
||||
|
||||
restart = .true.
|
||||
restart_step = 50
|
||||
|
@ -65,7 +64,6 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 4.0
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 2.0 ! eV
|
||||
eptemp = 1 ! K
|
||||
temps = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -26,8 +26,7 @@
|
|||
|
||||
scissor = 0.7
|
||||
nstemp = 2
|
||||
tempsmin = 400
|
||||
tempsmax = 500
|
||||
temps = 400 500
|
||||
|
||||
restart = .true.
|
||||
restart_step = 50
|
||||
|
@ -65,7 +64,6 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 4.0
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -26,8 +26,7 @@
|
|||
|
||||
scissor = 0.7
|
||||
nstemp = 2
|
||||
tempsmin = 400
|
||||
tempsmax = 500
|
||||
temps = 400 500
|
||||
|
||||
restart = .true.
|
||||
restart_step = 50
|
||||
|
@ -65,7 +64,6 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 0.5
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -26,8 +26,7 @@
|
|||
|
||||
scissor = 0.7
|
||||
nstemp = 2
|
||||
tempsmin = 400
|
||||
tempsmax = 500
|
||||
temps = 400 500
|
||||
|
||||
restart = .true.
|
||||
restart_step = 50
|
||||
|
@ -65,7 +64,6 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 0.5
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -26,8 +26,7 @@
|
|||
broyden_beta= 0.7
|
||||
|
||||
nstemp = 1
|
||||
tempsmin = 100
|
||||
tempsmax = 200
|
||||
temps = 100
|
||||
|
||||
restart = .true.
|
||||
restart_step = 5
|
||||
|
@ -64,7 +63,6 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 0.4
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.0 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 100.0 ! eV
|
||||
eptemp = 1 ! K
|
||||
temps = 1 ! K
|
||||
degaussw = 0.01 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
|
|
@ -29,8 +29,7 @@
|
|||
epmatkqread = .false.
|
||||
|
||||
nstemp = 2
|
||||
tempsmin = 100
|
||||
tempsmax = 300
|
||||
temps = 100 300
|
||||
|
||||
lpolar = .true.
|
||||
etf_mem = 1
|
||||
|
|
|
@ -25,8 +25,7 @@
|
|||
broyden_beta= 1.0
|
||||
|
||||
nstemp = 2
|
||||
tempsmin = 100
|
||||
tempsmax = 300
|
||||
temps = 100 300
|
||||
|
||||
restart = .true.
|
||||
restart_step = 50
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -45,7 +45,7 @@
|
|||
band_plot = .true.
|
||||
|
||||
fsthick = 3.0
|
||||
eptemp = 20.0
|
||||
temps = 20.0
|
||||
degaussw = 0.01
|
||||
|
||||
specfun_pl = .true.
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 2.0 ! eV
|
||||
eptemp = 300 ! K
|
||||
temps = 300 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save'
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 2.0 ! eV
|
||||
eptemp = 300 ! K
|
||||
temps = 300 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save'
|
||||
|
|
|
@ -48,7 +48,7 @@
|
|||
a2f = .false.
|
||||
|
||||
fsthick = 2.0 ! eV
|
||||
eptemp = 300 ! K
|
||||
temps = 300 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save'
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
a2f = .true.
|
||||
|
||||
fsthick = 20 ! eV
|
||||
eptemp = 500 ! K
|
||||
temps = 500 ! K
|
||||
degaussw = 0.2 ! eV
|
||||
degaussq = 0.1 ! meV
|
||||
|
||||
|
|
|
@ -47,7 +47,7 @@
|
|||
a2f = .true.
|
||||
|
||||
fsthick = 20 ! eV
|
||||
eptemp = 500 ! K
|
||||
temps = 500 ! K
|
||||
degaussw = 0.2 ! eV
|
||||
degaussq = 0.1 ! meV
|
||||
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
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
|
||||
for quantum simulation of materials; please cite
|
||||
|
@ -43,6 +43,8 @@
|
|||
K-points division: npool = 4
|
||||
Fft bands division: nmany = 1
|
||||
|
||||
Reading supplied temperature list.
|
||||
|
||||
Reading xml data from directory:
|
||||
|
||||
./MgB2.save/
|
||||
|
@ -149,7 +151,7 @@
|
|||
l(1) = 0
|
||||
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
|
||||
|
@ -212,7 +214,7 @@
|
|||
( 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
|
||||
|
@ -221,7 +223,7 @@
|
|||
Calculating 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 crystal: 24
|
||||
|
||||
|
@ -393,8 +395,8 @@
|
|||
Writing Hamiltonian, Dynamical matrix and EP vertex in Wann rep to file
|
||||
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 88Mb
|
||||
VmPeak = 690Mb
|
||||
Memory usage: VmHWM = 44Mb
|
||||
VmPeak = 618Mb
|
||||
===================================================================
|
||||
|
||||
Using uniform q-mesh: 6 6 6
|
||||
|
@ -431,16 +433,16 @@
|
|||
|
||||
Progression iq (fine) = 100/ 216
|
||||
Progression iq (fine) = 200/ 216
|
||||
Fermi level (eV) = 0.766447471440237D+01
|
||||
DOS(states/spin/eV/Unit Cell) = 0.913085695277060D+00
|
||||
Fermi level (eV) = 0.766447471508788D+01
|
||||
DOS(states/spin/eV/Unit Cell) = 0.913085693176451D+00
|
||||
Electron smearing (eV) = 0.100000000000000D+00
|
||||
Fermi window (eV) = 0.200000000000000D+02
|
||||
|
||||
Finish writing .ephmat files
|
||||
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 88Mb
|
||||
VmPeak = 690Mb
|
||||
Memory usage: VmHWM = 44Mb
|
||||
VmPeak = 618Mb
|
||||
===================================================================
|
||||
|
||||
|
||||
|
@ -451,8 +453,8 @@
|
|||
|
||||
Finish reading freq file
|
||||
|
||||
Fermi level (eV) = 7.6644747144E+00
|
||||
DOS(states/spin/eV/Unit Cell) = 9.1308569528E-01
|
||||
Fermi level (eV) = 7.6644747151E+00
|
||||
DOS(states/spin/eV/Unit Cell) = 9.1308569318E-01
|
||||
Electron smearing (eV) = 1.0000000000E-01
|
||||
Fermi window (eV) = 2.0000000000E+01
|
||||
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
||||
|
@ -474,14 +476,14 @@
|
|||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
|
@ -494,12 +496,12 @@
|
|||
Cutoff frequency wscut = 0.5076
|
||||
|
||||
iter ethr znormi [eV] deltai [eV]
|
||||
1 2.532354E+00 1.842516E+00 4.449680E-03
|
||||
2 7.635767E-02 1.841969E+00 4.682792E-03
|
||||
3 4.520722E-02 1.840749E+00 4.928651E-03
|
||||
4 3.432847E-02 1.839600E+00 5.113775E-03
|
||||
5 7.511482E-02 1.837146E+00 5.503711E-03
|
||||
6 1.990148E-03 1.837113E+00 5.510305E-03
|
||||
1 2.532354E+00 1.842516E+00 4.449679E-03
|
||||
2 7.635767E-02 1.841969E+00 4.682791E-03
|
||||
3 4.520722E-02 1.840749E+00 4.928650E-03
|
||||
4 3.432847E-02 1.839600E+00 5.113774E-03
|
||||
5 7.511483E-02 1.837146E+00 5.503710E-03
|
||||
6 1.990152E-03 1.837113E+00 5.510304E-03
|
||||
Convergence was reached in nsiter = 6
|
||||
|
||||
iaxis_imag : 0.00s CPU 0.01s WALL ( 1 calls)
|
||||
|
@ -509,10 +511,10 @@
|
|||
Cutoff frequency wscut = 0.5000
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
@ -521,44 +523,44 @@
|
|||
Cutoff frequency wscut = 0.5000
|
||||
|
||||
iter ethr Re[znorm] [eV] Re[delta] [eV]
|
||||
1 1.397095E-01 1.838880E+00 5.530900E-03
|
||||
2 2.413655E-02 1.838880E+00 5.530900E-03
|
||||
3 1.306278E-02 1.838880E+00 5.530900E-03
|
||||
4 3.909383E-03 1.838880E+00 5.530900E-03
|
||||
1 1.657058E-01 1.838880E+00 5.530899E-03
|
||||
2 2.794971E-02 1.838880E+00 5.530899E-03
|
||||
3 1.383756E-02 1.838880E+00 5.530899E-03
|
||||
4 3.575528E-03 1.838880E+00 5.530899E-03
|
||||
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
|
||||
|
||||
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:
|
||||
|
||||
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_us_1 : 0.01s CPU 0.01s WALL ( 2 calls)
|
||||
|
||||
|
||||
|
||||
Electron-Phonon interpolation
|
||||
ephwann : 2.98s CPU 4.69s WALL ( 1 calls)
|
||||
ep-interp : 2.82s CPU 4.46s WALL ( 216 calls)
|
||||
ephwann : 1.59s CPU 3.57s WALL ( 1 calls)
|
||||
ep-interp : 1.46s CPU 3.39s WALL ( 216 calls)
|
||||
|
||||
Ham: step 1 : 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 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)
|
||||
HamW2B : 0.04s CPU 0.04s WALL ( 3045 calls)
|
||||
ephW2Bp : 2.31s CPU 2.32s WALL ( 216 calls)
|
||||
ephW2B : 0.03s CPU 0.03s WALL ( 1512 calls)
|
||||
HamW2B : 0.05s CPU 0.05s WALL ( 3045 calls)
|
||||
ephW2Bp : 1.01s CPU 1.02s WALL ( 216 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
|
||||
EPW : 1m 1.52s CPU 1m 4.96s WALL
|
||||
EPW : 1m19.48s CPU 1m23.31s WALL
|
||||
|
||||
|
||||
Please consider citing:
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
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
|
||||
for quantum simulation of materials; please cite
|
||||
|
@ -43,6 +43,8 @@
|
|||
K-points division: npool = 4
|
||||
Fft bands division: nmany = 1
|
||||
|
||||
Reading supplied temperature list.
|
||||
|
||||
Reading xml data from directory:
|
||||
|
||||
./MgB2.save/
|
||||
|
@ -147,9 +149,9 @@
|
|||
Generated by new atomic code, or converted to UPF format
|
||||
Using radial grid of 157 points, 1 beta functions with:
|
||||
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
|
||||
|
@ -212,7 +214,7 @@
|
|||
( 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
|
||||
|
@ -221,7 +223,7 @@
|
|||
Calculating 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 crystal: 24
|
||||
|
||||
|
@ -389,12 +391,22 @@
|
|||
Bloch2wane: 26 / 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
|
||||
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 88Mb
|
||||
VmPeak = 691Mb
|
||||
Memory usage: VmHWM = 40Mb
|
||||
VmPeak = 636Mb
|
||||
===================================================================
|
||||
|
||||
Using uniform q-mesh: 6 6 6
|
||||
|
@ -424,8 +436,8 @@
|
|||
|
||||
All q-points are done, no need to restart !!
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 88Mb
|
||||
VmPeak = 691Mb
|
||||
Memory usage: VmHWM = 40Mb
|
||||
VmPeak = 636Mb
|
||||
===================================================================
|
||||
|
||||
|
||||
|
@ -436,8 +448,8 @@
|
|||
|
||||
Finish reading freq file
|
||||
|
||||
Fermi level (eV) = 7.6644747144E+00
|
||||
DOS(states/spin/eV/Unit Cell) = 9.1308569528E-01
|
||||
Fermi level (eV) = 7.6644747151E+00
|
||||
DOS(states/spin/eV/Unit Cell) = 9.1308569318E-01
|
||||
Electron smearing (eV) = 1.0000000000E-01
|
||||
Fermi window (eV) = 2.0000000000E+01
|
||||
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
||||
|
@ -459,11 +471,11 @@
|
|||
|
||||
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
|
||||
|
||||
|
@ -478,56 +490,56 @@
|
|||
|
||||
Size of allocated memory per pool: ~= 0.0379 Gb
|
||||
iter ethr znormi [eV] deltai [eV]
|
||||
1 2.322910E+00 1.842480E+00 5.100456E-03
|
||||
2 1.037702E-01 1.838418E+00 5.781253E-03
|
||||
3 1.129234E-01 1.832844E+00 6.595684E-03
|
||||
4 9.043058E-02 1.828321E+00 7.220061E-03
|
||||
5 1.666690E-01 1.817858E+00 8.456634E-03
|
||||
6 8.954464E-02 1.823347E+00 7.861750E-03
|
||||
7 1.235697E-02 1.822681E+00 7.938656E-03
|
||||
8 4.779288E-03 1.822416E+00 7.973884E-03
|
||||
1 2.322910E+00 1.842480E+00 5.100455E-03
|
||||
2 1.037702E-01 1.838418E+00 5.781252E-03
|
||||
3 1.129234E-01 1.832844E+00 6.595683E-03
|
||||
4 9.043058E-02 1.828321E+00 7.220060E-03
|
||||
5 1.666691E-01 1.817858E+00 8.456633E-03
|
||||
6 8.954472E-02 1.823346E+00 7.861748E-03
|
||||
7 1.235698E-02 1.822681E+00 7.938655E-03
|
||||
8 4.779268E-03 1.822416E+00 7.973883E-03
|
||||
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
|
||||
Cutoff frequency wscut = 0.5000
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
elphon_wrap : 11.70s CPU 12.77s WALL ( 1 calls)
|
||||
elphon_wrap : 13.55s CPU 15.17s WALL ( 1 calls)
|
||||
|
||||
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_us_1 : 0.01s CPU 0.01s WALL ( 2 calls)
|
||||
|
||||
|
||||
|
||||
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 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 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)
|
||||
|
||||
ELIASHBERG : 67.74s CPU 68.60s WALL ( 1 calls)
|
||||
ELIASHBERG : 86.56s CPU 86.57s WALL ( 1 calls)
|
||||
|
||||
Total program execution
|
||||
EPW : 1m20.85s CPU 1m22.95s WALL
|
||||
EPW : 1m41.91s CPU 1m44.77s WALL
|
||||
|
||||
|
||||
Please consider citing:
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
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
|
||||
for quantum simulation of materials; please cite
|
||||
|
@ -43,6 +43,8 @@
|
|||
K-points division: npool = 4
|
||||
Fft bands division: nmany = 1
|
||||
|
||||
Reading supplied temperature list.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
RESTART - RESTART - RESTART - RESTART
|
||||
Restart is done without reading PWSCF save file.
|
||||
|
@ -89,9 +91,9 @@
|
|||
G cutoff = 0.0000 ( 0 G-vectors) FFT grid: ( 0, 0, 0)
|
||||
number of k points= 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
|
||||
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 71Mb
|
||||
VmPeak = 667Mb
|
||||
Memory usage: VmHWM = 21Mb
|
||||
VmPeak = 602Mb
|
||||
===================================================================
|
||||
|
||||
Using uniform q-mesh: 6 6 6
|
||||
|
@ -147,8 +149,8 @@
|
|||
|
||||
All q-points are done, no need to restart !!
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 72Mb
|
||||
VmPeak = 667Mb
|
||||
Memory usage: VmHWM = 23Mb
|
||||
VmPeak = 629Mb
|
||||
===================================================================
|
||||
|
||||
|
||||
|
@ -159,8 +161,8 @@
|
|||
|
||||
Finish reading freq file
|
||||
|
||||
Fermi level (eV) = 7.6644747144E+00
|
||||
DOS(states/spin/eV/Unit Cell) = 9.1308569528E-01
|
||||
Fermi level (eV) = 7.6644747151E+00
|
||||
DOS(states/spin/eV/Unit Cell) = 9.1308569318E-01
|
||||
Electron smearing (eV) = 1.0000000000E-01
|
||||
Fermi window (eV) = 2.0000000000E+01
|
||||
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
||||
|
@ -182,11 +184,11 @@
|
|||
|
||||
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
|
||||
|
||||
|
@ -201,30 +203,30 @@
|
|||
|
||||
Size of allocated memory per pool: ~= 0.0357 Gb
|
||||
iter ethr znormi [eV] deltai [eV]
|
||||
1 2.324585E+00 1.842446E+00 5.071400E-03
|
||||
2 1.050021E-01 1.838424E+00 5.747030E-03
|
||||
3 1.139816E-01 1.832860E+00 6.561657E-03
|
||||
4 8.845982E-02 1.828464E+00 7.170242E-03
|
||||
5 1.774058E-01 1.817191E+00 8.498221E-03
|
||||
6 9.894098E-02 1.823272E+00 7.840917E-03
|
||||
7 1.447663E-02 1.822481E+00 7.932340E-03
|
||||
8 2.983707E-03 1.822322E+00 7.955351E-03
|
||||
1 2.324585E+00 1.842446E+00 5.071399E-03
|
||||
2 1.050021E-01 1.838424E+00 5.747029E-03
|
||||
3 1.139816E-01 1.832860E+00 6.561656E-03
|
||||
4 8.845982E-02 1.828464E+00 7.170240E-03
|
||||
5 1.774059E-01 1.817191E+00 8.498220E-03
|
||||
6 9.894108E-02 1.823272E+00 7.840916E-03
|
||||
7 1.447665E-02 1.822481E+00 7.932339E-03
|
||||
8 2.983689E-03 1.822322E+00 7.955349E-03
|
||||
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
|
||||
Cutoff frequency wscut = 0.5000
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
@ -236,14 +238,14 @@
|
|||
|
||||
|
||||
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)
|
||||
|
||||
ELIASHBERG : 64.43s CPU 64.56s WALL ( 1 calls)
|
||||
ELIASHBERG : 83.83s CPU 83.86s WALL ( 1 calls)
|
||||
|
||||
Total program execution
|
||||
EPW : 1m 4.50s CPU 1m 4.70s WALL
|
||||
EPW : 1m23.89s CPU 1m23.94s WALL
|
||||
|
||||
|
||||
Please consider citing:
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
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
|
||||
for quantum simulation of materials; please cite
|
||||
|
@ -43,6 +43,8 @@
|
|||
K-points division: npool = 4
|
||||
Fft bands division: nmany = 1
|
||||
|
||||
Reading supplied temperature list.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
RESTART - RESTART - RESTART - RESTART
|
||||
Restart is done without reading PWSCF save file.
|
||||
|
@ -97,8 +99,8 @@
|
|||
|
||||
Finish reading freq file
|
||||
|
||||
Fermi level (eV) = 7.6644747144E+00
|
||||
DOS(states/spin/eV/Unit Cell) = 9.1308569528E-01
|
||||
Fermi level (eV) = 7.6644747151E+00
|
||||
DOS(states/spin/eV/Unit Cell) = 9.1308569318E-01
|
||||
Electron smearing (eV) = 1.0000000000E-01
|
||||
Fermi window (eV) = 2.0000000000E+01
|
||||
Nr irreducible k-points within the Fermi shell = 28 out of 28
|
||||
|
@ -120,15 +122,19 @@
|
|||
|
||||
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
|
||||
|
||||
|
||||
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
|
||||
|
||||
Solve anisotropic Eliashberg equations on imaginary-axis
|
||||
|
@ -139,30 +145,98 @@
|
|||
|
||||
Size of allocated memory per pool: ~= 0.0334 Gb
|
||||
iter ethr znormi [eV] deltai [eV]
|
||||
1 2.319660E+00 1.842141E+00 5.045234E-03
|
||||
2 1.046268E-01 1.838152E+00 5.713803E-03
|
||||
3 1.138977E-01 1.832610E+00 6.525116E-03
|
||||
4 8.885152E-02 1.828215E+00 7.134617E-03
|
||||
5 1.922818E-01 1.815692E+00 8.594153E-03
|
||||
6 1.168990E-01 1.822927E+00 7.817943E-03
|
||||
7 1.390461E-02 1.822164E+00 7.905553E-03
|
||||
8 1.784640E-03 1.822072E+00 7.920160E-03
|
||||
1 2.319660E+00 1.842141E+00 5.045233E-03
|
||||
2 1.046268E-01 1.838152E+00 5.713802E-03
|
||||
3 1.138977E-01 1.832610E+00 6.525115E-03
|
||||
4 8.885151E-02 1.828215E+00 7.134616E-03
|
||||
5 1.922819E-01 1.815692E+00 8.594152E-03
|
||||
6 1.168992E-01 1.822927E+00 7.817942E-03
|
||||
7 1.390462E-02 1.822164E+00 7.905552E-03
|
||||
8 1.784621E-03 1.822072E+00 7.920158E-03
|
||||
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
|
||||
Cutoff frequency wscut = 0.5000
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
@ -175,10 +249,10 @@
|
|||
Electron-Phonon interpolation
|
||||
|
||||
|
||||
ELIASHBERG : 63.04s CPU 63.84s WALL ( 1 calls)
|
||||
ELIASHBERG : 97.74s CPU 97.83s WALL ( 1 calls)
|
||||
|
||||
Total program execution
|
||||
EPW : 1m 3.04s CPU 1m 3.85s WALL
|
||||
EPW : 1m37.74s CPU 1m37.84s WALL
|
||||
|
||||
|
||||
Please consider citing:
|
||||
|
|
|
@ -29,11 +29,9 @@
|
|||
|
||||
iverbosity = 0
|
||||
|
||||
eps_acustic = 5.0 ! Lowest boundary for the
|
||||
ephwrite = .true. ! Writes .ephmat files used when wliasberg = .true.
|
||||
ephwrite = .true. ! Writes .ephmat files used when Eliasberg = .true.
|
||||
|
||||
fsthick = 20.0 ! eV
|
||||
eptemp = 300 ! K
|
||||
degaussw = 0.10 ! eV
|
||||
degaussq = 0.5 ! meV
|
||||
nqstep = 500
|
||||
|
@ -50,12 +48,10 @@
|
|||
|
||||
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
||||
|
||||
nstemp = 1
|
||||
tempsmin = 15.00
|
||||
tempsmax = 20.00
|
||||
nstemp = 1 ! Nr. of temps
|
||||
temps = 15.00 ! K provide list of temperetures OR (nstemp and temps = tempsmin tempsmax for even space mode)
|
||||
|
||||
nsiter = 500
|
||||
assume_metal = .TRUE.
|
||||
muc = 0.16
|
||||
|
||||
dvscf_dir = './save'
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
epwwrite = .true.
|
||||
epwread = .false.
|
||||
|
||||
etf_mem = 0
|
||||
etf_mem = 1
|
||||
vme = .false.
|
||||
|
||||
nbndsub = 5,
|
||||
|
@ -28,11 +28,9 @@
|
|||
|
||||
iverbosity = 0
|
||||
|
||||
eps_acustic = 5.0 ! Lowest boundary for the
|
||||
ephwrite = .true. ! Writes .ephmat files used when wliasberg = .true.
|
||||
ephwrite = .true. ! Writes .ephmat files used when Eliasberg = .true.
|
||||
|
||||
fsthick = 20.0 ! eV
|
||||
eptemp = 300 ! K
|
||||
degaussw = 0.10 ! eV
|
||||
degaussq = 0.5 ! meV
|
||||
nqstep = 500
|
||||
|
@ -47,13 +45,11 @@
|
|||
|
||||
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
||||
|
||||
nstemp = 1
|
||||
tempsmin = 15.00
|
||||
tempsmax = 20.00
|
||||
nstemp = 1 ! Nr. of temps
|
||||
temps = 15.00 ! K provide list of temperetures OR (nstemp and temps = tempsmin tempsmax for even space mode)
|
||||
|
||||
nsiter = 500
|
||||
assume_metal = .TRUE.
|
||||
muc = 0.16
|
||||
muc = 0.16
|
||||
|
||||
dvscf_dir = './save'
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
epwwrite = .false.
|
||||
epwread = .true.
|
||||
|
||||
etf_mem = 0
|
||||
etf_mem = 1
|
||||
vme = .false.
|
||||
|
||||
nbndsub = 5,
|
||||
|
@ -28,11 +28,9 @@
|
|||
|
||||
iverbosity = 0
|
||||
|
||||
eps_acustic = 5.0 ! Lowest boundary for the
|
||||
ephwrite = .true. ! Writes .ephmat files used when wliasberg = .true.
|
||||
ephwrite = .true. ! Writes .ephmat files used when Eliasberg = .true.
|
||||
|
||||
fsthick = 20.0 ! eV
|
||||
eptemp = 300 ! K
|
||||
degaussw = 0.10 ! eV
|
||||
degaussq = 0.5 ! meV
|
||||
nqstep = 500
|
||||
|
@ -47,12 +45,10 @@
|
|||
|
||||
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
||||
|
||||
nstemp = 1
|
||||
tempsmin = 16.00
|
||||
tempsmax = 20.00
|
||||
nstemp = 1 ! Nr. of temps
|
||||
temps = 16.00 ! K provide list of temperetures OR (nstemp and temps = tempsmin tempsmax for even space mode)
|
||||
|
||||
nsiter = 500
|
||||
assume_metal = .TRUE.
|
||||
muc = 0.16
|
||||
|
||||
dvscf_dir = './save'
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
epwwrite = .false.
|
||||
epwread = .true.
|
||||
|
||||
etf_mem = 0
|
||||
etf_mem = 1
|
||||
vme = .false.
|
||||
|
||||
nbndsub = 5,
|
||||
|
@ -29,10 +29,9 @@
|
|||
iverbosity = 0
|
||||
|
||||
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
|
||||
eptemp = 300 ! K
|
||||
degaussw = 0.10 ! eV
|
||||
degaussq = 0.5 ! meV
|
||||
nqstep = 500
|
||||
|
@ -47,12 +46,10 @@
|
|||
|
||||
wscut = 0.5 ! eV Upper limit over frequency integration/summation in the Elisashberg eq
|
||||
|
||||
nstemp = 1
|
||||
tempsmin = 17.00
|
||||
tempsmax = 20.00
|
||||
! nstemp = 1 ! Nr. of temps (not required for the list mode in this example)
|
||||
temps = 17 20 30 ! K provide list of temperetures OR (nstemp and temps = tempsmin tempsmax for even space mode)
|
||||
|
||||
nsiter = 500
|
||||
assume_metal = .TRUE.
|
||||
muc = 0.16
|
||||
|
||||
dvscf_dir = './save'
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
a2f = .true.
|
||||
|
||||
fsthick = 15 ! eV
|
||||
eptemp = 2000 ! K
|
||||
temps = 2000 ! K
|
||||
degaussw = 1.0 ! eV
|
||||
|
||||
dvscf_dir = './save'
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
prtgkk = .true.
|
||||
|
||||
fsthick = 7.0
|
||||
eptemp = 20
|
||||
temps = 20
|
||||
degaussw = 0.05
|
||||
|
||||
filqf = 'pathq.dat'
|
||||
|
|
|
@ -40,7 +40,7 @@
|
|||
prtgkk = .true.
|
||||
|
||||
fsthick = 7.0
|
||||
eptemp = 20
|
||||
temps = 20
|
||||
degaussw = 0.05
|
||||
|
||||
filqf = 'pathq.dat'
|
||||
|
|
Loading…
Reference in New Issue