Merge branch 'develop' into 'develop'

Reorganization of temperature inputs for EPW

See merge request QEF/q-e!1008
This commit is contained in:
Samuel Poncé 2020-07-16 07:19:00 +00:00
commit 4ab5727c5a
84 changed files with 41693 additions and 41508 deletions

View File

@ -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'

View File

@ -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'

View File

@ -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'

View File

@ -31,7 +31,7 @@
fsthick = 3.0
eptemp = 300.0
temps = 300.0
degaussw = 0.1
efermi_read = .true.
fermi_energy= 9.9775

View File

@ -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

View File

@ -41,7 +41,7 @@
fsthick = 6 ! eV
eptemp = 0.0 ! K
temps = 0.0 ! K
degaussw = 0.005 ! eV
degaussq = 0.05 !meV

View File

@ -41,7 +41,7 @@
fsthick = 6 ! eV
eptemp = 0.075 ! K
temps = 0.075 ! K
degaussw = 0.05 ! eV
a2f = .true.

View File

@ -30,7 +30,7 @@
fsthick = 2.80284905 ! eV
eptemp = 200 ! K
temps = 200 ! K
degaussw = 0.1 ! eV
dvscf_dir = '../phonons/save'

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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 :: &

View File

@ -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, &

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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
!-----------------------------------------------------------------------

View File

@ -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

View File

@ -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
!
!-----------------------------------------------------------------------

View File

@ -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'
!

View File

@ -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

View File

@ -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

View File

@ -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'

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -25,6 +25,7 @@
!
IMPLICIT NONE
!
!
CALL print_clock_epw()
!
WRITE(stdout, '(a)') " "

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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/'

View File

@ -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/'

View File

@ -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/'

View File

@ -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/'

View File

@ -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/'

View File

@ -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/'

View File

@ -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/'

View File

@ -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/'

View File

@ -37,7 +37,7 @@
nw_specfun = 20
fsthick = 15 ! eV
eptemp = 300 ! K
temps = 300 ! K
degaussw = 1.0 ! eV
dvscf_dir = './save/'

View File

@ -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/'

View File

@ -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/'

View File

@ -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/'

View File

@ -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.

View File

@ -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.

View File

@ -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'

View File

@ -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'

View File

@ -45,7 +45,7 @@
a2f = .false.
fsthick = 1.2 ! eV
eptemp = 1 ! K
temps = 1 ! K
degaussw = 0.01 ! eV
dvscf_dir = './save/'

View File

@ -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/'

View File

@ -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/'

View File

@ -56,7 +56,7 @@
a2f = .false.
fsthick = 4.0 ! eV
eptemp = 300 ! K
temps = 300 ! K
degaussw = 0.5 ! eV
dvscf_dir = './save/'

View File

@ -45,7 +45,7 @@
a2f = .false.
fsthick = 2.0 ! eV
eptemp = 1 ! K
temps = 1 ! K
degaussw = 0.1 ! eV
dvscf_dir = './save/'

View File

@ -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/'

View File

@ -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/'

View File

@ -45,7 +45,7 @@
a2f = .false.
fsthick = 2.0 ! eV
eptemp = 1 ! K
temps = 1 ! K
degaussw = 0.1 ! eV
dvscf_dir = './save/'

View File

@ -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/'

View File

@ -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/'

View File

@ -45,7 +45,7 @@
a2f = .false.
fsthick = 2.0 ! eV
eptemp = 1 ! K
temps = 1 ! K
degaussw = 0.1 ! eV
dvscf_dir = './save/'

View File

@ -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/'

View File

@ -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/'

View File

@ -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/'

View File

@ -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/'

View File

@ -53,7 +53,7 @@
a2f = .false.
fsthick = 100.0 ! eV
eptemp = 1 ! K
temps = 1 ! K
degaussw = 0.01 ! eV
dvscf_dir = './save/'

View File

@ -29,8 +29,7 @@
epmatkqread = .false.
nstemp = 2
tempsmin = 100
tempsmax = 300
temps = 100 300
lpolar = .true.
etf_mem = 1

View File

@ -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

View File

@ -45,7 +45,7 @@
band_plot = .true.
fsthick = 3.0
eptemp = 20.0
temps = 20.0
degaussw = 0.01
specfun_pl = .true.

View File

@ -41,7 +41,7 @@
a2f = .false.
fsthick = 2.0 ! eV
eptemp = 300 ! K
temps = 300 ! K
degaussw = 0.1 ! eV
dvscf_dir = './save'

View File

@ -41,7 +41,7 @@
a2f = .false.
fsthick = 2.0 ! eV
eptemp = 300 ! K
temps = 300 ! K
degaussw = 0.1 ! eV
dvscf_dir = './save'

View File

@ -48,7 +48,7 @@
a2f = .false.
fsthick = 2.0 ! eV
eptemp = 300 ! K
temps = 300 ! K
degaussw = 0.1 ! eV
dvscf_dir = './save'

View File

@ -44,7 +44,7 @@
a2f = .true.
fsthick = 20 ! eV
eptemp = 500 ! K
temps = 500 ! K
degaussw = 0.2 ! eV
degaussq = 0.1 ! meV

View File

@ -47,7 +47,7 @@
a2f = .true.
fsthick = 20 ! eV
eptemp = 500 ! K
temps = 500 ! K
degaussw = 0.2 ! eV
degaussq = 0.1 ! meV

View File

@ -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:

View File

@ -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:

View File

@ -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:

View File

@ -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:

View File

@ -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'

View File

@ -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'

View File

@ -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'

View File

@ -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'

View File

@ -30,7 +30,7 @@
a2f = .true.
fsthick = 15 ! eV
eptemp = 2000 ! K
temps = 2000 ! K
degaussw = 1.0 ! eV
dvscf_dir = './save'

View File

@ -40,7 +40,7 @@
prtgkk = .true.
fsthick = 7.0
eptemp = 20
temps = 20
degaussw = 0.05
filqf = 'pathq.dat'

View File

@ -40,7 +40,7 @@
prtgkk = .true.
fsthick = 7.0
eptemp = 20
temps = 20
degaussw = 0.05
filqf = 'pathq.dat'