mirror of https://gitlab.com/QEF/q-e.git
Cleaning and optimization in EPW
1) Complete re-writing of the IBTE (at least an order of magnitude faster). 2) Supporting both k-point symmetry and no-symmetry 3) Creating of a few new modules 4) Addition of a epw_mob_ibte_sym for testing the IBTE using k-point symmetry. Both epw_mob_ibte_sym and epw_mob_ibte should give the same result but epw_mob_ibte_sym is much faster.
This commit is contained in:
parent
b1f3181fb0
commit
dd817a575a
|
@ -23,6 +23,7 @@ epwcom.o \
|
|||
constants_epw.o \
|
||||
io_epw.o \
|
||||
elph2.o \
|
||||
division.o \
|
||||
eliashbergcom.o \
|
||||
superconductivity.o \
|
||||
superconductivity_aniso.o \
|
||||
|
@ -30,6 +31,7 @@ superconductivity_iso.o \
|
|||
io_eliashberg.o \
|
||||
io_scattering.o \
|
||||
transportcom.o \
|
||||
close_epw.o \
|
||||
printing.o \
|
||||
transport.o \
|
||||
transport_iter.o \
|
||||
|
@ -39,9 +41,7 @@ allocate_epwq.o \
|
|||
bcast_epw_input.o \
|
||||
bloch2wan.o \
|
||||
broyden.o \
|
||||
close_epw.o \
|
||||
createkmap.o \
|
||||
deallocate_epw.o \
|
||||
dvanqq2.o \
|
||||
dvqpsi_us3.o \
|
||||
dvqpsi_us_only3.o \
|
||||
|
@ -60,7 +60,6 @@ gmap_sym.o \
|
|||
indabs.o \
|
||||
io_dyn_mat2.o \
|
||||
kfold.o \
|
||||
kpointdivision.o \
|
||||
kpoint_grid_epw.o \
|
||||
ktokpmq.o \
|
||||
loadkmesh.o \
|
||||
|
@ -72,6 +71,7 @@ openfilepw.o \
|
|||
rgd_blk_epw_fine_mem.o \
|
||||
plot_band.o \
|
||||
poolgather.o \
|
||||
print_ibte.o \
|
||||
readdvscf.o \
|
||||
readgmap.o \
|
||||
readmat_shuffle2.o \
|
||||
|
|
|
@ -49,7 +49,7 @@
|
|||
restart, restart_freq, prtgkk, nel, meff, epsiHEG, &
|
||||
scatread, restart, restart_freq, restart_filq, &
|
||||
lphase, omegamin, omegamax, omegastep, n_r, lindabs,&
|
||||
mob_maxiter, use_ws
|
||||
mob_maxiter, use_ws, epmatkqread, selecqread
|
||||
USE elph2, ONLY : elph
|
||||
USE mp, ONLY : mp_bcast
|
||||
USE mp_world, ONLY : world_comm
|
||||
|
@ -133,6 +133,8 @@
|
|||
CALL mp_bcast (lphase , meta_ionode_id, world_comm)
|
||||
CALL mp_bcast (lindabs , meta_ionode_id, world_comm)
|
||||
CALL mp_bcast (use_ws , meta_ionode_id, world_comm)
|
||||
CALL mp_bcast (epmatkqread , meta_ionode_id, world_comm)
|
||||
CALL mp_bcast (selecqread , meta_ionode_id, world_comm)
|
||||
!
|
||||
! integers
|
||||
!
|
||||
|
|
|
@ -1,17 +1,233 @@
|
|||
!
|
||||
! Copyright (C) 2010-2016 Samuel Ponce', Roxana Margine, Carla Verdi, Feliciano Giustino
|
||||
! Copyright (C) 2010-2019 Samuel Ponce', Roxana Margine, Carla Verdi, Feliciano Giustino
|
||||
! Copyright (C) 2007-2009 Jesse Noffsinger, Brad Malone, Feliciano Giustino
|
||||
!
|
||||
! This file is distributed under the terms of the GNU General Public
|
||||
! License. See the file `LICENSE' in the root directory of the
|
||||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
! Original code adapted from PH/close_phq - Quantum-ESPRESSO group
|
||||
! 09/2009 This subroutine is functional and probably complete
|
||||
! a few more files may be deleted to clean the working directory
|
||||
!
|
||||
!----------------------------------------------------------------------
|
||||
MODULE close_epw
|
||||
!----------------------------------------------------------------------
|
||||
!!
|
||||
!! This module contains routines related to deallocation and closing of files
|
||||
!!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
CONTAINS
|
||||
!
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
SUBROUTINE iter_close
|
||||
!----------------------------------------------------------------------------
|
||||
!
|
||||
! This subroutine opens all the files needed to save scattering rates for the IBTE.
|
||||
!
|
||||
USE kinds, ONLY : DP
|
||||
USE io_files, ONLY : tmp_dir, prefix
|
||||
USE io_epw, ONLY : iufilibtev_sup, iunepmat, iunsparseq, iunsparsek, &
|
||||
iunsparsei, iunsparsej, iunsparset, iunsparseqcb, &
|
||||
iunsparsekcb, iunrestart, iunsparseicb, iunsparsejcb,&
|
||||
iunsparsetcb, iunepmatcb, iunepmatwp2
|
||||
USE epwcom, ONLY : iterative_bte, mp_mesh_k, int_mob, carrier, etf_mem, &
|
||||
epmatkqread
|
||||
USE elph2, ONLY : inv_tau_all, zi_allvb, inv_tau_allcb, zi_allcb, &
|
||||
map_rebal, map_rebal_inv
|
||||
USE transportcom, ONLY : s_BZtoIBZ_full, ixkqf_tr
|
||||
#if defined(__MPI)
|
||||
USE parallel_include, ONLY : MPI_MODE_WRONLY, MPI_MODE_CREATE, MPI_INFO_NULL
|
||||
#endif
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
! Local variables
|
||||
INTEGER :: ierr
|
||||
!! Error status
|
||||
!
|
||||
DEALLOCATE (inv_tau_all)
|
||||
DEALLOCATE (zi_allvb)
|
||||
IF (mp_mesh_k .AND. iterative_bte .AND. epmatkqread) DEALLOCATE (s_BZtoIBZ_full)
|
||||
IF (mp_mesh_k .AND. iterative_bte .AND. epmatkqread) DEALLOCATE (ixkqf_tr)
|
||||
IF (int_mob .AND. carrier) DEALLOCATE (inv_tau_allcb)
|
||||
IF (int_mob .AND. carrier) DEALLOCATE (zi_allcb)
|
||||
!
|
||||
#if defined(__MPI)
|
||||
IF (etf_mem == 1) then
|
||||
CALL MPI_FILE_CLOSE(iunepmatwp2,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1 )
|
||||
ENDIF
|
||||
!
|
||||
IF (iterative_bte) THEN
|
||||
CALL MPI_FILE_CLOSE(iunepmat,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
CALL MPI_FILE_CLOSE(iunsparseq,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
CALL MPI_FILE_CLOSE(iunsparsek,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
CALL MPI_FILE_CLOSE(iunsparsei,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
CALL MPI_FILE_CLOSE(iunsparsej,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
CALL MPI_FILE_CLOSE(iunsparset,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
|
||||
CALL MPI_FILE_CLOSE(iunepmatcb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
CALL MPI_FILE_CLOSE(iunsparseqcb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
CALL MPI_FILE_CLOSE(iunsparsekcb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
CALL MPI_FILE_CLOSE(iunsparseicb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
CALL MPI_FILE_CLOSE(iunsparsejcb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
CALL MPI_FILE_CLOSE(iunsparsetcb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_close', 'error in MPI_FILE_CLOSE',1)
|
||||
ENDIF
|
||||
#endif
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
END SUBROUTINE iter_close
|
||||
!----------------------------------------------------------------------------
|
||||
|
||||
!----------------------------------------------------------------------
|
||||
SUBROUTINE deallocate_epw
|
||||
!----------------------------------------------------------------------
|
||||
!!
|
||||
!! deallocates the variables allocated by allocate_epw
|
||||
!! this routine is unchanged as of 3/9/09 and should be cleaned and fixed
|
||||
!! 09/2009 Cleanup still necessary
|
||||
!! 12/2009 Added variables from elph.f90
|
||||
!!
|
||||
!! RM - Nov/Dec 2014
|
||||
!! Imported the noncolinear case implemented by xlzhang
|
||||
!!
|
||||
!----------------------------------------------------------------------
|
||||
USE phcom, ONLY : alphap, alphasum, alphasum_nc, &
|
||||
becsum_nc, dmuxc, dpsi,&
|
||||
drc, dpsi, dyn, evq, dvpsi,&
|
||||
int5, vlocq, int2_so, int5_so
|
||||
USE lrus, ONLY : becp1, int3, int3_nc
|
||||
USE phus, ONLY : int1, int1_nc, int2, int4, int4_nc
|
||||
USE lr_symm_base, ONLY : rtau
|
||||
USE noncollin_module, ONLY : m_loc
|
||||
USE control_lr, ONLY : nbnd_occ
|
||||
USE becmod, ONLY : becp, deallocate_bec_type
|
||||
USE elph2, ONLY : el_ph_mat, epf17, epsi, etf,&
|
||||
etq, et_all, wf, wkf, wqf, &
|
||||
xkq, xk_all, zstar, xkf, xqf, epmatwp, eps_rpa
|
||||
USE epwcom, ONLY : epbread, epwread
|
||||
USE modes, ONLY : npert, u, name_rap_mode, num_rap_mode
|
||||
USE qpoint, ONLY : eigqts, igkq
|
||||
USE klist, ONLY : nks
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER :: ik
|
||||
!! k-point number
|
||||
INTEGER :: ipol
|
||||
!! Polarization number
|
||||
!
|
||||
IF ( epwread .and. .not. epbread ) THEN
|
||||
! EPW variables ONLY
|
||||
!
|
||||
IF(ALLOCATED(el_ph_mat)) DEALLOCATE (el_ph_mat)
|
||||
IF(ALLOCATED(epmatwp)) DEALLOCATE (epmatwp)
|
||||
IF(ALLOCATED(epf17)) DEALLOCATE (epf17)
|
||||
IF(ALLOCATED(etq)) DEALLOCATE (etq)
|
||||
IF(ALLOCATED(etf)) DEALLOCATE (etf)
|
||||
IF(ALLOCATED(wf)) DEALLOCATE (wf)
|
||||
IF(ALLOCATED(xkq)) DEALLOCATE (xkq)
|
||||
IF(ALLOCATED(xkf)) DEALLOCATE (xkf)
|
||||
IF(ALLOCATED(wkf)) DEALLOCATE (wkf)
|
||||
IF(ALLOCATED(xqf)) DEALLOCATE (xqf)
|
||||
IF(ALLOCATED(wqf)) DEALLOCATE (wqf)
|
||||
IF(ALLOCATED(xk_all)) DEALLOCATE (xk_all)
|
||||
IF(ALLOCATED(et_all)) DEALLOCATE (et_all)
|
||||
IF(ALLOCATED(eps_rpa)) DEALLOCATE (eps_rpa)
|
||||
IF(ALLOCATED(eps_rpa)) DEALLOCATE (eps_rpa)
|
||||
!
|
||||
ELSE
|
||||
!
|
||||
IF(ASSOCIATED(evq)) DEALLOCATE(evq)
|
||||
IF(ASSOCIATED(igkq)) DEALLOCATE(igkq)
|
||||
!
|
||||
IF(ALLOCATED(dvpsi)) DEALLOCATE (dvpsi)
|
||||
IF(ALLOCATED(dpsi)) DEALLOCATE ( dpsi)
|
||||
!
|
||||
IF(ALLOCATED(vlocq)) DEALLOCATE (vlocq)
|
||||
IF(ALLOCATED(dmuxc)) DEALLOCATE (dmuxc)
|
||||
!
|
||||
IF(ALLOCATED(eigqts)) DEALLOCATE (eigqts)
|
||||
IF(ALLOCATED(rtau)) DEALLOCATE (rtau)
|
||||
IF(ASSOCIATED(u)) DEALLOCATE (u)
|
||||
if(allocated(name_rap_mode)) deallocate (name_rap_mode)
|
||||
if(allocated(num_rap_mode)) deallocate (num_rap_mode)
|
||||
IF(ALLOCATED(dyn)) DEALLOCATE (dyn)
|
||||
IF(ALLOCATED(epsi)) DEALLOCATE (epsi)
|
||||
IF(ALLOCATED(zstar)) DEALLOCATE (zstar)
|
||||
!
|
||||
IF(ALLOCATED(npert)) DEALLOCATE (npert)
|
||||
!
|
||||
IF(ALLOCATED(int1)) DEALLOCATE (int1)
|
||||
IF(ALLOCATED(int2)) DEALLOCATE (int2)
|
||||
IF(ALLOCATED(int3)) DEALLOCATE (int3)
|
||||
IF(ALLOCATED(int4)) DEALLOCATE (int4)
|
||||
IF(ALLOCATED(int5)) DEALLOCATE (int5)
|
||||
IF(ALLOCATED(int1_nc)) DEALLOCATE(int1_nc)
|
||||
IF(ALLOCATED(int3_nc)) DEALLOCATE(int3_nc)
|
||||
IF(ALLOCATED(int4_nc)) DEALLOCATE(int4_nc)
|
||||
IF(ALLOCATED(becsum_nc)) DEALLOCATE(becsum_nc)
|
||||
IF(ALLOCATED(alphasum_nc)) DEALLOCATE(alphasum_nc)
|
||||
IF(ALLOCATED(int2_so)) DEALLOCATE(int2_so)
|
||||
IF(ALLOCATED(int5_so)) DEALLOCATE(int5_so)
|
||||
IF(ALLOCATED(alphasum)) DEALLOCATE (alphasum)
|
||||
!
|
||||
if(allocated(alphap)) then
|
||||
do ik=1,nks
|
||||
do ipol=1,3
|
||||
call deallocate_bec_type ( alphap(ipol,ik) )
|
||||
enddo
|
||||
end do
|
||||
deallocate (alphap)
|
||||
endif
|
||||
if(allocated(becp1)) then
|
||||
do ik=1,size(becp1)
|
||||
call deallocate_bec_type ( becp1(ik) )
|
||||
end do
|
||||
deallocate(becp1)
|
||||
end if
|
||||
call deallocate_bec_type ( becp )
|
||||
|
||||
IF(ALLOCATED(nbnd_occ)) DEALLOCATE(nbnd_occ)
|
||||
IF(ALLOCATED(m_loc)) DEALLOCATE(m_loc)
|
||||
!
|
||||
IF(ALLOCATED(drc)) DEALLOCATE(drc)
|
||||
!
|
||||
! EPW variables
|
||||
!
|
||||
IF(ALLOCATED(el_ph_mat)) DEALLOCATE (el_ph_mat)
|
||||
IF(ALLOCATED(epmatwp)) DEALLOCATE (epmatwp)
|
||||
IF(ALLOCATED(epf17)) DEALLOCATE (epf17)
|
||||
IF(ALLOCATED(etq)) DEALLOCATE (etq)
|
||||
IF(ALLOCATED(etf)) DEALLOCATE (etf)
|
||||
IF(ALLOCATED(wf)) DEALLOCATE (wf)
|
||||
IF(ALLOCATED(xkq)) DEALLOCATE (xkq)
|
||||
IF(ALLOCATED(xkf)) DEALLOCATE (xkf)
|
||||
IF(ALLOCATED(wkf)) DEALLOCATE (wkf)
|
||||
IF(ALLOCATED(xqf)) DEALLOCATE (xqf)
|
||||
IF(ALLOCATED(wqf)) DEALLOCATE (wqf)
|
||||
IF(ALLOCATED(xk_all)) DEALLOCATE (xk_all)
|
||||
IF(ALLOCATED(et_all)) DEALLOCATE (et_all)
|
||||
IF(ALLOCATED(eps_rpa)) DEALLOCATE (eps_rpa)
|
||||
ENDIF ! epwread .and. .not. epbread
|
||||
!
|
||||
END SUBROUTINE deallocate_epw
|
||||
! ---------------------------------------------------------------
|
||||
!
|
||||
!------------------------------------------------------------------
|
||||
SUBROUTINE close_epw
|
||||
SUBROUTINE close_final
|
||||
!------------------------------------------------------------------
|
||||
!
|
||||
USE units_lr, ONLY : iuwfc
|
||||
|
@ -33,4 +249,7 @@
|
|||
IF (fildrho.ne.' ') CLOSE (unit = iudrho, status = 'keep')
|
||||
ENDIF
|
||||
!
|
||||
END SUBROUTINE close_epw
|
||||
END SUBROUTINE close_final
|
||||
! ------------------------------------------------------------------
|
||||
!
|
||||
END MODULE close_epw
|
||||
|
|
|
@ -64,6 +64,8 @@
|
|||
REAL(DP), PARAMETER :: eps16 = 1.0E-16_DP
|
||||
REAL(DP), PARAMETER :: eps24 = 1.0E-24_DP
|
||||
REAL(DP), PARAMETER :: eps32 = 1.0E-32_DP
|
||||
REAL(DP), PARAMETER :: eps80 = 1.0E-80_DP
|
||||
REAL(DP), PARAMETER :: eps160 = 1.0E-160_DP
|
||||
!
|
||||
END MODULE constants_epw
|
||||
|
||||
|
|
|
@ -1,139 +0,0 @@
|
|||
!
|
||||
! Copyright (C) 2010-2016 Samuel Ponce', Roxana Margine, Carla Verdi, Feliciano Giustino
|
||||
! Copyright (C) 2007-2009 Jesse Noffsinger, Brad Malone, Feliciano Giustino
|
||||
!
|
||||
! This file is distributed under the terms of the GNU General Public
|
||||
! License. See the file `LICENSE' in the root directory of the
|
||||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
! Code adapted from PH/deallocate_phq - Quantum-ESPRESSO group
|
||||
!
|
||||
!----------------------------------------------------------------------
|
||||
SUBROUTINE deallocate_epw
|
||||
!----------------------------------------------------------------------
|
||||
!!
|
||||
!! deallocates the variables allocated by allocate_epw
|
||||
!! this routine is unchanged as of 3/9/09 and should be cleaned and fixed
|
||||
!! 09/2009 Cleanup still necessary
|
||||
!! 12/2009 Added variables from elph.f90
|
||||
!!
|
||||
!! RM - Nov/Dec 2014
|
||||
!! Imported the noncolinear case implemented by xlzhang
|
||||
!!
|
||||
!----------------------------------------------------------------------
|
||||
USE phcom, ONLY : alphap, alphasum, alphasum_nc, &
|
||||
becsum_nc, dmuxc, dpsi,&
|
||||
drc, dpsi, dyn, evq, dvpsi,&
|
||||
int5, vlocq, int2_so, int5_so
|
||||
USE lrus, ONLY : becp1, int3, int3_nc
|
||||
USE phus, ONLY : int1, int1_nc, int2, int4, int4_nc
|
||||
USE lr_symm_base, ONLY : rtau
|
||||
USE noncollin_module, ONLY : m_loc
|
||||
USE control_lr, ONLY : nbnd_occ
|
||||
USE becmod, ONLY : becp, deallocate_bec_type
|
||||
USE elph2, ONLY : el_ph_mat, epf17, epsi, etf,&
|
||||
etq, et_all, wf, wkf, wqf, &
|
||||
xkq, xk_all, zstar, xkf, xqf, epmatwp, eps_rpa
|
||||
USE epwcom, ONLY : epbread, epwread
|
||||
USE modes, ONLY : npert, u, name_rap_mode, num_rap_mode
|
||||
USE qpoint, ONLY : eigqts, igkq
|
||||
USE klist, ONLY : nks
|
||||
!
|
||||
IMPLICIT NONE
|
||||
INTEGER :: ik, ipol
|
||||
!
|
||||
IF ( epwread .and. .not. epbread ) THEN
|
||||
! EPW variables ONLY
|
||||
!
|
||||
IF(ALLOCATED(el_ph_mat)) DEALLOCATE (el_ph_mat)
|
||||
IF(ALLOCATED(epmatwp)) DEALLOCATE (epmatwp)
|
||||
IF(ALLOCATED(epf17)) DEALLOCATE (epf17)
|
||||
IF(ALLOCATED(etq)) DEALLOCATE (etq)
|
||||
IF(ALLOCATED(etf)) DEALLOCATE (etf)
|
||||
IF(ALLOCATED(wf)) DEALLOCATE (wf)
|
||||
IF(ALLOCATED(xkq)) DEALLOCATE (xkq)
|
||||
IF(ALLOCATED(xkf)) DEALLOCATE (xkf)
|
||||
IF(ALLOCATED(wkf)) DEALLOCATE (wkf)
|
||||
IF(ALLOCATED(xqf)) DEALLOCATE (xqf)
|
||||
IF(ALLOCATED(wqf)) DEALLOCATE (wqf)
|
||||
IF(ALLOCATED(xk_all)) DEALLOCATE (xk_all)
|
||||
IF(ALLOCATED(et_all)) DEALLOCATE (et_all)
|
||||
IF(ALLOCATED(eps_rpa)) DEALLOCATE (eps_rpa)
|
||||
IF(ALLOCATED(eps_rpa)) DEALLOCATE (eps_rpa)
|
||||
!
|
||||
ELSE
|
||||
!
|
||||
IF(ASSOCIATED(evq)) DEALLOCATE(evq)
|
||||
IF(ASSOCIATED(igkq)) DEALLOCATE(igkq)
|
||||
!
|
||||
IF(ALLOCATED(dvpsi)) DEALLOCATE (dvpsi)
|
||||
IF(ALLOCATED(dpsi)) DEALLOCATE ( dpsi)
|
||||
!
|
||||
IF(ALLOCATED(vlocq)) DEALLOCATE (vlocq)
|
||||
IF(ALLOCATED(dmuxc)) DEALLOCATE (dmuxc)
|
||||
!
|
||||
IF(ALLOCATED(eigqts)) DEALLOCATE (eigqts)
|
||||
IF(ALLOCATED(rtau)) DEALLOCATE (rtau)
|
||||
IF(ASSOCIATED(u)) DEALLOCATE (u)
|
||||
if(allocated(name_rap_mode)) deallocate (name_rap_mode)
|
||||
if(allocated(num_rap_mode)) deallocate (num_rap_mode)
|
||||
IF(ALLOCATED(dyn)) DEALLOCATE (dyn)
|
||||
IF(ALLOCATED(epsi)) DEALLOCATE (epsi)
|
||||
IF(ALLOCATED(zstar)) DEALLOCATE (zstar)
|
||||
!
|
||||
IF(ALLOCATED(npert)) DEALLOCATE (npert)
|
||||
!
|
||||
IF(ALLOCATED(int1)) DEALLOCATE (int1)
|
||||
IF(ALLOCATED(int2)) DEALLOCATE (int2)
|
||||
IF(ALLOCATED(int3)) DEALLOCATE (int3)
|
||||
IF(ALLOCATED(int4)) DEALLOCATE (int4)
|
||||
IF(ALLOCATED(int5)) DEALLOCATE (int5)
|
||||
IF(ALLOCATED(int1_nc)) DEALLOCATE(int1_nc)
|
||||
IF(ALLOCATED(int3_nc)) DEALLOCATE(int3_nc)
|
||||
IF(ALLOCATED(int4_nc)) DEALLOCATE(int4_nc)
|
||||
IF(ALLOCATED(becsum_nc)) DEALLOCATE(becsum_nc)
|
||||
IF(ALLOCATED(alphasum_nc)) DEALLOCATE(alphasum_nc)
|
||||
IF(ALLOCATED(int2_so)) DEALLOCATE(int2_so)
|
||||
IF(ALLOCATED(int5_so)) DEALLOCATE(int5_so)
|
||||
IF(ALLOCATED(alphasum)) DEALLOCATE (alphasum)
|
||||
!
|
||||
if(allocated(alphap)) then
|
||||
do ik=1,nks
|
||||
do ipol=1,3
|
||||
call deallocate_bec_type ( alphap(ipol,ik) )
|
||||
enddo
|
||||
end do
|
||||
deallocate (alphap)
|
||||
endif
|
||||
if(allocated(becp1)) then
|
||||
do ik=1,size(becp1)
|
||||
call deallocate_bec_type ( becp1(ik) )
|
||||
end do
|
||||
deallocate(becp1)
|
||||
end if
|
||||
call deallocate_bec_type ( becp )
|
||||
|
||||
IF(ALLOCATED(nbnd_occ)) DEALLOCATE(nbnd_occ)
|
||||
IF(ALLOCATED(m_loc)) DEALLOCATE(m_loc)
|
||||
!
|
||||
IF(ALLOCATED(drc)) DEALLOCATE(drc)
|
||||
!
|
||||
! EPW variables
|
||||
!
|
||||
IF(ALLOCATED(el_ph_mat)) DEALLOCATE (el_ph_mat)
|
||||
IF(ALLOCATED(epmatwp)) DEALLOCATE (epmatwp)
|
||||
IF(ALLOCATED(epf17)) DEALLOCATE (epf17)
|
||||
IF(ALLOCATED(etq)) DEALLOCATE (etq)
|
||||
IF(ALLOCATED(etf)) DEALLOCATE (etf)
|
||||
IF(ALLOCATED(wf)) DEALLOCATE (wf)
|
||||
IF(ALLOCATED(xkq)) DEALLOCATE (xkq)
|
||||
IF(ALLOCATED(xkf)) DEALLOCATE (xkf)
|
||||
IF(ALLOCATED(wkf)) DEALLOCATE (wkf)
|
||||
IF(ALLOCATED(xqf)) DEALLOCATE (xqf)
|
||||
IF(ALLOCATED(wqf)) DEALLOCATE (wqf)
|
||||
IF(ALLOCATED(xk_all)) DEALLOCATE (xk_all)
|
||||
IF(ALLOCATED(et_all)) DEALLOCATE (et_all)
|
||||
IF(ALLOCATED(eps_rpa)) DEALLOCATE (eps_rpa)
|
||||
ENDIF ! epwread .and. .not. epbread
|
||||
!
|
||||
END SUBROUTINE deallocate_epw
|
|
@ -0,0 +1,254 @@
|
|||
!
|
||||
! Copyright (C) 2010-2016 Samuel Ponce', Roxana Margine, Carla Verdi, Feliciano Giustino
|
||||
! Copyright (C) 2007-2009 Jesse Noffsinger, Brad Malone, Feliciano Giustino
|
||||
!
|
||||
! This file is distributed under the terms of the GNU General Public
|
||||
! License. See the file `LICENSE' in the root directory of the
|
||||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
!----------------------------------------------------------------------
|
||||
MODULE division
|
||||
!----------------------------------------------------------------------
|
||||
!!
|
||||
!! This module contains various core splitting routines
|
||||
!!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
CONTAINS
|
||||
!
|
||||
!---------------------------------------------------------------------
|
||||
SUBROUTINE kpointdivision ( ik0 )
|
||||
!---------------------------------------------------------------------
|
||||
!!
|
||||
!! This is just to find the first kpoint block in the pool
|
||||
!!
|
||||
!---------------------------------------------------------------------
|
||||
!
|
||||
USE mp_global, ONLY : my_pool_id,npool
|
||||
USE pwcom, ONLY : nkstot
|
||||
!
|
||||
implicit none
|
||||
integer :: ik0
|
||||
integer :: nkl, nkr, iks
|
||||
!
|
||||
#if defined(__MPI)
|
||||
!
|
||||
! number of kpoint blocks, kpoints per pool and reminder
|
||||
!
|
||||
nkl = 1 * ( nkstot / npool )
|
||||
nkr = ( nkstot - nkl * npool ) / 1
|
||||
!
|
||||
! the reminder goes to the first nkr pools
|
||||
! (0...nkr-1)
|
||||
!
|
||||
IF ( my_pool_id < nkr ) nkl = nkl + 1 !kunit
|
||||
!
|
||||
! the index of the first k point in this pool
|
||||
!
|
||||
iks = nkl * my_pool_id + 1
|
||||
IF ( my_pool_id >= nkr ) iks = iks + nkr * 1 !kunit
|
||||
!
|
||||
! the index of the first k point block in this pool - 1
|
||||
! (I will need the index of ik, not ikk)
|
||||
!
|
||||
ik0 = ( iks - 1 )
|
||||
!
|
||||
#else
|
||||
ik0 = 0
|
||||
#endif
|
||||
!
|
||||
END SUBROUTINE kpointdivision
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE fkbounds( nktot, lower_bnd, upper_bnd )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! Subroutine finds the lower and upper bounds a k-grid in parallel
|
||||
!!
|
||||
!! @ Note:
|
||||
!! If you have 19 kpts and 2 pool, this routine will return
|
||||
!! lower_bnd= 1 and upper_bnd=10 for the first pool
|
||||
!! lower_bnd= 1 and upper_bnd=9 for the second pool
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
USE mp_global, ONLY : my_pool_id, npool
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER, INTENT (in) :: nktot
|
||||
!! nktot k-points splited over pools
|
||||
INTEGER, INTENT (out) :: lower_bnd
|
||||
!! Lower kpt bounds for that image pool
|
||||
INTEGER, INTENT (out) :: upper_bnd
|
||||
!! Upper kpt for that image pool
|
||||
!
|
||||
#if defined(__MPI)
|
||||
!
|
||||
INTEGER :: nkl, nkr
|
||||
!
|
||||
! find the bounds of k-dependent arrays in the parallel case
|
||||
! number of kpoint blocks, kpoints per pool and reminder
|
||||
!
|
||||
nkl = nktot / npool
|
||||
nkr = nktot - nkl * npool
|
||||
!
|
||||
! the reminder goes to the first nkr pools (0...nkr-1)
|
||||
!
|
||||
IF (my_pool_id < nkr ) nkl = nkl + 1
|
||||
!
|
||||
! the index of the first k point in this pool
|
||||
!
|
||||
lower_bnd = my_pool_id * nkl + 1
|
||||
IF ( my_pool_id >= nkr ) lower_bnd = my_pool_id * nkl + 1 + nkr
|
||||
!
|
||||
! the index of the last k point in this pool
|
||||
!
|
||||
upper_bnd = lower_bnd + nkl - 1
|
||||
!
|
||||
#else
|
||||
!
|
||||
! In serial the definitions are much easier
|
||||
!
|
||||
lower_bnd = 1
|
||||
upper_bnd = nktot
|
||||
!
|
||||
#endif
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
END SUBROUTINE fkbounds
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE fkbounds2( nktot, lower_bnd, upper_bnd )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! Subroutine finds the lower and upper bounds a k-grid in parallel
|
||||
!!
|
||||
!! @ Note:
|
||||
!! If you have 19 kpts and 2 pool, this routine will return
|
||||
!! lower_bnd= 1 and upper_bnd=10 for the first pool
|
||||
!! lower_bnd= 1 and upper_bnd=9 for the second pool
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
USE mp_global, ONLY : my_pool_id, npool
|
||||
USE parallel_include, ONLY : MPI_OFFSET_KIND
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
#if defined(__MPI)
|
||||
INTEGER (kind=MPI_OFFSET_KIND), INTENT (in) :: nktot
|
||||
!! nktot k-points splited over pools
|
||||
#else
|
||||
INTEGER (KIND=8), INTENT (IN) :: ind_tot
|
||||
!! nktot k-points splited over pools
|
||||
#endif
|
||||
INTEGER, INTENT (out) :: lower_bnd
|
||||
!! Lower kpt bounds for that image pool
|
||||
INTEGER, INTENT (out) :: upper_bnd
|
||||
!! Upper kpt for that image pool
|
||||
!
|
||||
#if defined(__MPI)
|
||||
!
|
||||
INTEGER :: nkl, nkr
|
||||
!
|
||||
! find the bounds of k-dependent arrays in the parallel case
|
||||
! number of kpoint blocks, kpoints per pool and reminder
|
||||
!
|
||||
nkl = nktot / npool
|
||||
nkr = nktot - nkl * npool
|
||||
!
|
||||
! the reminder goes to the first nkr pools (0...nkr-1)
|
||||
!
|
||||
IF (my_pool_id < nkr ) nkl = nkl + 1
|
||||
!
|
||||
! the index of the first k point in this pool
|
||||
!
|
||||
lower_bnd = my_pool_id * nkl + 1
|
||||
IF ( my_pool_id >= nkr ) lower_bnd = my_pool_id * nkl + 1 + nkr
|
||||
!
|
||||
! the index of the last k point in this pool
|
||||
!
|
||||
upper_bnd = lower_bnd + nkl - 1
|
||||
!
|
||||
#else
|
||||
!
|
||||
! In serial the definitions are much easier
|
||||
!
|
||||
lower_bnd = 1
|
||||
upper_bnd = nktot
|
||||
!
|
||||
#endif
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
END SUBROUTINE fkbounds2
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
!-----------------------------------------------------------------------
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE fkbounds_bnd( nbnd, lower_bnd, upper_bnd )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! Subroutine finds the lower and upper bounds in band parallelization
|
||||
!!
|
||||
!! @ Note:
|
||||
!! If you have 20 bands and 2 images, this routine will return
|
||||
!! lower_bnd= 1 and upper_bnd=10 for the first pool
|
||||
!! lower_bnd= 11 and upper_bnd=19 for the second pool
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
USE mp_images, ONLY: nimage, my_image_id
|
||||
! number of images, number of processor within an image, index of the proc within an image
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER, INTENT (in) :: nbnd
|
||||
!! Total number of band to be splitted among images
|
||||
INTEGER, INTENT (out) :: lower_bnd
|
||||
!! Lower band bounds for that image pool
|
||||
INTEGER, INTENT (out) :: upper_bnd
|
||||
!! Upper band bound for that image pool
|
||||
!
|
||||
#if defined(__MPI)
|
||||
!
|
||||
INTEGER :: nkl, nkr
|
||||
!
|
||||
! find the bounds of k-dependent arrays in the parallel case
|
||||
! number of kpoint blocks, kpoints per pool and reminder
|
||||
!
|
||||
nkl = nbnd / nimage
|
||||
nkr = nbnd - nkl * nimage
|
||||
!
|
||||
! the reminder goes to the first nkr pools (0...nkr-1)
|
||||
!
|
||||
IF (my_image_id < nkr ) nkl = nkl + 1
|
||||
!
|
||||
! the index of the first k point in this pool
|
||||
!
|
||||
lower_bnd = my_image_id * nkl + 1
|
||||
IF ( my_image_id >= nkr ) lower_bnd = my_image_id * nkl + 1 + nkr
|
||||
!
|
||||
! the index of the last k point in this pool
|
||||
!
|
||||
upper_bnd = lower_bnd + nkl - 1
|
||||
!
|
||||
#else
|
||||
!
|
||||
! In serial the definitions are much easier
|
||||
!
|
||||
lower_bnd = 1
|
||||
upper_bnd = nbnd
|
||||
!
|
||||
#endif
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
END SUBROUTINE fkbounds_bnd
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
END MODULE division
|
||||
|
|
@ -59,12 +59,6 @@
|
|||
sigmar_all(:,:), &! To store sigmar, sigmai and zi globally
|
||||
sigmai_all(:,:), &!
|
||||
sigmai_mode(:,:,:), &!
|
||||
Fi_all(:,:,:,:), &!
|
||||
F_current(:,:,:,:), &!
|
||||
F_SERTA(:,:,:,:), &!
|
||||
Fi_allcb(:,:,:,:), &!
|
||||
F_currentcb(:,:,:,:), &!
|
||||
F_SERTAcb(:,:,:,:), &!
|
||||
zi_all(:,:), &!
|
||||
esigmar_all(:,:,:), &!
|
||||
esigmai_all(:,:,:), &!
|
||||
|
@ -100,8 +94,6 @@
|
|||
igkq(:), &! Index for k+q+G vector
|
||||
igk_k_all(:,:), &! Global index (in case of parallel)
|
||||
ngk_all(:), &! Global number of plane wave for each global k-point
|
||||
s_BZtoIBZ(:,:,:), &! Save the symmetry operation that brings BZ k into IBZ
|
||||
BZtoIBZ(:), &! Map between the full uniform k-grid and the IBZ
|
||||
map_rebal(:), &! Map between the k-point and their load rebalanced one
|
||||
map_rebal_inv(:) ! Map between the k-point and their load rebalanced one
|
||||
INTEGER, allocatable :: &
|
||||
|
|
|
@ -60,7 +60,7 @@
|
|||
USE mp, ONLY : mp_barrier, mp_bcast, mp_put,mp_sum
|
||||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
USE wavefunctions, ONLY: evc
|
||||
USE wavefunctions, ONLY : evc
|
||||
USE io_files, ONLY : diropn, seqopn
|
||||
USE wvfct, ONLY : npwx
|
||||
USE pwcom, ONLY : current_spin, isk, lsda, nbnd, xk, nks
|
||||
|
@ -82,6 +82,7 @@
|
|||
USE constants_epw, ONLY : czero, cone, ci
|
||||
USE control_flags, ONLY : iverbosity
|
||||
USE klist, ONLY : nkstot
|
||||
USE division, ONLY : kpointdivision, fkbounds, fkbounds_bnd
|
||||
USE noncollin_module, ONLY : noncolin, npol, nspin_mag
|
||||
!
|
||||
implicit none
|
||||
|
|
|
@ -25,8 +25,7 @@
|
|||
!-----------------------------------------------------------------------
|
||||
!
|
||||
USE kinds, ONLY : DP
|
||||
USE pwcom, ONLY : nbnd, nks, nkstot, isk, &
|
||||
et, xk, ef, nelec
|
||||
USE pwcom, ONLY : nbnd, nks, nkstot, isk, et, xk, ef, nelec
|
||||
USE cell_base, ONLY : at, bg, omega, alat
|
||||
USE start_k, ONLY : nk1, nk2, nk3
|
||||
USE ions_base, ONLY : nat, amass, ityp, tau
|
||||
|
@ -40,14 +39,15 @@
|
|||
scattering, nstemp, int_mob, scissor, carrier, &
|
||||
iterative_bte, longrange, scatread, nqf1, prtgkk, &
|
||||
nqf2, nqf3, mp_mesh_k, restart, ncarrier, plselfen, &
|
||||
specfun_pl, lindabs, mob_maxiter, use_ws
|
||||
specfun_pl, lindabs, mob_maxiter, use_ws, &
|
||||
epmatkqread, selecqread
|
||||
USE noncollin_module, ONLY : noncolin
|
||||
USE constants_epw, ONLY : ryd2ev, ryd2mev, one, two, eps2, zero, czero, &
|
||||
twopi, ci, kelvin2eV, eps6
|
||||
USE io_files, ONLY : prefix, diropn, tmp_dir
|
||||
USE io_global, ONLY : stdout, ionode
|
||||
USE io_epw, ONLY : lambda_phself, linewidth_phself, iunepmatwe, &
|
||||
iunepmatwp, crystal, iunepmatwp2
|
||||
iunepmatwp, crystal, iunepmatwp2, iunrestart
|
||||
USE elph2, ONLY : cu, cuq, lwin, lwinq, map_rebal, map_rebal_inv, &
|
||||
chw, chw_ks, cvmew, cdmew, rdw, &
|
||||
epmatwp, epmatq, wf, etf, etf_k, etf_ks, xqf, xkf, &
|
||||
|
@ -55,11 +55,10 @@
|
|||
ibndmin, ibndmax, lambda_all, dmec, dmef, vmef, &
|
||||
sigmai_all, sigmai_mode, gamma_all, epsi, zstar, &
|
||||
efnew, sigmar_all, zi_all, nkqtotf, eps_rpa, &
|
||||
nkqtotf, sigmar_all, zi_allvb, inv_tau_all, Fi_all, &
|
||||
F_current, F_SERTA, inv_tau_allcb, zi_allcb, exband,&
|
||||
Fi_allcb, F_currentcb, F_SERTAcb, BZtoIBZ, s_BZtoIBZ
|
||||
nkqtotf, sigmar_all, zi_allvb, inv_tau_all, &
|
||||
inv_tau_allcb, zi_allcb, exband
|
||||
USE transportcom, ONLY : transp_temp, mobilityh_save, mobilityel_save, lower_bnd, &
|
||||
upper_bnd, ixkqf_tr, s_BZtoIBZ_full
|
||||
upper_bnd
|
||||
USE wan2bloch, ONLY : dmewan2bloch, hamwan2bloch, dynwan2bloch, &
|
||||
ephwan2blochp, ephwan2bloch, vmewan2bloch, &
|
||||
dynifc2blochf, dynifc2blochc
|
||||
|
@ -68,10 +67,12 @@
|
|||
ephbloch2wanp_mem
|
||||
USE wigner, ONLY : wigner_seitz_wrap
|
||||
USE io_eliashberg, ONLY : write_ephmat, count_kpoints, kmesh_fine, kqmap_fine
|
||||
USE transport, ONLY : transport_coeffs, scattering_rate_q
|
||||
USE transport_iter,ONLY : iterativebte
|
||||
USE transport, ONLY : transport_coeffs, scattering_rate_q, qwindow
|
||||
USE printing, ONLY : print_gkk
|
||||
USE io_scattering, ONLY : F_read, electron_read, tau_read
|
||||
USE io_scattering, ONLY : electron_read, tau_read, iter_open
|
||||
USE transport_iter,ONLY : iter_restart
|
||||
USE close_epw, ONLY : iter_close
|
||||
USE division, ONLY : fkbounds
|
||||
#ifdef __NAG
|
||||
USE f90_unix_io, ONLY : flush
|
||||
#endif
|
||||
|
@ -80,7 +81,8 @@
|
|||
USE mp_global, ONLY : inter_pool_comm, intra_pool_comm, root_pool
|
||||
USE mp_world, ONLY : mpime, world_comm
|
||||
#if defined(__MPI)
|
||||
USE parallel_include, ONLY: MPI_MODE_RDONLY, MPI_INFO_NULL
|
||||
USE parallel_include, ONLY : MPI_MODE_RDONLY, MPI_INFO_NULL, MPI_OFFSET_KIND, &
|
||||
MPI_OFFSET
|
||||
#endif
|
||||
!
|
||||
implicit none
|
||||
|
@ -110,6 +112,8 @@
|
|||
!! integer variable for I/O control
|
||||
INTEGER :: iq
|
||||
!! Counter on coarse q-point grid
|
||||
INTEGER :: iqq
|
||||
!! Counter on coarse q-point grid
|
||||
INTEGER :: iq_restart
|
||||
!! Counter on coarse q-point grid
|
||||
INTEGER :: ik
|
||||
|
@ -166,6 +170,14 @@
|
|||
!! Counter on bands when use_ws == .true.
|
||||
INTEGER :: iw2
|
||||
!! Counter on bands when use_ws == .true.
|
||||
INTEGER :: iter
|
||||
!! Current iteration number
|
||||
INTEGER :: itemp
|
||||
!! Temperature index
|
||||
INTEGER :: icbm
|
||||
!! Index of the CBM
|
||||
INTEGER :: totq
|
||||
!! Total number of q-points within the fsthick window.
|
||||
INTEGER, ALLOCATABLE :: irvec_k(:,:)
|
||||
!! integer components of the ir-th Wigner-Seitz grid point in the basis
|
||||
!! of the lattice vectors for electrons
|
||||
|
@ -181,8 +193,28 @@
|
|||
INTEGER, ALLOCATABLE :: ndegen_g (:,:,:,:)
|
||||
!! Wigner-Seitz weights for the electron-phonon grid that depend on
|
||||
!! atomic positions $R - \tau(na)$
|
||||
INTEGER, ALLOCATABLE :: selecq(:)
|
||||
!! Selected q-points within the fsthick window
|
||||
INTEGER, PARAMETER :: nrwsx=200
|
||||
!! Maximum number of real-space Wigner-Seitz
|
||||
#if defined(__MPI)
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: ind_tot
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: ind_totcb
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lrepmatw2
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lrepmatw4
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lrepmatw5
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lrepmatw6
|
||||
!! Offset to tell where to start reading the file
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lsize
|
||||
!! Offset to tell where to start reading the file
|
||||
#else
|
||||
INTEGER(kind=8) :: lrepmatw2
|
||||
INTEGER(kind=i4b) :: lrepmatw4
|
||||
INTEGER(kind=8) :: lrepmatw5
|
||||
INTEGER(kind=i4b) :: lrepmatw6
|
||||
!! Offset to tell where to start reading the file
|
||||
INTEGER(kind=8) :: lsize
|
||||
#endif
|
||||
!
|
||||
REAL(kind=DP) :: rdotk_scal
|
||||
!! Real (instead of array) for $r\cdot k$
|
||||
|
@ -200,12 +232,24 @@
|
|||
!! Maximum vector: at*nq
|
||||
REAL(kind=DP) :: w_centers(3,nbndsub)
|
||||
!! Wannier centers
|
||||
REAL(KIND=DP) :: etemp
|
||||
!! Temperature in Ry (this includes division by kb)
|
||||
REAL(KIND=DP) :: ef0(nstemp)
|
||||
!! Fermi level for the temperature itemp
|
||||
REAL(KIND=DP) :: efcb(nstemp)
|
||||
!! Second Fermi level for the temperature itemp
|
||||
REAL(KIND=DP) :: dummy(3)
|
||||
!! Dummy variable
|
||||
REAL(KIND=DP), EXTERNAL :: fermicarrier
|
||||
!! Function that returns the Fermi level so that n=p (if int_mob = .true.)
|
||||
REAL(kind=DP), EXTERNAL :: efermig
|
||||
!! External function to calculate the fermi energy
|
||||
REAL(kind=DP), EXTERNAL :: efermig_seq
|
||||
!! Same but in sequential
|
||||
REAL(kind=DP), PARAMETER :: eps = 0.01/ryd2mev
|
||||
!! Tolerence
|
||||
REAL(kind=DP), ALLOCATABLE :: etf_all(:,:)
|
||||
!! Eigen-energies on the fine grid collected from all pools in parallel case
|
||||
REAL(kind=DP), ALLOCATABLE :: w2 (:)
|
||||
!! Interpolated phonon frequency
|
||||
REAL(kind=DP), ALLOCATABLE :: irvec_r (:,:)
|
||||
|
@ -220,6 +264,10 @@
|
|||
!! real-space length for phonons, in units of alat
|
||||
REAL(kind=DP), ALLOCATABLE :: wslen_g(:)
|
||||
!! real-space length for electron-phonons, in units of alat
|
||||
REAL(kind=DP), ALLOCATABLE :: vkk_all(:,:,:)
|
||||
!! velocity from all the k-point
|
||||
REAL(kind=DP), ALLOCATABLE :: wkf_all(:)
|
||||
!! k-point weights for all the k-points
|
||||
!
|
||||
COMPLEX(kind=DP), ALLOCATABLE :: epmatwe (:,:,:,:,:)
|
||||
!! e-p matrix in wannier basis - electrons
|
||||
|
@ -241,31 +289,6 @@
|
|||
!! Used to store $e^{2\pi r \cdot k}$ exponential
|
||||
COMPLEX(kind=DP), ALLOCATABLE :: cfacq(:,:,:)
|
||||
!! Used to store $e^{2\pi r \cdot k+q}$ exponential
|
||||
|
||||
! Conductivity ------------
|
||||
INTEGER :: iter
|
||||
!! Current iteration number
|
||||
INTEGER :: itemp
|
||||
!! Temperature index
|
||||
INTEGER :: icbm
|
||||
!! Index of the CBM
|
||||
REAL(KIND=DP) :: error_h
|
||||
!! Error in the hole iterative BTE
|
||||
REAL(KIND=DP) :: error_el
|
||||
!! Error in the electron iterative BTE
|
||||
REAL(KIND=DP) :: etemp
|
||||
!! Temperature in Ry (this includes division by kb)
|
||||
REAL(KIND=DP) :: ef0(nstemp)
|
||||
!! Fermi level for the temperature itemp
|
||||
REAL(KIND=DP) :: efcb(nstemp)
|
||||
!! Second Fermi level for the temperature itemp
|
||||
REAL(kind=DP), ALLOCATABLE :: etf_all(:,:)
|
||||
!! Eigen-energies on the fine grid collected from all pools in parallel case
|
||||
REAL(KIND=DP), EXTERNAL :: fermicarrier
|
||||
!! Function that returns the Fermi level so that n=p (if int_mob = .true.)
|
||||
REAL(KIND=DP) :: dummy(3)
|
||||
!! Dummy variable
|
||||
! -----------------
|
||||
!
|
||||
IF (nbndsub.ne.nbnd) &
|
||||
WRITE(stdout, '(/,5x,a,i4)' ) 'Band disentanglement is used: nbndsub = ', nbndsub
|
||||
|
@ -738,7 +761,6 @@
|
|||
CALL load_rebal()
|
||||
ENDIF
|
||||
!
|
||||
!
|
||||
! xqf must be in crystal coordinates
|
||||
!
|
||||
! this loops over the fine mesh of q points.
|
||||
|
@ -773,171 +795,173 @@
|
|||
!
|
||||
! Fine mesh set of g-matrices. It is large for memory storage
|
||||
ALLOCATE ( epf17 (ibndmax-ibndmin+1, ibndmax-ibndmin+1, nmodes, nkf) )
|
||||
epf17(:,:,:,:) = czero
|
||||
ALLOCATE ( etf_all ( nbndsub, nkqtotf ) )
|
||||
ALLOCATE ( etf_all ( ibndmax-ibndmin+1, nkqtotf/2 ) )
|
||||
ALLOCATE ( inv_tau_all (nstemp, ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
inv_tau_all(:,:,:) = zero
|
||||
ALLOCATE ( zi_allvb (nstemp, ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
epf17(:,:,:,:) = czero
|
||||
etf_all(:,:) = zero
|
||||
inv_tau_all(:,:,:) = zero
|
||||
zi_allvb(:,:,:) = zero
|
||||
!
|
||||
IF (int_mob .AND. carrier) THEN
|
||||
ALLOCATE ( inv_tau_allcb (nstemp, ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
inv_tau_allcb(:,:,:) = zero
|
||||
ALLOCATE ( zi_allcb (nstemp, ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
inv_tau_allcb(:,:,:) = zero
|
||||
zi_allcb(:,:,:) = zero
|
||||
ENDIF
|
||||
!
|
||||
! ------------------------------------------------
|
||||
! The IBTE implement works in two steps
|
||||
! 1) compute the dominant scattering rates and store them to file
|
||||
! 2) read them from file and solve the IBTE where all important element are in memory
|
||||
! ------------------------------------------------
|
||||
!
|
||||
! Initialization and restart when doing IBTE
|
||||
!IF (iterative_bte) THEN
|
||||
! IF (epmatkqread) THEN
|
||||
! CALL iter_restart(etf_all, wkf_all, vkk_all, ind_tot, ind_totcb, ef0, efcb)
|
||||
! ENDIF
|
||||
!ENDIF
|
||||
IF (iterative_bte) THEN
|
||||
ALLOCATE(Fi_all(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
! Current iterative F(i+1) function
|
||||
ALLOCATE(F_current(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
ALLOCATE(F_SERTA(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
Fi_all(:,:,:,:) = zero
|
||||
F_current(:,:,:,:) = zero
|
||||
F_SERTA(:,:,:,:) = zero
|
||||
ALLOCATE(mobilityh_save(nstemp))
|
||||
ALLOCATE(mobilityel_save(nstemp))
|
||||
mobilityh_save(:) = zero
|
||||
mobilityel_save(:) = zero
|
||||
IF (int_mob .AND. carrier) THEN
|
||||
ALLOCATE(Fi_allcb(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
ALLOCATE(F_currentcb(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
ALLOCATE(F_SERTAcb(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
Fi_allcb(:,:,:,:) = zero
|
||||
F_currentcb(:,:,:,:) = zero
|
||||
F_SERTAcb(:,:,:,:) = zero
|
||||
998 continue ! Continue after all scattering rates have been computed in print_ibte
|
||||
IF (epmatkqread) THEN
|
||||
!
|
||||
ALLOCATE( vkk_all( 3, ibndmax-ibndmin+1, nkqtotf/2 ) )
|
||||
ALLOCATE( wkf_all( nkqtotf/2 ) )
|
||||
!
|
||||
CALL iter_restart(etf_all, wkf_all, vkk_all, ind_tot, ind_totcb, ef0, efcb)
|
||||
!
|
||||
DEALLOCATE(vkk_all)
|
||||
DEALLOCATE(wkf_all)
|
||||
DEALLOCATE(etf_all)
|
||||
GOTO 999
|
||||
!
|
||||
ELSE ! epmatkqread
|
||||
!
|
||||
! Open the required files
|
||||
CALL iter_open(ind_tot, ind_totcb, lrepmatw2, lrepmatw4, lrepmatw5, lrepmatw6)
|
||||
!
|
||||
ENDIF
|
||||
ALLOCATE ( BZtoIBZ(nkf1*nkf2*nkf3) )
|
||||
ALLOCATE ( s_BZtoIBZ(3,3,nkf1*nkf2*nkf3) )
|
||||
BZtoIBZ(:) = 0
|
||||
s_BZtoIBZ(:,:,:) = 0
|
||||
ENDIF
|
||||
!
|
||||
! Start iteration index
|
||||
iter = 1
|
||||
!iter = 0
|
||||
! Error for iterative BTE
|
||||
IF (int_mob .OR. (ncarrier > 1E5)) THEN
|
||||
error_el = 10_DP
|
||||
ELSE
|
||||
error_el = 0_DP
|
||||
! -----------------------------------------------------------------------
|
||||
! Determines which q-points falls within the fsthick windows
|
||||
! Store the result in the selecq.fmt file
|
||||
! If the file exists, automatically restart from the file
|
||||
! -----------------------------------------------------------------------
|
||||
totq = 0
|
||||
! Check if the file has been pre-computed
|
||||
IF (mpime == ionode_id) THEN
|
||||
INQUIRE(FILE='selecq.fmt',EXIST=exst)
|
||||
ENDIF
|
||||
IF (int_mob .OR. (ncarrier < 1E5)) THEN
|
||||
error_h = 10_DP
|
||||
CALL mp_bcast(exst, ionode_id, world_comm)
|
||||
!
|
||||
IF (exst) THEN
|
||||
IF (selecqread) THEN
|
||||
WRITE(stdout,'(5x,a)')' '
|
||||
WRITE(stdout,'(5x,a)')'Reading selecq.fmt file. '
|
||||
CALL qwindow(exst, nrr_k, dims, totq, selecq, irvec_r, ndegen_k, cufkk, cufkq)
|
||||
ELSE
|
||||
error_h = 0_DP
|
||||
WRITE(stdout,'(5x,a)')' '
|
||||
WRITE(stdout,'(5x,a)')'A selecq.fmt file was found but re-created because selecqread == .false. '
|
||||
CALL qwindow(.FALSE., nrr_k, dims, totq, selecq, irvec_r, ndegen_k, cufkk, cufkq)
|
||||
ENDIF
|
||||
ELSE ! exst
|
||||
IF (selecqread) THEN
|
||||
CALL errore( 'ephwann_shuffle', 'Variable selecqread == .true. but file selecq.fmt not found.',1 )
|
||||
ELSE
|
||||
CALL qwindow(exst, nrr_k, dims, totq, selecq, irvec_r, ndegen_k, cufkk, cufkq)
|
||||
ENDIF
|
||||
ENDIF
|
||||
!
|
||||
! Restart calculation
|
||||
!
|
||||
WRITE(stdout,'(5x,a,i8,a)')'We only need to compute ',totq, ' q-points'
|
||||
WRITE(stdout,'(5x,a)')' '
|
||||
!
|
||||
! -----------------------------------------------------------------------
|
||||
! Possible restart during step 1)
|
||||
! -----------------------------------------------------------------------
|
||||
iq_restart = 1
|
||||
first_cycle = .FALSE.
|
||||
first_time = .TRUE.
|
||||
IF (restart) THEN
|
||||
!
|
||||
! Restart in SERTA case or self-energy case
|
||||
IF (restart) THEN
|
||||
IF ( elecselfen ) THEN
|
||||
IF ( .not. ALLOCATED (sigmar_all) ) ALLOCATE( sigmar_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
IF ( .not. ALLOCATED (sigmai_all) ) ALLOCATE( sigmai_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
IF ( .not. ALLOCATED (zi_all) ) ALLOCATE( zi_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
ALLOCATE( sigmar_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
ALLOCATE( sigmai_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
ALLOCATE( zi_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
sigmar_all(:,:) = zero
|
||||
sigmai_all(:,:) = zero
|
||||
zi_all(:,:) = zero
|
||||
!
|
||||
CALL electron_read(iq_restart, nqf, nkqtotf/2, sigmar_all, sigmai_all, zi_all)
|
||||
!
|
||||
CALL electron_read(iq_restart, totq, nkqtotf/2, sigmar_all, sigmai_all, zi_all)
|
||||
ENDIF
|
||||
IF ( scattering ) THEN
|
||||
!
|
||||
IF (int_mob .AND. carrier) THEN
|
||||
!
|
||||
! Here inv_tau_all and inv_tau_allcb gets updated
|
||||
CALL tau_read(iq_restart, nqf, nkqtotf/2, .TRUE.)
|
||||
CALL tau_read(iq_restart, totq, nkqtotf/2, .TRUE.)
|
||||
ELSE
|
||||
! Here inv_tau_all gets updated
|
||||
CALL tau_read(iq_restart, nqf, nkqtotf/2, .FALSE.)
|
||||
CALL tau_read(iq_restart, totq, nkqtotf/2, .FALSE.)
|
||||
ENDIF
|
||||
!
|
||||
ENDIF
|
||||
IF ( iterative_bte ) THEN
|
||||
!
|
||||
IF (int_mob .AND. carrier) THEN
|
||||
CALL F_read(iter, iq_restart, nqf, nkqtotf/2, error_h, error_el, .TRUE.)
|
||||
ELSE
|
||||
CALL F_read(iter, iq_restart, nqf, nkqtotf/2, error_h, error_el, .FALSE.)
|
||||
ENDIF
|
||||
!
|
||||
IF (int_mob .OR. (ncarrier < 1E5)) THEN
|
||||
IF ( error_h < eps2 ) WRITE(stdout,'(5x,a)') repeat('=',67)
|
||||
IF ( error_h < eps2 ) &
|
||||
WRITE( stdout,'(5x,"IBTE is converged with value for hole mobility of",1E18.6," "/)') MAXVAL(mobilityh_save(:))
|
||||
IF ( error_h < eps2 ) WRITE(stdout,'(5x,a)') repeat('=',67)
|
||||
ENDIF
|
||||
IF (int_mob .OR. (ncarrier > 1E5)) THEN
|
||||
IF ( error_el < eps2 ) WRITE(stdout,'(5x,a)') repeat('=',67)
|
||||
IF ( error_el < eps2 ) &
|
||||
WRITE( stdout,'(5x,"IBTE is converged with value for electron mobility of",1E18.6," "/)') MAXVAL(mobilityel_save(:))
|
||||
IF ( error_el < eps2 ) WRITE(stdout,'(5x,a)') repeat('=',67)
|
||||
ENDIF
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
! If you restart from reading a file. This prevent
|
||||
! the case were you restart but the file does not exist
|
||||
IF (iq_restart > 1) first_cycle = .TRUE.
|
||||
!
|
||||
ENDIF
|
||||
ENDIF ! restart
|
||||
!
|
||||
! Scatread assumes that you alread have done the full q-integration
|
||||
! We just do one loop to get interpolated eigenenergies.
|
||||
IF(scatread) iq_restart = nqf -1
|
||||
IF(scatread) iq_restart = totq -1
|
||||
!
|
||||
DO WHILE ( (error_h > eps2) .OR. (error_el > eps2) )
|
||||
!
|
||||
IF ( iterative_bte ) THEN
|
||||
IF (iter==1 .OR. first_cycle) THEN
|
||||
WRITE(stdout,'(5x,a)') ' '
|
||||
WRITE(stdout,'(5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Start solving iterative Boltzmann Transport Equation")')
|
||||
WRITE(stdout,'(5x,a/)') repeat('=',67)
|
||||
! Restart in IBTE case
|
||||
IF (iterative_bte) THEN
|
||||
IF (mpime == ionode_id) THEN
|
||||
INQUIRE(FILE='restart_ibte.fmt',EXIST=exst)
|
||||
ENDIF
|
||||
WRITE(stdout,'(/5x,"Iteration number:", i10," "/)') iter
|
||||
CALL mp_bcast(exst, ionode_id, world_comm)
|
||||
!
|
||||
!IF (nstemp > 1) CALL errore('ephwann_shuffle', &
|
||||
! 'Iterative BTE can only be done at 1 temperature, nstemp = 1.',1)
|
||||
!
|
||||
IF (iter > mob_maxiter) THEN
|
||||
! CALL errore('ephwann_shuffle', &
|
||||
!'The iteration reached the maximum but did not converge. ',0)
|
||||
WRITE(stdout,'(5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"The iteration reached the maximum but did not converge.")')
|
||||
WRITE(stdout,'(5x,a/)') repeat('=',67)
|
||||
exit
|
||||
IF (exst) THEN
|
||||
IF (mpime.eq.ionode_id) THEN
|
||||
OPEN(unit=iunrestart,file='restart_ibte.fmt',status='old',iostat=ios)
|
||||
READ (iunrestart,*) iq_restart
|
||||
READ (iunrestart,*) ind_tot
|
||||
READ (iunrestart,*) ind_totcb
|
||||
READ (iunrestart,*) lrepmatw2
|
||||
READ (iunrestart,*) lrepmatw4
|
||||
READ (iunrestart,*) lrepmatw5
|
||||
READ (iunrestart,*) lrepmatw6
|
||||
CLOSE(iunrestart)
|
||||
ENDIF
|
||||
CALL mp_bcast(iq_restart, ionode_id, world_comm )
|
||||
CALL MPI_BCAST( ind_tot, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
CALL MPI_BCAST( ind_totcb, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
CALL MPI_BCAST( lrepmatw2, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
CALL MPI_BCAST( lrepmatw4, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
CALL MPI_BCAST( lrepmatw5, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
CALL MPI_BCAST( lrepmatw6, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'ephwann_shuffle', 'error in MPI_BCAST',1 )
|
||||
!
|
||||
! Reading iter X if the file exist from a restart
|
||||
!CALL F_read(Fi_all, ibndmax-ibndmin+1, nkqtotf/2, iter)
|
||||
!
|
||||
! Now, the iq_restart point has been done, so we need to do the next one except if last
|
||||
!IF (iq_restart /= totq) iq_restart = iq_restart + 1
|
||||
! Now, the iq_restart point has been done, so we need to do the next
|
||||
iq_restart = iq_restart + 1
|
||||
WRITE(stdout,'(5x,a,i8,a)')'We restart from ',iq_restart, ' q-points'
|
||||
ENDIF ! exst
|
||||
ENDIF
|
||||
! -----------------------------------------------------------------------------
|
||||
!
|
||||
!iter = iter +1
|
||||
!
|
||||
DO iq = iq_restart, nqf
|
||||
DO iqq = iq_restart, totq
|
||||
! This needs to be uncommented.
|
||||
!epf17(:,:,:,:) = czero
|
||||
!
|
||||
iq = selecq(iqq)
|
||||
!
|
||||
CALL start_clock ( 'ep-interp' )
|
||||
!
|
||||
! In case of big calculation, show progression of iq (especially usefull when
|
||||
! elecselfen = true as nothing happen during the calculation otherwise.
|
||||
!
|
||||
IF ( .not. phonselfen) THEN
|
||||
IF (MOD(iq,50) == 0) THEN
|
||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Progression iq (fine) = ',iq,'/',nqf
|
||||
IF (MOD(iq,100) == 0) THEN
|
||||
WRITE(stdout, '(5x,a,i10,a,i10)' ) 'Progression iq (fine) = ',iq,'/',totq
|
||||
ENDIF
|
||||
ENDIF
|
||||
!
|
||||
|
@ -1076,7 +1100,6 @@
|
|||
! interpolate only when (k,k+q) both have at least one band
|
||||
! within a Fermi shell of size fsthick
|
||||
!
|
||||
!IF (ik==2 ) print*,iq, etf(:, ikk), etf(:, ikq), ef
|
||||
IF ( (( minval ( abs(etf(:, ikk) - ef) ) < fsthick ) .and. &
|
||||
( minval ( abs(etf(:, ikq) - ef) ) < fsthick )) ) THEN
|
||||
!
|
||||
|
@ -1086,7 +1109,6 @@
|
|||
! epmat : Wannier el and Bloch ph -> Bloch el and Bloch ph
|
||||
! --------------------------------------------------------------
|
||||
!
|
||||
!
|
||||
! SP: Note: In case of polar materials, computing the long-range and short-range term
|
||||
! separately might help speed up the convergence. Indeed the long-range term should be
|
||||
! much faster to compute. Note however that the short-range term still contains a linear
|
||||
|
@ -1102,7 +1124,6 @@
|
|||
epmatf(:,:,:) = czero
|
||||
CALL ephwan2bloch &
|
||||
( nbndsub, nrr_k, epmatwef, cufkk, cufkq, epmatf, nmodes, cfac, dims )
|
||||
!print*,'eptmatf ',sum(epmatf)
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
|
@ -1135,36 +1156,26 @@
|
|||
ENDDO
|
||||
ENDDO
|
||||
!
|
||||
!if (ik==2) then
|
||||
! do imode = 1, nmodes
|
||||
! write(*,*) 'iq imode epmatf ',iq, imode,&
|
||||
! SUM((REAL(REAL(epmatf(:,:,imode))))**2)+SUM((REAL(AIMAG(epmatf(:,:,imode))))**2)
|
||||
! enddo
|
||||
!endif
|
||||
!IF (ik==8 .and. iq== 123 ) THEN
|
||||
! print*,'epmatf(ibnd,jbnd) ',epmatf(2,:,6)
|
||||
!ENDIF
|
||||
!
|
||||
ENDIF
|
||||
ENDIF ! scatread
|
||||
!
|
||||
ENDDO ! end loop over k points
|
||||
!
|
||||
IF (prtgkk ) CALL print_gkk( iq )
|
||||
IF (phonselfen ) CALL selfen_phon_q( iq )
|
||||
IF (elecselfen ) CALL selfen_elec_q( iq, first_cycle )
|
||||
IF (plselfen .and. .not.vme ) CALL selfen_pl_q( iq )
|
||||
IF (nest_fn ) CALL nesting_fn_q( iq )
|
||||
IF (specfun_el ) CALL spectral_func_q( iq )
|
||||
IF (specfun_ph ) CALL spectral_func_ph( iq )
|
||||
IF (specfun_pl .and. .not.vme ) CALL spectral_func_pl_q( iq )
|
||||
IF (phonselfen ) CALL selfen_phon_q( iqq, iq, totq )
|
||||
IF (elecselfen ) CALL selfen_elec_q( iqq, iq, totq, first_cycle )
|
||||
IF (plselfen .and. .not. vme ) CALL selfen_pl_q( iqq, iq, totq )
|
||||
IF (nest_fn ) CALL nesting_fn_q( iqq, iq )
|
||||
IF (specfun_el ) CALL spectral_func_q( iqq, iq, totq )
|
||||
IF (specfun_ph ) CALL spectral_func_ph( iqq, iq, totq )
|
||||
IF (specfun_pl .and. .not. vme ) CALL spectral_func_pl_q( iqq, iq, totq )
|
||||
IF (ephwrite) THEN
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
CALL kmesh_fine
|
||||
CALL kqmap_fine
|
||||
ENDIF
|
||||
CALL write_ephmat( iq )
|
||||
CALL count_kpoints(iq)
|
||||
CALL write_ephmat( iqq, iq, totq )
|
||||
CALL count_kpoints( iqq )
|
||||
ENDIF
|
||||
!
|
||||
IF (.NOT. scatread) THEN
|
||||
|
@ -1191,7 +1202,7 @@
|
|||
etf (ibnd, ikq) = etf (ibnd, ikq) + scissor
|
||||
ENDDO
|
||||
ENDDO
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
WRITE(stdout, '(5x,"Applying a scissor shift of ",f9.5," eV to the conduction states")' ) scissor * ryd2ev
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
@ -1205,7 +1216,7 @@
|
|||
! If we want to compute intrinsic mobilities, call fermicarrier to
|
||||
! correctly positionned the ef0 level.
|
||||
! This is only done once for iq = 0
|
||||
IF ( iq == iq_restart ) THEN
|
||||
IF ( iqq == iq_restart ) THEN
|
||||
!
|
||||
DO itemp = 1, nstemp
|
||||
!
|
||||
|
@ -1265,36 +1276,30 @@
|
|||
ENDDO
|
||||
!
|
||||
!
|
||||
ENDIF ! iq=0
|
||||
ENDIF ! iqq=0
|
||||
!
|
||||
IF ( iterative_bte) THEN
|
||||
! First iteration is just SERTA
|
||||
IF (iter == 1) THEN
|
||||
!
|
||||
CALL scattering_rate_q( iq, ef0, efcb, first_cycle )
|
||||
!print*,'SUM(inv_tau_all) after ',SUM(inv_tau_all)
|
||||
!
|
||||
! Compute the SERTA mobility for the first iteration
|
||||
IF (iq == nqf) CALL transport_coeffs (ef0,efcb)
|
||||
IF (iq == nqf) iter = iter + 1
|
||||
!
|
||||
ELSE
|
||||
!
|
||||
!IF (int_mob .AND. carrier) THEN
|
||||
! call errore('ephwann_shuffle','The iterative solution cannot be solved with int_mob AND carrier at the moment',1)
|
||||
!ELSE
|
||||
CALL iterativebte(iter, iq, ef0, efcb, error_h, error_el, first_cycle, first_time)
|
||||
!ENDIF
|
||||
!
|
||||
IF (iq == nqf) iter = iter + 1
|
||||
IF ( .NOT. iterative_bte ) THEN
|
||||
CALL scattering_rate_q( iqq, iq, totq, ef0, efcb, first_cycle )
|
||||
! Computes the SERTA mobility
|
||||
!IF (iq == nqf) CALL transport_coeffs (ef0,efcb)
|
||||
IF (iqq == totq) CALL transport_coeffs (ef0,efcb)
|
||||
ENDIF
|
||||
!
|
||||
ELSE
|
||||
IF (iterative_bte) THEN
|
||||
CALL print_ibte( iqq, iq, totq, ef0, efcb, first_cycle, ind_tot, ind_totcb, lrepmatw2,&
|
||||
lrepmatw4, lrepmatw5, lrepmatw6 )
|
||||
!
|
||||
CALL scattering_rate_q( iq, ef0, efcb, first_cycle )
|
||||
! Computes the SERTA mobility
|
||||
IF (iq == nqf) CALL transport_coeffs (ef0,efcb)
|
||||
! Finished, now compute SERTA and IBTE mobilities
|
||||
IF (iqq == totq) THEN
|
||||
WRITE(stdout, '(5x,a)')' '
|
||||
WRITE(stdout, '(5x,"epmatkqread automatically changed to .true. as all scattering have been computed.")')
|
||||
WRITE(stdout, '(5x,a)')' '
|
||||
! close files
|
||||
CALL iter_close()
|
||||
!
|
||||
epmatkqread = .true.
|
||||
GOTO 998
|
||||
ENDIF
|
||||
ENDIF
|
||||
!
|
||||
ENDIF ! scattering
|
||||
|
@ -1305,36 +1310,8 @@
|
|||
ENDIF ! scatread
|
||||
ENDDO ! end loop over q points
|
||||
!
|
||||
IF (iterative_bte) iq_restart = 1
|
||||
! If we do not do iterative BTE, then exist the while loop.
|
||||
IF (.NOT. iterative_bte) error_h = 0.0_DP
|
||||
IF (.NOT. iterative_bte) error_el = 0.0_DP
|
||||
!
|
||||
ENDDO ! End the while loop
|
||||
IF (iterative_bte) DEALLOCATE (Fi_all)
|
||||
IF (iterative_bte) DEALLOCATE (F_current)
|
||||
IF (iterative_bte) DEALLOCATE (F_SERTA)
|
||||
IF (iterative_bte) DEALLOCATE (inv_tau_all)
|
||||
IF (iterative_bte) DEALLOCATE (zi_allvb)
|
||||
IF (iterative_bte) DEALLOCATE (BZtoIBZ)
|
||||
IF (iterative_bte) DEALLOCATE (s_BZtoIBZ)
|
||||
IF (mp_mesh_k .AND. iterative_bte) DEALLOCATE (s_BZtoIBZ_full)
|
||||
IF (mp_mesh_k .AND. iterative_bte) DEALLOCATE (ixkqf_tr)
|
||||
IF (mp_mesh_k .AND. iterative_bte) DEALLOCATE (map_rebal)
|
||||
IF (mp_mesh_k .AND. iterative_bte) DEALLOCATE (map_rebal_inv)
|
||||
IF (int_mob .AND. carrier .AND. iterative_bte) DEALLOCATE (inv_tau_allcb)
|
||||
IF (int_mob .AND. carrier .AND. iterative_bte) DEALLOCATE (zi_allcb)
|
||||
IF (int_mob .AND. carrier .AND. iterative_bte) DEALLOCATE (Fi_allcb)
|
||||
IF (int_mob .AND. carrier .AND. iterative_bte) DEALLOCATE (F_currentcb)
|
||||
IF (int_mob .AND. carrier .AND. iterative_bte) DEALLOCATE (F_SERTAcb)
|
||||
!
|
||||
! Close th epmatwp file
|
||||
#if defined(__MPI)
|
||||
IF (etf_mem == 1) then
|
||||
CALL MPI_FILE_CLOSE(iunepmatwp2,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'ephwann_shuffle', 'error in MPI_FILE_CLOSE',1 )
|
||||
ENDIF
|
||||
#endif
|
||||
! close files
|
||||
CALL iter_close()
|
||||
!
|
||||
! Check Memory usage
|
||||
CALL system_mem_usage(valueRSS)
|
||||
|
@ -1357,23 +1334,23 @@
|
|||
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 iq = 1, nqtotf
|
||||
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') iq
|
||||
WRITE(lambda_phself, fmt=myfmt) (REAL(lambda_all(imode,iq,1)),imode=1,nmodes)
|
||||
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)
|
||||
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 iq = 1, nqtotf
|
||||
DO iqq = 1, nqtotf
|
||||
!
|
||||
DO imode=1, nmodes
|
||||
WRITE(linewidth_phself,'(i9,i6,E20.8,E22.10)') iq,imode,&
|
||||
ryd2mev*wf(imode,iq),ryd2mev*REAL(gamma_all(imode,iq,1))
|
||||
WRITE(linewidth_phself,'(i9,i6,E20.8,E22.10)') iqq,imode,&
|
||||
ryd2mev*wf(imode,iqq),ryd2mev*REAL(gamma_all(imode,iqq,1))
|
||||
ENDDO
|
||||
!
|
||||
ENDDO
|
||||
|
@ -1420,10 +1397,9 @@
|
|||
IF ( ALLOCATED(sigmai_all) ) DEALLOCATE( sigmai_all )
|
||||
IF ( ALLOCATED(sigmai_mode) ) DEALLOCATE( sigmai_mode )
|
||||
IF ( ALLOCATED(w2) ) DEALLOCATE( w2 )
|
||||
IF ( ALLOCATED(inv_tau_all) ) DEALLOCATE( inv_tau_all )
|
||||
IF ( ALLOCATED(inv_tau_allcb) ) DEALLOCATE( inv_tau_allcb )
|
||||
IF ( ALLOCATED(zi_allvb) ) DEALLOCATE( zi_allvb )
|
||||
IF ( ALLOCATED(zi_allcb) ) DEALLOCATE( zi_allcb )
|
||||
IF (mp_mesh_k .AND. iterative_bte) DEALLOCATE (map_rebal)
|
||||
IF (mp_mesh_k .AND. iterative_bte) DEALLOCATE (map_rebal_inv)
|
||||
DEALLOCATE(selecq)
|
||||
DEALLOCATE(cfac)
|
||||
DEALLOCATE(cfacq)
|
||||
DEALLOCATE(rdotk)
|
||||
|
@ -1438,6 +1414,8 @@
|
|||
DEALLOCATE(wslen_q)
|
||||
DEALLOCATE(wslen_g)
|
||||
!
|
||||
999 continue
|
||||
!
|
||||
CALL stop_clock ( 'ephwann' )
|
||||
!
|
||||
END SUBROUTINE ephwann_shuffle
|
||||
|
|
|
@ -27,8 +27,7 @@
|
|||
!-----------------------------------------------------------------------
|
||||
!
|
||||
USE kinds, ONLY : DP
|
||||
USE pwcom, ONLY : nbnd, nks, nkstot, isk, &
|
||||
et, xk, ef, nelec
|
||||
USE pwcom, ONLY : nbnd, nks, nkstot, isk, et, xk, ef, nelec
|
||||
USE cell_base, ONLY : at, bg, omega, alat
|
||||
USE start_k, ONLY : nk1, nk2, nk3
|
||||
USE ions_base, ONLY : nat, amass, ityp, tau
|
||||
|
@ -42,27 +41,26 @@
|
|||
scattering, nstemp, int_mob, scissor, carrier, &
|
||||
iterative_bte, longrange, scatread, nqf1, prtgkk, &
|
||||
nqf2, nqf3, mp_mesh_k, restart, ncarrier, plselfen, &
|
||||
specfun_pl, use_ws
|
||||
specfun_pl, use_ws, epmatkqread, selecqread
|
||||
USE noncollin_module, ONLY : noncolin
|
||||
USE constants_epw, ONLY : ryd2ev, ryd2mev, one, two, eps2, zero, czero, cone, &
|
||||
twopi, ci, kelvin2eV
|
||||
USE io_files, ONLY : prefix, diropn, tmp_dir
|
||||
USE io_global, ONLY : stdout, ionode
|
||||
USE io_epw, ONLY : lambda_phself, linewidth_phself, iunepmatwe, &
|
||||
iunepmatwp, crystal, iunepmatwp2
|
||||
iunepmatwp, crystal, iunepmatwp2, iunrestart
|
||||
USE elph2, ONLY : cu, cuq, lwin, lwinq, &
|
||||
chw, chw_ks, cvmew, cdmew, rdw, &
|
||||
epmatq, wf, etf, etf_k, etf_ks, xqf, xkf, &
|
||||
wkf, dynq, nqtotf, nkqf, epf17, nkf, nqf, et_ks, &
|
||||
wkf, dynq, nkqf, epf17, nkf, nqf, et_ks, &
|
||||
ibndmin, ibndmax, lambda_all, dmec, dmef, vmef, &
|
||||
sigmai_all, sigmai_mode, gamma_all, epsi, zstar, &
|
||||
efnew, sigmar_all, zi_all, nkqtotf, eps_rpa, &
|
||||
nkqtotf, sigmar_all, zi_allvb, inv_tau_all, Fi_all, &
|
||||
F_current, F_SERTA, inv_tau_allcb, zi_allcb, exband,&
|
||||
F_currentcb, F_SERTAcb, Fi_allcb
|
||||
nkqtotf, sigmar_all, zi_allvb, inv_tau_all, &
|
||||
inv_tau_allcb, zi_allcb, exband
|
||||
USE wigner, ONLY : wigner_seitz_wrap
|
||||
USE transportcom, ONLY : transp_temp, mobilityh_save, mobilityel_save, lower_bnd, &
|
||||
upper_bnd, ixkqf_tr, s_BZtoIBZ_full
|
||||
upper_bnd
|
||||
USE wan2bloch, ONLY : dmewan2bloch, hamwan2bloch, dynwan2bloch, &
|
||||
vmewan2bloch, dynifc2blochf, dynifc2blochc, &
|
||||
ephwan2blochp_mem, ephwan2bloch_mem
|
||||
|
@ -70,10 +68,12 @@
|
|||
vmebloch2wan, ephbloch2wane, ephbloch2wanp_mem
|
||||
USE io_eliashberg, ONLY : write_ephmat, count_kpoints, kmesh_fine, &
|
||||
kqmap_fine
|
||||
USE transport, ONLY : transport_coeffs, scattering_rate_q
|
||||
USE transport_iter,ONLY : iterativebte
|
||||
USE transport, ONLY : transport_coeffs, scattering_rate_q, qwindow
|
||||
USE transport_iter,ONLY : iter_restart
|
||||
USE printing, ONLY : print_gkk
|
||||
USE io_scattering, ONLY : F_read, electron_read, tau_read
|
||||
USE io_scattering, ONLY : electron_read, tau_read, iter_open
|
||||
USE close_epw, ONLY : iter_close
|
||||
USE division, ONLY : fkbounds
|
||||
#ifdef __NAG
|
||||
USE f90_unix_io, ONLY : flush
|
||||
#endif
|
||||
|
@ -82,7 +82,8 @@
|
|||
USE mp_global, ONLY : inter_pool_comm, intra_pool_comm, root_pool
|
||||
USE mp_world, ONLY : mpime, world_comm
|
||||
#if defined(__MPI)
|
||||
USE parallel_include, ONLY: MPI_MODE_RDONLY, MPI_INFO_NULL
|
||||
USE parallel_include, ONLY : MPI_MODE_RDONLY, MPI_INFO_NULL, MPI_OFFSET_KIND, &
|
||||
MPI_OFFSET
|
||||
#endif
|
||||
!
|
||||
implicit none
|
||||
|
@ -112,6 +113,8 @@
|
|||
!! integer variable for I/O control
|
||||
INTEGER :: iq
|
||||
!! Counter on coarse q-point grid
|
||||
INTEGER :: iqq
|
||||
!! Counter on coarse q-point grid
|
||||
INTEGER :: iq_restart
|
||||
!! Counter on coarse q-point grid
|
||||
INTEGER :: ik
|
||||
|
@ -168,6 +171,14 @@
|
|||
!! Counter on bands when use_ws == .true.
|
||||
INTEGER :: iw2
|
||||
!! Counter on bands when use_ws == .true.
|
||||
INTEGER :: iter
|
||||
!! Current iteration number
|
||||
INTEGER :: itemp
|
||||
!! Temperature index
|
||||
INTEGER :: icbm
|
||||
!! Index of the CBM
|
||||
INTEGER :: totq
|
||||
!! Total number of q-points within the fsthick window.
|
||||
INTEGER, ALLOCATABLE :: irvec_k(:,:)
|
||||
!! integer components of the ir-th Wigner-Seitz grid point in the basis
|
||||
!! of the lattice vectors for electrons
|
||||
|
@ -183,8 +194,28 @@
|
|||
INTEGER, ALLOCATABLE :: ndegen_g (:,:,:,:)
|
||||
!! Wigner-Seitz weights for the electron-phonon grid that depend on
|
||||
!! atomic positions $R - \tau(na)$
|
||||
INTEGER, ALLOCATABLE :: selecq(:)
|
||||
!! Selected q-points within the fsthick window
|
||||
INTEGER, PARAMETER :: nrwsx=200
|
||||
!! Maximum number of real-space Wigner-Seitz
|
||||
#if defined(__MPI)
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: ind_tot
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: ind_totcb
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lrepmatw2
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lrepmatw4
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lrepmatw5
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lrepmatw6
|
||||
!! Offset to tell where to start reading the file
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lsize
|
||||
!! Offset to tell where to start reading the file
|
||||
#else
|
||||
INTEGER(kind=8) :: lrepmatw2
|
||||
INTEGER(kind=i4b) :: lrepmatw4
|
||||
INTEGER(kind=8) :: lrepmatw5
|
||||
INTEGER(kind=i4b) :: lrepmatw6
|
||||
!! Offset to tell where to start reading the file
|
||||
INTEGER(kind=8) :: lsize
|
||||
#endif
|
||||
!
|
||||
REAL(kind=DP) :: rdotk_scal
|
||||
!! Real (instead of array) for $r\cdot k$
|
||||
|
@ -202,12 +233,24 @@
|
|||
!! Maximum vector: at*nq
|
||||
REAL(kind=DP) :: w_centers(3,nbndsub)
|
||||
!! Wannier centers
|
||||
REAL(KIND=DP) :: etemp
|
||||
!! Temperature in Ry (this includes division by kb)
|
||||
REAL(KIND=DP) :: ef0(nstemp)
|
||||
!! Fermi level for the temperature itemp
|
||||
REAL(KIND=DP) :: efcb(nstemp)
|
||||
!! Second Fermi level for the temperature itemp
|
||||
REAL(KIND=DP) :: dummy(3)
|
||||
!! Dummy variable
|
||||
REAL(KIND=DP), EXTERNAL :: fermicarrier
|
||||
!! Function that returns the Fermi level so that n=p (if int_mob = .true.)
|
||||
REAL(kind=DP), EXTERNAL :: efermig
|
||||
!! External function to calculate the fermi energy
|
||||
REAL(kind=DP), EXTERNAL :: efermig_seq
|
||||
!! Same but in sequential
|
||||
REAL(kind=DP), PARAMETER :: eps = 0.01/ryd2mev
|
||||
!! Tolerence
|
||||
REAL(kind=DP), ALLOCATABLE :: etf_all(:,:)
|
||||
!! Eigen-energies on the fine grid collected from all pools in parallel case
|
||||
REAL(kind=DP), ALLOCATABLE :: w2 (:)
|
||||
!! Interpolated phonon frequency
|
||||
REAL(kind=DP), ALLOCATABLE :: irvec_r (:,:)
|
||||
|
@ -222,25 +265,11 @@
|
|||
!! real-space length for phonons, in units of alat
|
||||
REAL(kind=DP), ALLOCATABLE :: wslen_g(:)
|
||||
!! real-space length for electron-phonons, in units of alat
|
||||
REAL(kind=DP), ALLOCATABLE :: vkk_all(:,:,:)
|
||||
!! velocity from all the k-point
|
||||
REAL(kind=DP), ALLOCATABLE :: wkf_all(:)
|
||||
!! k-point weights for all the k-points
|
||||
!
|
||||
COMPLEX(kind=DP) :: tablex (4*nk1+1,nkf1)
|
||||
!! Look-up table for the exponential (speed optimization) in the case of
|
||||
!! homogeneous grids.
|
||||
COMPLEX(kind=DP) :: tabley (4*nk2+1,nkf2)
|
||||
!! Look-up table for the exponential (speed optimization) in the case of
|
||||
!! homogeneous grids.
|
||||
COMPLEX(kind=DP) :: tablez (4*nk3+1,nkf3)
|
||||
!! Look-up table for the exponential (speed optimization) in the case of
|
||||
!! homogeneous grids.
|
||||
COMPLEX(kind=DP) :: tableqx (4*nk1+1,2*nkf1+1)
|
||||
!! Look-up table for the exponential (speed optimization) in the case of
|
||||
!! homogeneous grids.
|
||||
COMPLEX(kind=DP) :: tableqy (4*nk2+1,2*nkf2+1)
|
||||
!! Look-up table for the exponential (speed optimization) in the case of
|
||||
!! homogeneous grids.
|
||||
COMPLEX(kind=DP) :: tableqz (4*nk3+1,2*nkf3+1)
|
||||
!! Look-up table for the exponential (speed optimization) in the case of
|
||||
!! homogeneous grids.
|
||||
COMPLEX(kind=DP), ALLOCATABLE :: epmatwe_mem (:,:,:,:)
|
||||
!! e-p matrix in wannier basis - electrons (written on disk)
|
||||
COMPLEX(kind=DP), ALLOCATABLE :: epmatwef (:,:,:)
|
||||
|
@ -263,33 +292,6 @@
|
|||
!! Temporary el-ph matrices.
|
||||
COMPLEX(kind=DP), ALLOCATABLE :: epmatlrT(:,:,:,:)
|
||||
!! Long-range temp. save
|
||||
|
||||
! Conductivity ------------
|
||||
INTEGER, PARAMETER :: maxiter = 300
|
||||
!! Maximum number of iteration in the case of iterative BTE
|
||||
INTEGER :: iter
|
||||
!! Current iteration number
|
||||
INTEGER :: itemp
|
||||
!! Temperature index
|
||||
INTEGER :: icbm
|
||||
!! Index of the CBM
|
||||
REAL(KIND=DP) :: error_h
|
||||
!! Error in the hole iterative BTE
|
||||
REAL(KIND=DP) :: error_el
|
||||
!! Error in the electron iterative BTE
|
||||
REAL(KIND=DP) :: etemp
|
||||
!! Temperature in Ry (this includes division by kb)
|
||||
REAL(KIND=DP) :: ef0(nstemp)
|
||||
!! Fermi level for the temperature itemp
|
||||
REAL(KIND=DP) :: efcb(nstemp)
|
||||
!! Second Fermi level for the temperature itemp
|
||||
REAL(kind=DP), ALLOCATABLE :: etf_all(:,:)
|
||||
!! Eigen-energies on the fine grid collected from all pools in parallel case
|
||||
REAL(KIND=DP), EXTERNAL :: fermicarrier
|
||||
!! Function that returns the Fermi level so that n=p (if int_mob = .true.)
|
||||
REAL(KIND=DP) :: dummy(3)
|
||||
!! Dummy variable
|
||||
! -----------------
|
||||
!
|
||||
IF (nbndsub.ne.nbnd) &
|
||||
WRITE(stdout, '(/,5x,a,i4)' ) 'Band disentanglement is used: nbndsub = ', nbndsub
|
||||
|
@ -759,147 +761,163 @@
|
|||
!
|
||||
! Fine mesh set of g-matrices. It is large for memory storage
|
||||
ALLOCATE ( epf17 (ibndmax-ibndmin+1, ibndmax-ibndmin+1, nmodes, nkf) )
|
||||
ALLOCATE ( etf_all ( nbndsub, nkqtotf ) )
|
||||
ALLOCATE ( etf_all (ibndmax-ibndmin+1, nkqtotf/2 ) )
|
||||
ALLOCATE ( inv_tau_all (nstemp, ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
inv_tau_all(:,:,:) = zero
|
||||
ALLOCATE ( zi_allvb (nstemp, ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
zi_allvb(:,:,:) = zero
|
||||
ALLOCATE ( epmatlrT (nbndsub, nbndsub, nmodes, nkf) )
|
||||
ALLOCATE ( eptmp (ibndmax-ibndmin+1, ibndmax-ibndmin+1, nmodes, nkf) )
|
||||
epf17(:,:,:,:) = czero
|
||||
etf_all(:,:) = zero
|
||||
inv_tau_all(:,:,:) = zero
|
||||
zi_allvb(:,:,:) = zero
|
||||
!
|
||||
IF (int_mob .AND. carrier) THEN
|
||||
ALLOCATE ( inv_tau_allcb (nstemp, ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
inv_tau_allcb(:,:,:) = zero
|
||||
ALLOCATE ( zi_allcb (nstemp, ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
inv_tau_allcb(:,:,:) = zero
|
||||
zi_allcb(:,:,:) = zero
|
||||
ENDIF
|
||||
!
|
||||
!
|
||||
! ------------------------------------------------
|
||||
! The IBTE implement works in two steps
|
||||
! 1) compute the dominant scattering rates and store them to file
|
||||
! 2) read them from file and solve the IBTE where all important element are in memory
|
||||
! ------------------------------------------------
|
||||
!
|
||||
! Initialization and restart when doing IBTE
|
||||
IF (iterative_bte) THEN
|
||||
ALLOCATE(Fi_all(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
! Current iterative F(i+1) function
|
||||
ALLOCATE(F_current(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
ALLOCATE(F_SERTA(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
Fi_all(:,:,:,:) = zero
|
||||
F_current(:,:,:,:) = zero
|
||||
F_SERTA(:,:,:,:) = zero
|
||||
ALLOCATE(mobilityh_save(nstemp))
|
||||
ALLOCATE(mobilityel_save(nstemp))
|
||||
mobilityh_save(:) = zero
|
||||
mobilityel_save(:) = zero
|
||||
IF (int_mob .AND. carrier) THEN
|
||||
ALLOCATE(Fi_allcb(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
ALLOCATE(F_currentcb(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
ALLOCATE(F_SERTAcb(3,ibndmax-ibndmin+1,nkqtotf/2,nstemp))
|
||||
Fi_allcb(:,:,:,:) = zero
|
||||
F_currentcb(:,:,:,:) = zero
|
||||
F_SERTAcb(:,:,:,:) = zero
|
||||
998 continue ! Continue after all scattering rates have been computed in print_ibte
|
||||
IF (epmatkqread) THEN
|
||||
!
|
||||
ALLOCATE( vkk_all( 3, ibndmax-ibndmin+1, nkqtotf/2 ) )
|
||||
ALLOCATE( wkf_all( nkqtotf/2 ) )
|
||||
!
|
||||
CALL iter_restart(etf_all, wkf_all, vkk_all, ind_tot, ind_totcb, ef0, efcb)
|
||||
!
|
||||
DEALLOCATE(vkk_all)
|
||||
DEALLOCATE(wkf_all)
|
||||
DEALLOCATE(etf_all)
|
||||
GOTO 999
|
||||
!
|
||||
ELSE ! epmatkqread
|
||||
!
|
||||
! Open the required files
|
||||
CALL iter_open(ind_tot, ind_totcb, lrepmatw2, lrepmatw4, lrepmatw5, lrepmatw6)
|
||||
!
|
||||
ENDIF
|
||||
ENDIF
|
||||
!
|
||||
! Start iteration index
|
||||
iter = 1
|
||||
!iter = 0
|
||||
! Eerror for iterative BTE
|
||||
IF (int_mob .OR. (ncarrier > 1E5)) THEN
|
||||
error_el = 10_DP
|
||||
ELSE
|
||||
error_el = 0_DP
|
||||
! -----------------------------------------------------------------------
|
||||
! Determines which q-points falls within the fsthick windows
|
||||
! Store the result in the selecq.fmt file
|
||||
! If the file exists, automatically restart from the file
|
||||
! -----------------------------------------------------------------------
|
||||
totq = 0
|
||||
! Check if the file has been pre-computed
|
||||
IF (mpime == ionode_id) THEN
|
||||
INQUIRE(FILE='selecq.fmt',EXIST=exst)
|
||||
ENDIF
|
||||
IF (int_mob .OR. (ncarrier < 1E5)) THEN
|
||||
error_h = 10_DP
|
||||
CALL mp_bcast(exst, ionode_id, world_comm)
|
||||
!
|
||||
IF (exst) THEN
|
||||
IF (selecqread) THEN
|
||||
WRITE(stdout,'(5x,a)')' '
|
||||
WRITE(stdout,'(5x,a)')'Reading selecq.fmt file. '
|
||||
CALL qwindow(exst, nrr_k, dims, totq, selecq, irvec_r, ndegen_k, cufkk, cufkq)
|
||||
ELSE
|
||||
error_h = 0_DP
|
||||
WRITE(stdout,'(5x,a)')' '
|
||||
WRITE(stdout,'(5x,a)')'A selecq.fmt file was found but re-created because selecqread == .false. '
|
||||
CALL qwindow(.FALSE., nrr_k, dims, totq, selecq, irvec_r, ndegen_k, cufkk, cufkq)
|
||||
ENDIF
|
||||
ELSE ! exst
|
||||
IF (selecqread) THEN
|
||||
CALL errore( 'ephwann_shuffle', 'Variable selecqread == .true. but file selecq.fmt not found.',1 )
|
||||
ELSE
|
||||
CALL qwindow(exst, nrr_k, dims, totq, selecq, irvec_r, ndegen_k, cufkk, cufkq)
|
||||
ENDIF
|
||||
ENDIF
|
||||
!
|
||||
! Restart calculation
|
||||
!
|
||||
WRITE(stdout,'(5x,a,i8,a)')'We only need to compute ',totq, ' q-points'
|
||||
WRITE(stdout,'(5x,a)')' '
|
||||
!
|
||||
! -----------------------------------------------------------------------
|
||||
! Possible restart during step 1)
|
||||
! -----------------------------------------------------------------------
|
||||
iq_restart = 1
|
||||
first_cycle = .FALSE.
|
||||
first_time = .TRUE.
|
||||
IF (restart) THEN
|
||||
!
|
||||
! Restart in SERTA case or self-energy case
|
||||
IF (restart) THEN
|
||||
IF ( elecselfen ) THEN
|
||||
IF ( .not. ALLOCATED (sigmar_all) ) ALLOCATE( sigmar_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
IF ( .not. ALLOCATED (sigmai_all) ) ALLOCATE( sigmai_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
IF ( .not. ALLOCATED (zi_all) ) ALLOCATE( zi_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
ALLOCATE( sigmar_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
ALLOCATE( sigmai_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
ALLOCATE( zi_all(ibndmax-ibndmin+1, nkqtotf/2) )
|
||||
sigmar_all(:,:) = zero
|
||||
sigmai_all(:,:) = zero
|
||||
zi_all(:,:) = zero
|
||||
!
|
||||
CALL electron_read(iq_restart, nqf, nkqtotf/2, sigmar_all, sigmai_all, zi_all)
|
||||
!
|
||||
CALL electron_read(iq_restart, totq, nkqtotf/2, sigmar_all, sigmai_all, zi_all)
|
||||
ENDIF
|
||||
IF ( scattering ) THEN
|
||||
!
|
||||
IF (int_mob .AND. carrier) THEN
|
||||
!
|
||||
! Here inv_tau_all and inv_tau_allcb gets updated
|
||||
CALL tau_read(iq_restart, nqf, nkqtotf/2, .TRUE.)
|
||||
!
|
||||
CALL tau_read(iq_restart, totq, nkqtotf/2, .TRUE.)
|
||||
ELSE
|
||||
! Here inv_tau_all gets updated
|
||||
CALL tau_read(iq_restart, nqf, nkqtotf/2, .FALSE.)
|
||||
!
|
||||
CALL tau_read(iq_restart, totq, nkqtotf/2, .FALSE.)
|
||||
ENDIF
|
||||
!
|
||||
ENDIF
|
||||
IF ( iterative_bte ) THEN
|
||||
!
|
||||
IF (int_mob .AND. carrier) THEN
|
||||
CALL F_read(iter, iq_restart, nqf, nkqtotf/2, error_h, error_el, .TRUE.)
|
||||
ELSE
|
||||
CALL F_read(iter, iq_restart, nqf, nkqtotf/2, error_h, error_el, .FALSE.)
|
||||
ENDIF
|
||||
!
|
||||
IF (int_mob .OR. (ncarrier < 1E5)) THEN
|
||||
IF ( error_h < eps2 ) WRITE(stdout,'(5x,a)') repeat('=',67)
|
||||
IF ( error_h < eps2 ) &
|
||||
WRITE( stdout,'(5x,"IBTE is converged with value for hole mobility of",1E18.6," "/)') MAXVAL(mobilityh_save(:))
|
||||
IF ( error_h < eps2 ) WRITE(stdout,'(5x,a)') repeat('=',67)
|
||||
ENDIF
|
||||
IF (int_mob .OR. (ncarrier > 1E5)) THEN
|
||||
IF ( error_el < eps2 ) WRITE(stdout,'(5x,a)') repeat('=',67)
|
||||
IF ( error_el < eps2 ) &
|
||||
WRITE( stdout,'(5x,"IBTE is converged with value for electron mobility of",1E18.6," "/)') MAXVAL(mobilityel_save(:))
|
||||
IF ( error_el < eps2 ) WRITE(stdout,'(5x,a)') repeat('=',67)
|
||||
ENDIF
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
! If you restart from reading a file. This prevent
|
||||
! the case were you restart but the file does not exist
|
||||
IF (iq_restart > 1) first_cycle = .TRUE.
|
||||
!
|
||||
ENDIF
|
||||
ENDIF ! restart
|
||||
!
|
||||
! Scatread assumes that you alread have done the full q-integration
|
||||
! We just do one loop to get interpolated eigenenergies.
|
||||
IF(scatread) iq_restart = nqf -1
|
||||
IF(scatread) iq_restart = totq -1
|
||||
!
|
||||
DO WHILE ( (error_h > eps2) .OR. (error_el > eps2) )
|
||||
!
|
||||
IF ( iterative_bte ) THEN
|
||||
IF (iter==1 .OR. first_cycle) THEN
|
||||
WRITE(stdout,'(5x,a)') ' '
|
||||
WRITE(stdout,'(5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Start solving iterative Boltzmann Transport Equation")')
|
||||
WRITE(stdout,'(5x,a/)') repeat('=',67)
|
||||
! Restart in IBTE case
|
||||
IF (iterative_bte) THEN
|
||||
IF (mpime == ionode_id) THEN
|
||||
INQUIRE(FILE='restart_ibte.fmt',EXIST=exst)
|
||||
ENDIF
|
||||
WRITE(stdout,'(/5x,"Iteration number:", i10," "/)') iter
|
||||
!
|
||||
!IF (nstemp > 1) CALL errore('ephwann_shuffle', &
|
||||
! 'Iterative BTE can only be done at 1 temperature, nstemp = 1.',1)
|
||||
!
|
||||
IF (iter > maxiter) CALL errore('ephwann_shuffle', &
|
||||
'The iteration reached the maximum but did not converge. ',1)
|
||||
!
|
||||
! Reading iter X if the file exist from a restart
|
||||
!CALL F_read(Fi_all, ibndmax-ibndmin+1, nkqtotf/2, iter)
|
||||
CALL mp_bcast(exst, ionode_id, world_comm)
|
||||
!
|
||||
IF (exst) THEN
|
||||
IF (mpime.eq.ionode_id) THEN
|
||||
OPEN(unit=iunrestart,file='restart_ibte.fmt',status='old',iostat=ios)
|
||||
READ (iunrestart,*) iq_restart
|
||||
READ (iunrestart,*) ind_tot
|
||||
READ (iunrestart,*) ind_totcb
|
||||
READ (iunrestart,*) lrepmatw2
|
||||
READ (iunrestart,*) lrepmatw4
|
||||
READ (iunrestart,*) lrepmatw5
|
||||
READ (iunrestart,*) lrepmatw6
|
||||
CLOSE(iunrestart)
|
||||
ENDIF
|
||||
CALL mp_bcast(iq_restart, ionode_id, world_comm )
|
||||
CALL MPI_BCAST( ind_tot, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
CALL MPI_BCAST( ind_totcb, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
CALL MPI_BCAST( lrepmatw2, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
CALL MPI_BCAST( lrepmatw4, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
CALL MPI_BCAST( lrepmatw5, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
CALL MPI_BCAST( lrepmatw6, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'ephwann_shuffle', 'error in MPI_BCAST',1 )
|
||||
!
|
||||
!iter = iter +1
|
||||
! Now, the iq_restart point has been done, so we need to do the next one
|
||||
iq_restart = iq_restart + 1
|
||||
WRITE(stdout,'(5x,a,i8,a)')'We restart from ',iq_restart, ' q-points'
|
||||
ENDIF ! exst
|
||||
ENDIF
|
||||
! -----------------------------------------------------------------------------
|
||||
!
|
||||
DO iq = iq_restart, nqf
|
||||
DO iqq = iq_restart, totq
|
||||
!
|
||||
iq = selecq(iqq)
|
||||
!
|
||||
CALL start_clock ( 'ep-interp' )
|
||||
!
|
||||
|
@ -908,7 +926,7 @@
|
|||
!
|
||||
IF ( .not. phonselfen) THEN
|
||||
IF (MOD(iq,50) == 0) THEN
|
||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Progression iq (fine) = ',iq,'/',nqf
|
||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Progression iq (fine) = ',iq,'/',totq
|
||||
ENDIF
|
||||
ENDIF
|
||||
!
|
||||
|
@ -1109,15 +1127,6 @@
|
|||
!
|
||||
ENDDO
|
||||
ENDDO
|
||||
!IF (ik==2 .and. imode==1 .and. iq==9) print*,'epmatf(ibnd,jbnd) ',sum(epmatf(:,:))
|
||||
!if (ik==1) then
|
||||
! print*,'imode eptmp',imode, SUM((REAL(REAL(eptmp(:,:,imode,ik))))**2)+SUM((REAL(AIMAG(eptmp(:,:,imode,ik))))**2)
|
||||
! print*,'epmatwef ',SUM(epmatwef)
|
||||
!endif
|
||||
!IF (ik==8 .and. iq== 123 .and. imode == 6) THEN
|
||||
! print*,'epmatf(ibnd,jbnd) ',epmatf(2,:)
|
||||
! print*,'epmatlrT(:,:,imode,ik) ',epmatlrT(2,:,imode,ik)
|
||||
!ENDIF
|
||||
!
|
||||
ENDIF
|
||||
ENDIF ! scatread
|
||||
|
@ -1145,20 +1154,20 @@
|
|||
!
|
||||
!
|
||||
IF (prtgkk ) CALL print_gkk( iq )
|
||||
IF (phonselfen ) CALL selfen_phon_q( iq )
|
||||
IF (elecselfen ) CALL selfen_elec_q( iq, first_cycle )
|
||||
IF (plselfen .and. .not.vme ) CALL selfen_pl_q( iq )
|
||||
IF (nest_fn ) CALL nesting_fn_q( iq )
|
||||
IF (specfun_el ) CALL spectral_func_q( iq )
|
||||
IF (specfun_ph ) CALL spectral_func_ph( iq )
|
||||
IF (specfun_pl .and. .not.vme ) CALL spectral_func_pl_q( iq )
|
||||
IF (phonselfen ) CALL selfen_phon_q( iqq, iq, totq )
|
||||
IF (elecselfen ) CALL selfen_elec_q( iqq, iq, totq, first_cycle )
|
||||
IF (plselfen .and. .not. vme ) CALL selfen_pl_q( iqq, iq, totq )
|
||||
IF (nest_fn ) CALL nesting_fn_q( iqq, iq )
|
||||
IF (specfun_el ) CALL spectral_func_q( iqq, iq, totq )
|
||||
IF (specfun_ph ) CALL spectral_func_ph( iqq, iq, totq )
|
||||
IF (specfun_pl .and. .not. vme ) CALL spectral_func_pl_q( iqq, iq, totq )
|
||||
IF (ephwrite) THEN
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
CALL kmesh_fine
|
||||
CALL kqmap_fine
|
||||
ENDIF
|
||||
CALL write_ephmat( iq )
|
||||
CALL count_kpoints(iq)
|
||||
CALL write_ephmat( iqq, iq, totq )
|
||||
CALL count_kpoints( iqq )
|
||||
ENDIF
|
||||
!
|
||||
! Conductivity ---------------------------------------------------------
|
||||
|
@ -1183,7 +1192,7 @@
|
|||
etf (ibnd, ikq) = etf (ibnd, ikq) + scissor
|
||||
ENDDO
|
||||
ENDDO
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
WRITE(stdout, '(5x,"Applying a scissor shift of ",f9.5," eV to the conduction states")' ) scissor * ryd2ev
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
@ -1191,7 +1200,7 @@
|
|||
! If we want to compute intrinsic mobilities, call fermicarrier to
|
||||
! correctly positionned the ef0 level.
|
||||
! This is only done once for iq = 0
|
||||
IF ( iq == iq_restart ) THEN
|
||||
IF ( iqq == iq_restart ) THEN
|
||||
!
|
||||
DO itemp = 1, nstemp
|
||||
!
|
||||
|
@ -1251,34 +1260,26 @@
|
|||
ENDDO
|
||||
!
|
||||
!
|
||||
ENDIF ! iq=0
|
||||
ENDIF ! iqq=0
|
||||
!
|
||||
IF ( iterative_bte) THEN
|
||||
! First iteration is just SERTA
|
||||
IF (iter == 1) THEN
|
||||
!
|
||||
CALL scattering_rate_q( iq, ef0, efcb, first_cycle )
|
||||
!print*,'SUM(inv_tau_all) after ',SUM(inv_tau_all)
|
||||
!
|
||||
! Compute the SERTA mobility for the first iteration
|
||||
IF (iq == nqf) CALL transport_coeffs (ef0,efcb)
|
||||
IF (iq == nqf) iter = iter + 1
|
||||
!
|
||||
ELSE
|
||||
!
|
||||
IF (int_mob .AND. carrier) THEN
|
||||
call errore('ephwann_shuffle','The iterative solution cannot be solved with int_mob AND carrier at the moment',1)
|
||||
ELSE
|
||||
CALL iterativebte(iter, iq, ef0, efcb, error_h, error_el, first_cycle, first_time)
|
||||
IF ( .NOT. iterative_bte ) THEN
|
||||
CALL scattering_rate_q( iqq, iq, totq, ef0, efcb, first_cycle )
|
||||
! Computes the SERTA mobility
|
||||
IF (iqq == totq) CALL transport_coeffs (ef0,efcb)
|
||||
ENDIF
|
||||
!
|
||||
IF (iq == nqf) iter = iter + 1
|
||||
IF (iterative_bte) THEN
|
||||
CALL print_ibte( iqq, iq, totq, ef0, efcb, first_cycle, ind_tot, ind_totcb, lrepmatw2,&
|
||||
lrepmatw4, lrepmatw5, lrepmatw6 )
|
||||
!
|
||||
! Finished, now compute SERTA and IBTE mobilities
|
||||
IF (iqq == totq) THEN
|
||||
WRITE(stdout, '(5x,a)')' '
|
||||
WRITE(stdout, '(5x,"epmatkqread automatically changed to .true. as all scattering have been computed.")')
|
||||
WRITE(stdout, '(5x,a)')' '
|
||||
epmatkqread = .true.
|
||||
GOTO 998
|
||||
ENDIF
|
||||
!
|
||||
ELSE
|
||||
!
|
||||
CALL scattering_rate_q( iq, ef0, efcb, first_cycle )
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
ENDIF ! scattering
|
||||
|
@ -1289,27 +1290,8 @@
|
|||
ENDIF ! scatread
|
||||
ENDDO ! end loop over q points
|
||||
!
|
||||
IF (iterative_bte) iq_restart = 1
|
||||
! If we do not do iterative BTE, then exist the while loop.
|
||||
IF (.NOT. iterative_bte) error_h = 0.0_DP
|
||||
IF (.NOT. iterative_bte) error_el = 0.0_DP
|
||||
!
|
||||
ENDDO ! End the while loop
|
||||
IF (iterative_bte) DEALLOCATE (Fi_all)
|
||||
IF (iterative_bte) DEALLOCATE (F_current)
|
||||
IF (iterative_bte) DEALLOCATE (F_SERTA)
|
||||
IF (iterative_bte) DEALLOCATE (inv_tau_all)
|
||||
IF (iterative_bte) DEALLOCATE (zi_allvb)
|
||||
IF (iterative_bte) DEALLOCATE (s_BZtoIBZ_full)
|
||||
IF (iterative_bte) DEALLOCATE (ixkqf_tr)
|
||||
IF (int_mob .AND. carrier .AND. iterative_bte) DEALLOCATE (inv_tau_allcb)
|
||||
IF (int_mob .AND. carrier .AND. iterative_bte) DEALLOCATE (zi_allcb)
|
||||
!
|
||||
! Close th epmatwp file
|
||||
#if defined(__MPI)
|
||||
CALL MPI_FILE_CLOSE(iunepmatwp2,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'ephwann_shuffle', 'error in MPI_FILE_CLOSE',1 )
|
||||
#endif
|
||||
! close files
|
||||
CALL iter_close()
|
||||
!
|
||||
! Check Memory usage
|
||||
CALL system_mem_usage(valueRSS)
|
||||
|
@ -1332,23 +1314,23 @@
|
|||
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 iq = 1, nqtotf
|
||||
DO iqq = 1, totq
|
||||
!
|
||||
!myfmt = "(*(3x,E15.5))" This does not work with PGI
|
||||
myfmt = "(1000(3x,E15.5))"
|
||||
WRITE(lambda_phself,'(i9,4x)',advance='no') iq
|
||||
WRITE(lambda_phself, fmt=myfmt) (REAL(lambda_all(imode,iq,1)),imode=1,nmodes)
|
||||
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)
|
||||
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 iq = 1, nqtotf
|
||||
DO iqq = 1, totq
|
||||
!
|
||||
DO imode=1, nmodes
|
||||
WRITE(linewidth_phself,'(i9,i6,E20.8,E22.10)') iq,imode,&
|
||||
ryd2mev*wf(imode,iq),ryd2mev*REAL(gamma_all(imode,iq,1))
|
||||
WRITE(linewidth_phself,'(i9,i6,E20.8,E22.10)') iqq,imode,&
|
||||
ryd2mev*wf(imode,iqq),ryd2mev*REAL(gamma_all(imode,iqq,1))
|
||||
ENDDO
|
||||
!
|
||||
ENDDO
|
||||
|
@ -1407,12 +1389,7 @@
|
|||
DEALLOCATE(wslen_q)
|
||||
DEALLOCATE(wslen_g)
|
||||
!
|
||||
IF (.not. iterative_bte) CALL transport_coeffs (ef0,efcb)
|
||||
!
|
||||
IF ( ALLOCATED(inv_tau_all) ) DEALLOCATE( inv_tau_all )
|
||||
IF ( ALLOCATED(inv_tau_allcb) ) DEALLOCATE( inv_tau_allcb )
|
||||
IF ( ALLOCATED(zi_allvb) ) DEALLOCATE( zi_allvb )
|
||||
IF ( ALLOCATED(zi_allcb) ) DEALLOCATE( zi_allcb )
|
||||
999 continue
|
||||
!
|
||||
CALL stop_clock ( 'ephwann' )
|
||||
!
|
||||
|
|
|
@ -30,6 +30,7 @@
|
|||
USE epwcom, ONLY : filukk, eliashberg, ep_coupling, epwread, epbread, cumulant
|
||||
USE environment, ONLY : environment_start
|
||||
USE elph2, ONLY : elph
|
||||
USE close_epw, ONLY : close_final, deallocate_epw
|
||||
! Flag to perform an electron-phonon calculation. If .true.
|
||||
! the code will enter in [[elphon_shuffle_wrap]]
|
||||
!
|
||||
|
@ -158,7 +159,7 @@ write(stdout,'(a)') "
|
|||
!
|
||||
! ... Close the files
|
||||
!
|
||||
CALL close_epw()
|
||||
CALL close_final()
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
|
|
|
@ -59,7 +59,7 @@
|
|||
scattering_0rta, longrange, shortrange, scatread, &
|
||||
restart_filq, prtgkk, nel, meff, epsiHEG, lphase, &
|
||||
omegamin, omegamax, omegastep, n_r, lindabs, &
|
||||
mob_maxiter, use_ws
|
||||
mob_maxiter, use_ws, epmatkqread, selecqread
|
||||
USE elph2, ONLY : elph
|
||||
USE start_k, ONLY : nk1, nk2, nk3
|
||||
USE constants_epw, ONLY : ryd2mev, ryd2ev, ev2cmm1, kelvin2eV
|
||||
|
@ -104,7 +104,7 @@
|
|||
filukk, filukq, epbread, epbwrite, epwread, epwwrite, etf_mem, kmaps, &
|
||||
eig_read, wepexst, epexst, vme, &
|
||||
degaussw, fsthick, eptemp, nsmear, delta_smear, &
|
||||
dvscf_dir, ngaussw, &
|
||||
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, &
|
||||
wmin, wmax, nw, eps_acustic, a2f, nest_fn, plselfen, &
|
||||
|
@ -285,6 +285,8 @@
|
|||
! lphase : If .true., fix the gauge on the phonon eigenvectors and electronic eigenvectors - DS
|
||||
! mob_maxiter : Maximum number of iteration for the IBTE.
|
||||
! use_ws : If .true., use the Wannier-center to create the Wigner-Seitz cell.
|
||||
! epmatkqread : If .true., restart an IBTE calculation from scattering written to files.
|
||||
! selecqread : If .true., restart from the selecq.fmt file
|
||||
!
|
||||
! Added by Manos Kioupakis
|
||||
! omegamin : Photon energy minimum
|
||||
|
@ -482,6 +484,8 @@
|
|||
lindabs = .false.
|
||||
mob_maxiter= 50
|
||||
use_ws = .false.
|
||||
epmatkqread = .false.
|
||||
selecqread = .false.
|
||||
!
|
||||
! reading the namelist inputepw
|
||||
!
|
||||
|
|
|
@ -248,6 +248,10 @@
|
|||
!! if .true., perform phonon-assisted absorption calculations
|
||||
LOGICAL :: use_ws
|
||||
!! if .true., use Wannier-centers to compute the Wigner-Seitz cell.
|
||||
LOGICAL :: epmatkqread
|
||||
!! if .true., restart and IBTE calculation from the scattering rates written to files.
|
||||
LOGICAL :: selecqread
|
||||
!! if .true., restart from the selecq.fmt file
|
||||
!
|
||||
! Superconductivity
|
||||
LOGICAL :: ephwrite
|
||||
|
|
|
@ -766,6 +766,7 @@
|
|||
USE mp_global, ONLY : inter_pool_comm, npool
|
||||
USE mp_world, ONLY : mpime
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -1052,6 +1053,7 @@
|
|||
USE constants_epw, ONLY : ryd2ev, zero
|
||||
USE mp, ONLY : mp_barrier, mp_bcast, mp_sum
|
||||
USE mp_global, ONLY : inter_pool_comm, npool
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -1200,7 +1202,7 @@
|
|||
END SUBROUTINE read_ephmat
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE write_ephmat( iq )
|
||||
SUBROUTINE write_ephmat( iqq, iq, totq )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! This subroutine writes the elph matrix elements in a format required
|
||||
|
@ -1220,17 +1222,22 @@
|
|||
efermi_read, fermi_energy
|
||||
USE pwcom, ONLY : ef
|
||||
USE elph2, ONLY : etf, ibndmin, ibndmax, nkqf, epf17, wkf, nkf, &
|
||||
nqtotf, wf, xqf, nkqtotf, efnew
|
||||
wf, xqf, nkqtotf, efnew
|
||||
USE eliashbergcom, ONLY : equivk, nkfs, ekfs, wkfs, xkfs, dosef, ixkf, ixkqf, nbndfs
|
||||
USE superconductivity, ONLY : mem_size_eliashberg, mem_integer_size_eliashberg
|
||||
USE constants_epw, ONLY : ryd2ev, two
|
||||
USE mp, ONLY : mp_barrier, mp_sum
|
||||
USE mp_global, ONLY : inter_pool_comm, my_pool_id, npool
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER, INTENT (in) :: iqq
|
||||
!! Current q-points from selecq
|
||||
INTEGER, INTENT (in) :: iq
|
||||
!! Current q-points
|
||||
INTEGER, INTENT (in) :: totq
|
||||
!! Total number of q-point from selecq
|
||||
!
|
||||
! Local variables
|
||||
!
|
||||
|
@ -1273,9 +1280,9 @@
|
|||
! write phonon frequencies to file
|
||||
IF ( my_pool_id == 0 ) THEN
|
||||
filfreq = trim(tmp_dir) // trim(prefix) // '.freq'
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
OPEN(iufilfreq, file = filfreq, form = 'unformatted')
|
||||
WRITE(iufilfreq) nqtotf, nmodes
|
||||
WRITE(iufilfreq) totq, nmodes
|
||||
WRITE(iufilfreq) xqf(1,iq), xqf(2,iq), xqf(3,iq)
|
||||
DO imode = 1, nmodes
|
||||
WRITE(iufilfreq) wf(imode,iq)
|
||||
|
@ -1312,7 +1319,7 @@
|
|||
nkftot = nkqtotf / 2
|
||||
CALL fkbounds( nkftot, lower_bnd, upper_bnd )
|
||||
!
|
||||
IF (iq.eq.1) THEN
|
||||
IF (iqq == 1) THEN
|
||||
!
|
||||
! find fermicount - nr of k-points within the Fermi shell per pool
|
||||
! for mp_mesh_k=true. femicount is the nr of irreducible k-points within the Fermi shell per pool
|
||||
|
@ -1360,7 +1367,7 @@
|
|||
CLOSE(iufilegnv)
|
||||
ENDIF
|
||||
!
|
||||
ENDIF ! iq
|
||||
ENDIF ! iqq
|
||||
!
|
||||
! write the e-ph matrix elements in the Bloch representation on the fine mesh
|
||||
! in .ephmat files (one for each pool)
|
||||
|
@ -1371,14 +1378,14 @@
|
|||
#else
|
||||
filephmat = trim(tmp_dir) // trim(prefix) // '.ephmat'
|
||||
#endif
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
OPEN(iufileph, file = filephmat, form = 'unformatted')
|
||||
ELSE
|
||||
OPEN(iufileph, file = filephmat, position='append', form = 'unformatted')
|
||||
ENDIF
|
||||
!
|
||||
!IF ( iq .eq. 1 ) WRITE(iufileph,'(2i7)') my_pool_id+1, fermicount
|
||||
IF ( iq .eq. 1 ) WRITE(iufileph) my_pool_id+1, fermicount
|
||||
IF ( iqq == 1 ) WRITE(iufileph) my_pool_id+1, fermicount
|
||||
!
|
||||
! nkf - nr of k-points in the pool (fine mesh)
|
||||
! for mp_mesh_k = true nkf is nr of irreducible k-points in the pool
|
||||
|
@ -1428,7 +1435,7 @@
|
|||
ENDDO ! ik's
|
||||
CLOSE(iufileph)
|
||||
!
|
||||
IF ( iq .eq. nqtotf ) THEN
|
||||
IF ( iqq == totq ) THEN
|
||||
IF ( ALLOCATED(ekfs) ) DEALLOCATE(ekfs)
|
||||
IF ( ALLOCATED(wkfs) ) DEALLOCATE(wkfs)
|
||||
IF ( ALLOCATED(xkfs) ) DEALLOCATE(xkfs)
|
||||
|
@ -1441,7 +1448,7 @@
|
|||
CALL mem_size_eliashberg( -imelt )
|
||||
!
|
||||
! remove memory allocated for ixkqf
|
||||
imelt = nqtotf * nkfs
|
||||
imelt = totq * nkfs
|
||||
CALL mem_integer_size_eliashberg( -imelt )
|
||||
!
|
||||
! remove memory allocated for equivk, ixkf
|
||||
|
@ -1462,7 +1469,7 @@
|
|||
END SUBROUTINE write_ephmat
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE count_kpoints( iq )
|
||||
SUBROUTINE count_kpoints( iqq )
|
||||
!-----------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
|
@ -1476,7 +1483,7 @@
|
|||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER, INTENT (in) :: iq
|
||||
INTEGER, INTENT (in) :: iqq
|
||||
!! Current q-points
|
||||
!
|
||||
! Local variables
|
||||
|
@ -1499,7 +1506,7 @@
|
|||
!
|
||||
REAL(DP), EXTERNAL :: efermig, dos_ef
|
||||
!
|
||||
IF (iq.eq.1) THEN
|
||||
IF (iqq == 1) THEN
|
||||
!
|
||||
! Fermi level and corresponding DOS
|
||||
!
|
||||
|
@ -1540,7 +1547,7 @@
|
|||
ELSE
|
||||
WRITE(stdout,'(5x,a,i9,a,i9)') 'Nr k-points within the Fermi shell = ', nks, ' out of ', nkqtotf / 2
|
||||
ENDIF
|
||||
ENDIF ! iq
|
||||
ENDIF ! iqq
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
|
@ -1566,6 +1573,7 @@
|
|||
USE mp_global, ONLY : inter_pool_comm, npool
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE mp_world, ONLY : mpime
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -1754,6 +1762,7 @@
|
|||
USE mp_global, ONLY : inter_pool_comm
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE mp_world, ONLY : mpime
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
|
|
@ -33,6 +33,10 @@
|
|||
iudecaydyn, iudecayv, iummn, iubvec
|
||||
PUBLIC :: iufilsigma, iufilseebeck, iufilkappael, iufilkappa, iufilscatt_rate,&
|
||||
iufilFi_all, iufilsigma_all, iufiltau_all, iuindabs
|
||||
PUBLIC :: iunsparseq, iunsparsek, iunsparsei, iunsparsej, iunsparset, iunselecq, &
|
||||
iunsparseqcb, iunsparsekcb, iunsparseicb, iunsparsejcb, iunsparsetcb, &
|
||||
iunrestart, iufilibtev_sup, iunepmat, iunepmatcb
|
||||
|
||||
!
|
||||
! Output of physically relevant quantities (60-100)
|
||||
!
|
||||
|
@ -101,6 +105,22 @@
|
|||
INTEGER :: epwdata = 124 ! EPW data [epwdata.fmt]
|
||||
INTEGER :: iundmedata = 125 ! Dipole matrix in wannier basis [dmedata.fmt]
|
||||
INTEGER :: iunepmatwp2 = 126 ! Opening the epmatwp file
|
||||
INTEGER :: iufilibtev_sup = 127 ! Files containing velocities for IBTE
|
||||
INTEGER :: iunsparseq = 128 ! Q-mapping for IBTE
|
||||
INTEGER :: iunsparsek = 129 ! K-mapping for IBTE
|
||||
INTEGER :: iunsparsei = 130 ! i band mapping for IBTE
|
||||
INTEGER :: iunsparsej = 131 ! j band mapping for IBTE
|
||||
INTEGER :: iunsparset = 132 ! temperature mapping for IBTE
|
||||
INTEGER :: iunsparseqcb = 133 ! Q-mapping for IBTE of conduction band
|
||||
INTEGER :: iunsparsekcb = 134 ! K-mapping for IBTE for conduction band
|
||||
INTEGER :: iunsparseicb = 135 ! i band mapping for IBTE for conduction band
|
||||
INTEGER :: iunsparsejcb = 136 ! j band mapping for IBTE for conduction band
|
||||
INTEGER :: iunsparsetcb = 137 ! temperature mapping for IBTE for conduction band
|
||||
INTEGER :: iunselecq = 138 ! file containing q-point inside the fsthick windows
|
||||
INTEGER :: iunrestart = 139 ! restart file during writing of IBTE scattering elements
|
||||
INTEGER :: iunepmat = 140 ! Opening the epmatkq files
|
||||
INTEGER :: iunepmatcb = 141 ! Opening the epmatkqcb file
|
||||
|
||||
!
|
||||
! Output quantites related to Wannier (201-250)
|
||||
!
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
CONTAINS
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
SUBROUTINE F_write(iter, iq, nqtotf, nktotf, error_h, error_el, second)
|
||||
SUBROUTINE Fin_write(iter, F_in, av_mob_old, elec)
|
||||
!----------------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP
|
||||
USE io_epw, ONLY : iufilFi_all
|
||||
|
@ -26,26 +26,22 @@
|
|||
USE mp, ONLY : mp_barrier
|
||||
USE mp_world, ONLY : mpime
|
||||
USE io_global, ONLY : ionode_id
|
||||
USE elph2, ONLY : F_current, ibndmax, ibndmin, F_currentcb
|
||||
USE transportcom, ONLY : lower_bnd, upper_bnd, mobilityh_save, mobilityel_save
|
||||
USE elph2, ONLY : ibndmax, ibndmin, nkqtotf
|
||||
USE transportcom, ONLY : lower_bnd, upper_bnd
|
||||
USE constants_epw, ONLY : zero
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER, INTENT(IN) :: iter
|
||||
!! Iteration number
|
||||
INTEGER, INTENT(IN) :: iq
|
||||
!! Current q-point
|
||||
INTEGER, INTENT(IN) :: nqtotf
|
||||
!! Total number of q-points
|
||||
INTEGER, INTENT(IN) :: nktotf
|
||||
!! Total number of k-points
|
||||
REAL(kind=DP), INTENT(IN) :: error_h
|
||||
REAL(kind=DP), INTENT(IN) :: F_in(3, ibndmax-ibndmin+1, nkqtotf/2, nstemp)
|
||||
!REAL(kind=DP), INTENT(IN) :: F_in(:,:,:,:)
|
||||
!! In solution for iteration i
|
||||
REAL(kind=DP), INTENT(IN) :: av_mob_old(nstemp)
|
||||
!REAL(kind=DP), INTENT(IN) :: av_mob_old(:)
|
||||
!! Error in the hole mobility
|
||||
REAL(kind=DP), INTENT(IN) :: error_el
|
||||
!! Error in the electron mobility
|
||||
LOGICAL, INTENT(IN) :: second
|
||||
!! IF we have two Fermi level
|
||||
LOGICAL, INTENT(IN) :: elec
|
||||
!! IF true we do electron mobility, if false the hole one.
|
||||
!
|
||||
! Local variable
|
||||
LOGICAL :: exst
|
||||
|
@ -63,89 +59,56 @@
|
|||
INTEGER :: itemp
|
||||
!! Temperature index
|
||||
!
|
||||
REAL(KIND=DP) :: aux ( 3 * nstemp * (ibndmax-ibndmin+1) * nktotf + 7 + 2 * nstemp )
|
||||
REAL(KIND=DP) :: aux ( 3 * (ibndmax-ibndmin+1) * (nkqtotf/2) * nstemp + nstemp + 1 )
|
||||
!! Vector to store the array
|
||||
!
|
||||
!
|
||||
IF (mpime.eq.ionode_id) THEN
|
||||
exst = .FALSE.
|
||||
aux(:) = zero
|
||||
IF (mpime == ionode_id) THEN
|
||||
!
|
||||
lfi_all = 3 * nstemp * (ibndmax-ibndmin+1) * nktotf + 7 + 2 * nstemp
|
||||
lfi_all = 3 * (ibndmax-ibndmin+1) * (nkqtotf/2) * nstemp + nstemp + 1
|
||||
! First element is the iteration number
|
||||
aux(1) = iter
|
||||
! Current q-point number
|
||||
aux(2) = iq -1 ! -1 because we will start at the next one.
|
||||
! Total number of q-points
|
||||
aux(3) = nqtotf
|
||||
! Value of the previous h mobility (used for error evaluation)
|
||||
aux(4) = error_h
|
||||
! Error in the electron mobility
|
||||
aux(5) = error_el
|
||||
!
|
||||
i = 5
|
||||
i = 1
|
||||
DO itemp=1, nstemp
|
||||
i = i + 1
|
||||
! Value of the previous h mobility (used for error evaluation)
|
||||
aux(i) = mobilityh_save(itemp)
|
||||
aux(i) = av_mob_old(itemp)
|
||||
ENDDO
|
||||
!
|
||||
i = 5 + nstemp
|
||||
i = 1 + nstemp
|
||||
DO itemp=1, nstemp
|
||||
i = i + 1
|
||||
! Value of the previous el mobility (used for error evaluation)
|
||||
aux(i) = mobilityel_save(itemp)
|
||||
ENDDO
|
||||
!
|
||||
i = 5 + nstemp + nstemp
|
||||
DO itemp=1, nstemp
|
||||
DO ik=1, nktotf
|
||||
DO ik=1, nkqtotf/2
|
||||
DO ibnd=1, (ibndmax-ibndmin+1)
|
||||
DO idir=1,3
|
||||
i = i +1
|
||||
aux(i) = F_current(idir, ibnd, ik, itemp)
|
||||
aux(i) = F_in(idir, ibnd, ik, itemp)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
CALL diropn (iufilFi_all, 'F_restart', lfi_all, exst)
|
||||
!
|
||||
! Electron mobility
|
||||
IF (elec) THEN
|
||||
CALL diropn (iufilFi_all, 'Fin_restartcb', lfi_all, exst)
|
||||
CALL davcio ( aux, lfi_all, iufilFi_all, 1, +1 )
|
||||
ELSE
|
||||
CALL diropn (iufilFi_all, 'Fin_restart', lfi_all, exst)
|
||||
CALL davcio ( aux, lfi_all, iufilFi_all, 1, +1 )
|
||||
ENDIF
|
||||
CLOSE(iufilFi_all)
|
||||
!
|
||||
IF (second) THEN
|
||||
!
|
||||
i = 5 + nstemp + nstemp
|
||||
DO itemp=1, nstemp
|
||||
DO ik=1, nktotf
|
||||
DO ibnd=1, (ibndmax-ibndmin+1)
|
||||
DO idir=1,3
|
||||
i = i +1
|
||||
aux(i) = F_currentcb(idir,ibnd, ik, itemp)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
CALL diropn (iufilFi_all, 'F_restart_CB', lfi_all, exst)
|
||||
CALL davcio ( aux, lfi_all, iufilFi_all, 1, +1 )
|
||||
CLOSE(iufilFi_all)
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
! Make everythin 0 except the range of k-points we are working on
|
||||
IF (lower_bnd > 1 ) F_current(:,:,1:lower_bnd-1,:) = zero
|
||||
IF (upper_bnd < nktotf ) F_current(:,:,upper_bnd+1:nktotf,:) = zero
|
||||
!
|
||||
IF (second) THEN
|
||||
IF (lower_bnd > 1 ) F_currentcb(:,:,1:lower_bnd-1,:) = zero
|
||||
IF (upper_bnd < nktotf ) F_currentcb(:,:,upper_bnd+1:nktotf,:) = zero
|
||||
ENDIF
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
END SUBROUTINE F_write
|
||||
END SUBROUTINE Fin_write
|
||||
!----------------------------------------------------------------------------
|
||||
|
||||
!----------------------------------------------------------------------------
|
||||
SUBROUTINE F_read(iter, iq, nqtotf, nktotf, error_h, error_el, second)
|
||||
SUBROUTINE Fin_read(iter, F_in, av_mob_old, elec)
|
||||
!----------------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
|
@ -157,26 +120,20 @@
|
|||
USE mp_global, ONLY : inter_pool_comm, intra_pool_comm, root_pool
|
||||
USE mp_world, ONLY : mpime
|
||||
USE io_global, ONLY : ionode_id
|
||||
USE elph2, ONLY : F_current, ibndmax, ibndmin, Fi_all, F_currentcb, &
|
||||
Fi_allcb
|
||||
USE transportcom, ONLY : lower_bnd, upper_bnd, mobilityh_save, mobilityel_save
|
||||
USE elph2, ONLY : ibndmax, ibndmin, nkqtotf
|
||||
USE transportcom, ONLY : lower_bnd, upper_bnd
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER, INTENT(OUT) :: iter
|
||||
INTEGER, INTENT(INOUT) :: iter
|
||||
!! Iteration number
|
||||
INTEGER, INTENT(INOUT) :: iq
|
||||
!! Current q-point
|
||||
INTEGER, INTENT(IN) :: nqtotf
|
||||
!! Total number of q-points
|
||||
INTEGER, INTENT(IN) :: nktotf
|
||||
!! Total number of k-points
|
||||
REAL(kind=DP), INTENT(INOUT) :: error_h
|
||||
REAL(kind=DP), INTENT(INOUT) :: F_in(3, ibndmax-ibndmin+1, nkqtotf/2, nstemp)
|
||||
!! In solution for iteration i
|
||||
REAL(kind=DP), INTENT(INOUT) :: av_mob_old(nstemp)
|
||||
!! Error in the hole mobility
|
||||
REAL(kind=DP), INTENT(INOUT) :: error_el
|
||||
!! Error in the electron mobility
|
||||
LOGICAL, INTENT(IN) :: second
|
||||
!! IF we have two Fermi level
|
||||
LOGICAL, INTENT(IN) :: elec
|
||||
!! IF true we do electron mobility, if false the hole one.
|
||||
|
||||
!
|
||||
! Local variable
|
||||
LOGICAL :: exst
|
||||
|
@ -198,102 +155,87 @@
|
|||
!
|
||||
CHARACTER (len=256) :: name1
|
||||
|
||||
REAL(KIND=DP) :: aux ( 3 * nstemp * (ibndmax-ibndmin+1) * nktotf + 7 + 2 * nstemp )
|
||||
REAL(KIND=DP) :: aux ( 3 * (ibndmax-ibndmin+1) * (nkqtotf/2) * nstemp + nstemp + 1 )
|
||||
!! Vector to store the array
|
||||
!
|
||||
IF (mpime.eq.ionode_id) THEN
|
||||
!
|
||||
! First inquire if the file exists
|
||||
IF (elec) THEN
|
||||
#if defined(__MPI)
|
||||
name1 = trim(tmp_dir) // trim(prefix) // '.F_restart1'
|
||||
name1 = trim(tmp_dir) // trim(prefix) // '.Fin_restartcb1'
|
||||
#else
|
||||
name1 = trim(tmp_dir) // trim(prefix) // '.F_restart'
|
||||
name1 = trim(tmp_dir) // trim(prefix) // '.Fin_restartcb'
|
||||
#endif
|
||||
INQUIRE(file = name1, exist=exst)
|
||||
!
|
||||
IF (exst) THEN ! read the file
|
||||
!
|
||||
lfi_all = 3 * nstemp * (ibndmax-ibndmin+1) * nktotf + 7 + 2 * nstemp
|
||||
CALL diropn (iufilFi_all, 'F_restart', lfi_all, exst)
|
||||
lfi_all = 3 * (ibndmax-ibndmin+1) * (nkqtotf/2) * nstemp + nstemp + 1
|
||||
CALL diropn (iufilFi_all, 'Fin_restartcb', lfi_all, exst)
|
||||
CALL davcio ( aux, lfi_all, iufilFi_all, 1, -1 )
|
||||
!
|
||||
! First element is the iteration number
|
||||
iter = INT( aux(1) )
|
||||
! Current iteration number
|
||||
iq = INT( aux(2) )
|
||||
iq = iq + 1 ! we need to start at the next q
|
||||
! Total number of q-points
|
||||
nqtotf_read = INT( aux(3) )
|
||||
! Error in hole mobility
|
||||
error_h = aux(4)
|
||||
! Error in electron mobility
|
||||
error_el = aux(5)
|
||||
! This is the error of the previous iteration. Therefore when you restart
|
||||
! from a converged one, you want to be finished.
|
||||
! This small substraction wont affect anything.
|
||||
error_h = error_h -0.5E-2
|
||||
error_el = error_el -0.5E-2
|
||||
!
|
||||
IF ( nqtotf_read /= nqtotf) CALL errore('io_scattering',&
|
||||
&'Error: The current total number of q-point is not the same as the read one. ',1)
|
||||
!
|
||||
i = 5
|
||||
i = 1
|
||||
DO itemp=1, nstemp
|
||||
i = i + 1
|
||||
! Last value of hole mobility
|
||||
mobilityh_save(itemp) = aux(i)
|
||||
av_mob_old(itemp) = aux(i)
|
||||
ENDDO
|
||||
!
|
||||
i = 5 + nstemp
|
||||
i = 1 + nstemp
|
||||
DO itemp=1, nstemp
|
||||
i = i + 1
|
||||
! Last value of electron mobility
|
||||
mobilityel_save(itemp) = aux(i)
|
||||
ENDDO
|
||||
!
|
||||
i = 5 + nstemp + nstemp
|
||||
DO itemp=1, nstemp
|
||||
DO ik=1, nktotf
|
||||
DO ik=1, nkqtotf/2
|
||||
DO ibnd=1, (ibndmax-ibndmin+1)
|
||||
DO idir=1,3
|
||||
i = i +1
|
||||
F_current(idir, ibnd, ik, itemp) = aux(i)
|
||||
F_in(idir, ibnd, ik, itemp) = aux(i)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
CLOSE(iufilFi_all)
|
||||
ENDIF
|
||||
!
|
||||
IF (second) THEN
|
||||
!
|
||||
! First inquire if the file exists
|
||||
ELSE ! hole
|
||||
#if defined(__MPI)
|
||||
name1 = trim(tmp_dir) // trim(prefix) // '.F_restart_CB1'
|
||||
name1 = trim(tmp_dir) // trim(prefix) // '.Fin_restart1'
|
||||
#else
|
||||
name1 = trim(tmp_dir) // trim(prefix) // '.F_restart_CB'
|
||||
name1 = trim(tmp_dir) // trim(prefix) // '.Fin_restart'
|
||||
#endif
|
||||
INQUIRE(file = name1, exist=exst)
|
||||
!
|
||||
IF (exst) THEN ! read the file
|
||||
!
|
||||
CALL diropn (iufilFi_all, 'F_restart_CB', lfi_all, exst)
|
||||
lfi_all = 3 * (ibndmax-ibndmin+1) * (nkqtotf/2) * nstemp + nstemp + 1
|
||||
CALL diropn (iufilFi_all, 'Fin_restart', lfi_all, exst)
|
||||
CALL davcio ( aux, lfi_all, iufilFi_all, 1, -1 )
|
||||
!
|
||||
i = 5 + nstemp + nstemp
|
||||
! First element is the iteration number
|
||||
iter = INT( aux(1) )
|
||||
!
|
||||
i = 2
|
||||
DO itemp=1, nstemp
|
||||
DO ik=1, nktotf
|
||||
i = i + 1
|
||||
! Last value of hole mobility
|
||||
av_mob_old(itemp) = aux(i)
|
||||
ENDDO
|
||||
!
|
||||
i = 2 + nstemp
|
||||
DO itemp=1, nstemp
|
||||
DO ik=1, nkqtotf/2
|
||||
DO ibnd=1, (ibndmax-ibndmin+1)
|
||||
DO idir=1,3
|
||||
i = i +1
|
||||
F_currentcb(idir,ibnd, ik, itemp) = aux(i)
|
||||
F_in(idir, ibnd, ik, itemp) = aux(i)
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
CLOSE(iufilFi_all)
|
||||
ENDIF ! exist
|
||||
ENDIF ! second
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF ! mpime
|
||||
!
|
||||
CALL mp_bcast (exst, ionode_id, inter_pool_comm)
|
||||
|
@ -302,50 +244,124 @@
|
|||
IF (exst) THEN
|
||||
CALL mp_bcast (iter, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (iter, root_pool, intra_pool_comm)
|
||||
CALL mp_bcast (iq, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (iq, root_pool, intra_pool_comm)
|
||||
CALL mp_bcast (F_current, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (F_current, root_pool, intra_pool_comm)
|
||||
IF (second) THEN
|
||||
CALL mp_bcast (F_currentcb, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (F_currentcb, root_pool, intra_pool_comm)
|
||||
ENDIF
|
||||
CALL mp_bcast (mobilityh_save, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (mobilityh_save, root_pool, intra_pool_comm)
|
||||
CALL mp_bcast (mobilityel_save, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (mobilityel_save, root_pool, intra_pool_comm)
|
||||
CALL mp_bcast (error_h, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (error_h, root_pool, intra_pool_comm)
|
||||
CALL mp_bcast (error_el, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (error_el, root_pool, intra_pool_comm)
|
||||
CALL mp_bcast (F_in, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (F_in, root_pool, intra_pool_comm)
|
||||
CALL mp_bcast (av_mob_old, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (av_mob_old, root_pool, intra_pool_comm)
|
||||
!
|
||||
! The Fi on the commensurate full k-grid is equal to the full
|
||||
! F_current from the previous read run.
|
||||
Fi_all = F_current
|
||||
CALL mp_bcast (Fi_all, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (Fi_all, root_pool, intra_pool_comm)
|
||||
!
|
||||
! Make everythin 0 except the range of k-points we are working on
|
||||
IF (lower_bnd > 1 ) F_current(:,:,1:lower_bnd-1,:) = zero
|
||||
IF (upper_bnd < nktotf ) F_current(:,:,upper_bnd+1:nktotf,:) = zero
|
||||
!
|
||||
IF (second) THEN
|
||||
Fi_allcb = F_currentcb
|
||||
CALL mp_bcast (Fi_allcb, ionode_id, inter_pool_comm)
|
||||
CALL mp_bcast (Fi_allcb, root_pool, intra_pool_comm)
|
||||
!
|
||||
! Make everythin 0 except the range of k-points we are working on
|
||||
IF (lower_bnd > 1 ) F_currentcb(:,:,1:lower_bnd-1,:) = zero
|
||||
IF (upper_bnd < nktotf ) F_currentcb(:,:,upper_bnd+1:nktotf,:) = zero
|
||||
ENDIF
|
||||
!
|
||||
WRITE(stdout, '(a,i10,a,i10,a,i10)' ) ' Restart from iter: ',iter,' and iq: ',iq,'/',nqtotf
|
||||
WRITE(stdout, '(a,i10)' ) ' Restart from iter: ',iter
|
||||
ENDIF ! exists
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
END SUBROUTINE F_read
|
||||
END SUBROUTINE Fin_read
|
||||
!----------------------------------------------------------------------------
|
||||
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
SUBROUTINE iter_open(ind_tot, ind_totcb, lrepmatw2, lrepmatw4, lrepmatw5, lrepmatw6)
|
||||
!----------------------------------------------------------------------------
|
||||
!
|
||||
! This subroutine opens all the files needed to save scattering rates for the IBTE.
|
||||
!
|
||||
USE kinds, ONLY : DP
|
||||
USE io_files, ONLY : tmp_dir, prefix
|
||||
USE io_epw, ONLY : iufilibtev_sup, iunepmat, iunsparseq, iunsparsek, &
|
||||
iunsparsei, iunsparsej, iunsparset, iunsparseqcb, &
|
||||
iunsparsekcb, iunrestart, iunsparseicb, iunsparsejcb,&
|
||||
iunsparsetcb, iunepmatcb
|
||||
USE mp_world, ONLY : world_comm
|
||||
#if defined(__MPI)
|
||||
USE parallel_include, ONLY : MPI_MODE_WRONLY, MPI_MODE_CREATE, MPI_INFO_NULL, &
|
||||
MPI_OFFSET_KIND
|
||||
#endif
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
#if defined(__MPI)
|
||||
INTEGER (kind=MPI_OFFSET_KIND), INTENT(INOUT) :: ind_tot
|
||||
!! Total number of component for valence band
|
||||
INTEGER (kind=MPI_OFFSET_KIND), INTENT(INOUT) :: ind_totcb
|
||||
!! Total number of component for the conduction band
|
||||
INTEGER (kind=MPI_OFFSET_KIND), INTENT(INOUT) :: lrepmatw2
|
||||
!! Offset while writing scattering to files
|
||||
INTEGER (kind=MPI_OFFSET_KIND), INTENT(INOUT) :: lrepmatw4
|
||||
!! Offset while writing scattering to files
|
||||
INTEGER (kind=MPI_OFFSET_KIND), INTENT(INOUT) :: lrepmatw5
|
||||
!! Offset while writing scattering to files
|
||||
INTEGER (kind=MPI_OFFSET_KIND), INTENT(INOUT) :: lrepmatw6
|
||||
!! Offset while writing scattering to files
|
||||
#else
|
||||
INTEGER(KIND=8), INTENT(INOUT) :: ind_tot
|
||||
!! Total number of component for valence band
|
||||
INTEGER(KIND=8), INTENT(INOUT) :: ind_totcb
|
||||
!! Total number of component for conduction band
|
||||
INTEGER(KIND=8), INTENT(INOUT) :: lrepmatw2
|
||||
!! Offset while writing scattering to files
|
||||
INTEGER(KIND=8), INTENT(INOUT) :: lrepmatw4
|
||||
!! Offset while writing scattering to files
|
||||
INTEGER(KIND=8), INTENT(INOUT) :: lrepmatw5
|
||||
!! Offset while writing scattering to files
|
||||
INTEGER(KIND=8), INTENT(INOUT) :: lrepmatw6
|
||||
!! Offset while writing scattering to files
|
||||
#endif
|
||||
!
|
||||
! Local variables
|
||||
!
|
||||
CHARACTER (len=256) :: filint
|
||||
!! Name of the file to write/read
|
||||
INTEGER :: ierr
|
||||
!! Error index
|
||||
!
|
||||
#if defined(__MPI)
|
||||
filint = trim(tmp_dir)//trim(prefix)//'.epmatkq1'
|
||||
CALL MPI_FILE_OPEN(world_comm, filint, MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunepmat,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN X.epmatkq1',1 )
|
||||
!
|
||||
CALL MPI_FILE_OPEN(world_comm, 'sparseq', MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunsparseq,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN sparseq',1 )
|
||||
!
|
||||
CALL MPI_FILE_OPEN(world_comm, 'sparsek', MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunsparsek,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN sparsek',1 )
|
||||
!
|
||||
CALL MPI_FILE_OPEN(world_comm, 'sparsei', MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunsparsei,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN sparsei',1 )
|
||||
!
|
||||
CALL MPI_FILE_OPEN(world_comm, 'sparsej', MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunsparsej,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN sparsej',1 )
|
||||
!
|
||||
CALL MPI_FILE_OPEN(world_comm, 'sparset', MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunsparset,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN sparset',1 )
|
||||
!
|
||||
! ELECTRONS
|
||||
filint = trim(tmp_dir)//trim(prefix)//'.epmatkqcb1'
|
||||
CALL MPI_FILE_OPEN(world_comm, filint, MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunepmatcb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN X.epmatkqcb1',1 )
|
||||
!
|
||||
CALL MPI_FILE_OPEN(world_comm, 'sparseqcb', MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunsparseqcb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN sparseqcb',1 )
|
||||
!
|
||||
CALL MPI_FILE_OPEN(world_comm, 'sparsekcb', MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunsparsekcb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN sparsek',1 )
|
||||
!
|
||||
CALL MPI_FILE_OPEN(world_comm, 'sparseicb', MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunsparseicb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN sparsei',1 )
|
||||
!
|
||||
CALL MPI_FILE_OPEN(world_comm, 'sparsejcb', MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunsparsejcb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN sparsej',1 )
|
||||
!
|
||||
CALL MPI_FILE_OPEN(world_comm, 'sparsetcb', MPI_MODE_WRONLY + MPI_MODE_CREATE,MPI_INFO_NULL,iunsparsetcb,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'iter_open', 'error in MPI_FILE_OPEN sparset',1 )
|
||||
#endif
|
||||
ind_tot = 0
|
||||
ind_totcb = 0
|
||||
lrepmatw2 = 0
|
||||
lrepmatw4 = 0
|
||||
lrepmatw5 = 0
|
||||
lrepmatw6 = 0
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
END SUBROUTINE iter_open
|
||||
!----------------------------------------------------------------------------
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
SUBROUTINE scattering_write(itemp, etemp, ef0, etf_all)
|
||||
!----------------------------------------------------------------------------
|
||||
|
@ -541,7 +557,7 @@
|
|||
!----------------------------------------------------------------------------
|
||||
|
||||
!----------------------------------------------------------------------------
|
||||
SUBROUTINE electron_write(iq,nqtotf,nktotf,sigmar_all,sigmai_all,zi_all)
|
||||
SUBROUTINE electron_write(iq,totq,nktotf,sigmar_all,sigmai_all,zi_all)
|
||||
!----------------------------------------------------------------------------
|
||||
!
|
||||
USE kinds, ONLY : DP
|
||||
|
@ -561,7 +577,7 @@
|
|||
!
|
||||
INTEGER, INTENT(IN) :: iq
|
||||
!! Current q-point
|
||||
INTEGER, INTENT(IN) :: nqtotf
|
||||
INTEGER, INTENT(IN) :: totq
|
||||
!! Total number of q-points
|
||||
INTEGER, INTENT(IN) :: nktotf
|
||||
!! Total number of k-points
|
||||
|
@ -590,7 +606,7 @@
|
|||
! First element is the current q-point
|
||||
aux(1) = REAL( iq -1, KIND=DP) ! we need to start at the next q
|
||||
! Second element is the total number of q-points
|
||||
aux(2) = REAL( nqtotf, KIND=DP)
|
||||
aux(2) = REAL( totq, KIND=DP)
|
||||
!
|
||||
i = 2
|
||||
!
|
||||
|
@ -634,7 +650,7 @@
|
|||
!----------------------------------------------------------------------------
|
||||
|
||||
!----------------------------------------------------------------------------
|
||||
SUBROUTINE electron_read(iq,nqtotf,nktotf,sigmar_all,sigmai_all,zi_all)
|
||||
SUBROUTINE electron_read(iq,totq,nktotf,sigmar_all,sigmai_all,zi_all)
|
||||
!----------------------------------------------------------------------------
|
||||
!
|
||||
USE kinds, ONLY : DP
|
||||
|
@ -656,7 +672,7 @@
|
|||
!
|
||||
INTEGER, INTENT(INOUT) :: iq
|
||||
!! Current q-point
|
||||
INTEGER, INTENT(IN) :: nqtotf
|
||||
INTEGER, INTENT(IN) :: totq
|
||||
!! Total number of q-points
|
||||
INTEGER, INTENT(IN) :: nktotf
|
||||
!! Total number of k-points
|
||||
|
@ -705,7 +721,7 @@
|
|||
nqtotf_read = INT( aux(2) )
|
||||
!print*, 'iq',iq
|
||||
!print*, 'nqtotf_read ',nqtotf_read
|
||||
IF ( nqtotf_read /= nqtotf) CALL errore('io_scattering',&
|
||||
IF ( nqtotf_read /= totq) CALL errore('io_scattering',&
|
||||
&'Error: The current total number of q-point is not the same as the read one. ',1)
|
||||
!
|
||||
i = 2
|
||||
|
@ -756,7 +772,7 @@
|
|||
zi_all(:,upper_bnd+1:nktotf) = zero
|
||||
ENDIF
|
||||
!
|
||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from: ',(iq-1),'/',nqtotf
|
||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from: ',(iq-1),'/',totq
|
||||
ENDIF
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
|
@ -764,7 +780,7 @@
|
|||
!----------------------------------------------------------------------------
|
||||
|
||||
!----------------------------------------------------------------------------
|
||||
SUBROUTINE tau_write(iq,nqtotf,nktotf,second)
|
||||
SUBROUTINE tau_write(iqq,totq,nktotf,second)
|
||||
!----------------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP
|
||||
USE epwcom, ONLY : nstemp
|
||||
|
@ -779,9 +795,9 @@
|
|||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER, INTENT(IN) :: iq
|
||||
!! Current q-point
|
||||
INTEGER, INTENT(IN) :: nqtotf
|
||||
INTEGER, INTENT(IN) :: iqq
|
||||
!! q-point from the selected ones within the fstick window.
|
||||
INTEGER, INTENT(IN) :: totq
|
||||
!! Total number of q-points
|
||||
INTEGER, INTENT(IN) :: nktotf
|
||||
!! Total number of k-points
|
||||
|
@ -809,8 +825,8 @@
|
|||
!
|
||||
ltau_all = 2 * nstemp * (ibndmax-ibndmin+1) * nktotf +2
|
||||
! First element is the iteration number
|
||||
aux(1) = REAL( iq -1, KIND=DP) ! -1 because we will start at the next one.
|
||||
aux(2) = REAL( nqtotf, KIND=DP)
|
||||
aux(1) = REAL( iqq -1, KIND=DP) ! -1 because we will start at the next one.
|
||||
aux(2) = REAL( totq, KIND=DP)
|
||||
i = 2
|
||||
!
|
||||
DO itemp=1, nstemp
|
||||
|
@ -836,8 +852,8 @@
|
|||
!
|
||||
IF (second) THEN
|
||||
! First element is the iteration number
|
||||
aux(1) = iq -1 ! -1 because we will start at the next one.
|
||||
aux(2) = nqtotf
|
||||
aux(1) = iqq -1 ! -1 because we will start at the next one.
|
||||
aux(2) = totq
|
||||
i = 2
|
||||
!
|
||||
DO itemp=1, nstemp
|
||||
|
@ -884,7 +900,7 @@
|
|||
END SUBROUTINE tau_write
|
||||
!----------------------------------------------------------------------------
|
||||
!----------------------------------------------------------------------------
|
||||
SUBROUTINE tau_read(iq,nqtotf,nktotf,second)
|
||||
SUBROUTINE tau_read(iqq,totq,nktotf,second)
|
||||
!----------------------------------------------------------------------------
|
||||
!
|
||||
USE kinds, ONLY : DP
|
||||
|
@ -904,9 +920,9 @@
|
|||
! Local variable
|
||||
LOGICAL :: exst
|
||||
!
|
||||
INTEGER, INTENT(INOUT) :: iq
|
||||
!! Current q-point
|
||||
INTEGER, INTENT(IN) :: nqtotf
|
||||
INTEGER, INTENT(INOUT) :: iqq
|
||||
!! Current q-point from selecq.fmt
|
||||
INTEGER, INTENT(IN) :: totq
|
||||
!! Total number of q-points
|
||||
INTEGER, INTENT(IN) :: nktotf
|
||||
!! Total number of k-points
|
||||
|
@ -948,12 +964,12 @@
|
|||
CALL davcio ( aux, ltau_all, iufiltau_all, 1, -1 )
|
||||
!
|
||||
! First element is the iteration number
|
||||
iq = INT( aux(1) )
|
||||
iq = iq + 1 ! we need to start at the next q
|
||||
iqq = INT( aux(1) )
|
||||
iqq = iqq + 1 ! we need to start at the next q
|
||||
nqtotf_read = INT( aux(2) )
|
||||
!print*, 'iq',iq
|
||||
!print*, 'nqtotf_read ',nqtotf_read
|
||||
IF ( nqtotf_read /= nqtotf) CALL errore('io_scattering',&
|
||||
IF ( nqtotf_read /= totq) CALL errore('io_scattering',&
|
||||
&'Error: The current total number of q-point is not the same as the read one. ',1)
|
||||
!
|
||||
i = 2
|
||||
|
@ -993,10 +1009,10 @@
|
|||
CALL davcio ( aux, ltau_all, iufiltau_all, 1, -1 )
|
||||
!
|
||||
! First element is the iteration number
|
||||
iq = INT( aux(1) )
|
||||
iq = iq + 1 ! we need to start at the next q
|
||||
iqq = INT( aux(1) )
|
||||
iqq = iqq + 1 ! we need to start at the next q
|
||||
nqtotf_read = INT( aux(2) )
|
||||
IF ( nqtotf_read /= nqtotf) CALL errore('io_scattering',&
|
||||
IF ( nqtotf_read /= totq) CALL errore('io_scattering',&
|
||||
&'Error: The current total number of q-point is not the same as the read one. ',1)
|
||||
!
|
||||
i = 2
|
||||
|
@ -1018,7 +1034,7 @@
|
|||
ENDDO
|
||||
ENDDO
|
||||
CLOSE(iufiltau_all)
|
||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from tau_CB: ',iq,'/',nqtotf
|
||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from tau_CB: ',iqq,'/',totq
|
||||
ENDIF
|
||||
!
|
||||
ENDIF ! second
|
||||
|
@ -1028,7 +1044,7 @@
|
|||
CALL mp_bcast (exst, meta_ionode_id, world_comm)
|
||||
!
|
||||
IF (exst) THEN
|
||||
CALL mp_bcast (iq, meta_ionode_id, world_comm)
|
||||
CALL mp_bcast (iqq, meta_ionode_id, world_comm)
|
||||
CALL mp_bcast (inv_tau_all, meta_ionode_id, world_comm)
|
||||
CALL mp_bcast (zi_allvb, meta_ionode_id, world_comm)
|
||||
IF (second) CALL mp_bcast (inv_tau_allcb, meta_ionode_id, world_comm)
|
||||
|
@ -1048,7 +1064,7 @@
|
|||
IF (upper_bnd < nktotf ) zi_allcb(:,:,upper_bnd+1:nktotf) = zero
|
||||
ENDIF
|
||||
!
|
||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from tau: ',iq,'/',nqtotf
|
||||
WRITE(stdout, '(a,i10,a,i10)' ) ' Restart from tau: ',iqq,'/',totq
|
||||
ENDIF
|
||||
!
|
||||
!----------------------------------------------------------------------------
|
||||
|
|
|
@ -1,177 +0,0 @@
|
|||
!
|
||||
! Copyright (C) 2010-2016 Samuel Ponce', Roxana Margine, Carla Verdi, Feliciano Giustino
|
||||
! Copyright (C) 2007-2009 Jesse Noffsinger, Brad Malone, Feliciano Giustino
|
||||
!
|
||||
! This file is distributed under the terms of the GNU General Public
|
||||
! License. See the file `LICENSE' in the root directory of the
|
||||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
!---------------------------------------------------------------------
|
||||
subroutine kpointdivision ( ik0 )
|
||||
!---------------------------------------------------------------------
|
||||
!!
|
||||
!! This is just to find the first kpoint block in the pool
|
||||
!!
|
||||
!---------------------------------------------------------------------
|
||||
!
|
||||
USE mp_global, ONLY : my_pool_id,npool
|
||||
use pwcom, ONLY : nkstot
|
||||
!
|
||||
implicit none
|
||||
integer :: ik0
|
||||
integer :: nkl, nkr, iks
|
||||
!
|
||||
#if defined(__MPI)
|
||||
!
|
||||
! number of kpoint blocks, kpoints per pool and reminder
|
||||
!
|
||||
nkl = 1 * ( nkstot / npool )
|
||||
nkr = ( nkstot - nkl * npool ) / 1
|
||||
!
|
||||
! the reminder goes to the first nkr pools
|
||||
! (0...nkr-1)
|
||||
!
|
||||
IF ( my_pool_id < nkr ) nkl = nkl + 1 !kunit
|
||||
!
|
||||
! the index of the first k point in this pool
|
||||
!
|
||||
iks = nkl * my_pool_id + 1
|
||||
IF ( my_pool_id >= nkr ) iks = iks + nkr * 1 !kunit
|
||||
!
|
||||
! the index of the first k point block in this pool - 1
|
||||
! (I will need the index of ik, not ikk)
|
||||
!
|
||||
ik0 = ( iks - 1 )
|
||||
!
|
||||
#else
|
||||
ik0 = 0
|
||||
#endif
|
||||
!
|
||||
end subroutine kpointdivision
|
||||
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE fkbounds( nktot, lower_bnd, upper_bnd )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! Subroutine finds the lower and upper bounds a k-grid in parallel
|
||||
!!
|
||||
!! @ Note:
|
||||
!! If you have 19 kpts and 2 pool, this routine will return
|
||||
!! lower_bnd= 1 and upper_bnd=10 for the first pool
|
||||
!! lower_bnd= 1 and upper_bnd=9 for the second pool
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
USE mp_global, ONLY: my_pool_id, npool
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER, INTENT (in) :: nktot
|
||||
!! nktot k-points splited over pools
|
||||
INTEGER, INTENT (out) :: lower_bnd
|
||||
!! Lower kpt bounds for that image pool
|
||||
INTEGER, INTENT (out) :: upper_bnd
|
||||
!! Upper kpt for that image pool
|
||||
!
|
||||
#if defined(__MPI)
|
||||
!
|
||||
INTEGER :: nkl, nkr
|
||||
!
|
||||
! find the bounds of k-dependent arrays in the parallel case
|
||||
! number of kpoint blocks, kpoints per pool and reminder
|
||||
!
|
||||
nkl = nktot / npool
|
||||
nkr = nktot - nkl * npool
|
||||
!
|
||||
! the reminder goes to the first nkr pools (0...nkr-1)
|
||||
!
|
||||
IF (my_pool_id < nkr ) nkl = nkl + 1
|
||||
!
|
||||
! the index of the first k point in this pool
|
||||
!
|
||||
lower_bnd = my_pool_id * nkl + 1
|
||||
IF ( my_pool_id >= nkr ) lower_bnd = my_pool_id * nkl + 1 + nkr
|
||||
!
|
||||
! the index of the last k point in this pool
|
||||
!
|
||||
upper_bnd = lower_bnd + nkl - 1
|
||||
!
|
||||
#else
|
||||
!
|
||||
! In serial the definitions are much easier
|
||||
!
|
||||
lower_bnd = 1
|
||||
upper_bnd = nktot
|
||||
!
|
||||
#endif
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
END SUBROUTINE fkbounds
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE fkbounds_bnd( nbnd, lower_bnd, upper_bnd )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! Subroutine finds the lower and upper bounds in band parallelization
|
||||
!!
|
||||
!! @ Note:
|
||||
!! If you have 20 bands and 2 images, this routine will return
|
||||
!! lower_bnd= 1 and upper_bnd=10 for the first pool
|
||||
!! lower_bnd= 11 and upper_bnd=19 for the second pool
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
USE mp_images, ONLY: nimage, my_image_id
|
||||
! number of images, number of processor within an image, index of the proc within an image
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
INTEGER, INTENT (in) :: nbnd
|
||||
!! Total number of band to be splitted among images
|
||||
INTEGER, INTENT (out) :: lower_bnd
|
||||
!! Lower band bounds for that image pool
|
||||
INTEGER, INTENT (out) :: upper_bnd
|
||||
!! Upper band bound for that image pool
|
||||
!
|
||||
#if defined(__MPI)
|
||||
!
|
||||
INTEGER :: nkl, nkr
|
||||
!
|
||||
! find the bounds of k-dependent arrays in the parallel case
|
||||
! number of kpoint blocks, kpoints per pool and reminder
|
||||
!
|
||||
nkl = nbnd / nimage
|
||||
nkr = nbnd - nkl * nimage
|
||||
!
|
||||
! the reminder goes to the first nkr pools (0...nkr-1)
|
||||
!
|
||||
IF (my_image_id < nkr ) nkl = nkl + 1
|
||||
!
|
||||
! the index of the first k point in this pool
|
||||
!
|
||||
lower_bnd = my_image_id * nkl + 1
|
||||
IF ( my_image_id >= nkr ) lower_bnd = my_image_id * nkl + 1 + nkr
|
||||
!
|
||||
! the index of the last k point in this pool
|
||||
!
|
||||
upper_bnd = lower_bnd + nkl - 1
|
||||
!
|
||||
#else
|
||||
!
|
||||
! In serial the definitions are much easier
|
||||
!
|
||||
lower_bnd = 1
|
||||
upper_bnd = nbnd
|
||||
!
|
||||
#endif
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
END SUBROUTINE fkbounds_bnd
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,179 +1,713 @@
|
|||
a2f.o : ../../Modules/cell_base.o
|
||||
a2f.o : ../../Modules/io_files.o
|
||||
a2f.o : ../../Modules/io_global.o
|
||||
a2f.o : ../../Modules/kind.o
|
||||
a2f.o : ../../Modules/mp_world.o
|
||||
a2f.o : ../../PHonon/PH/phcom.o
|
||||
a2f.o : ../../UtilXlib/mp.o
|
||||
a2f.o : constants_epw.o
|
||||
a2f.o : elph2.o
|
||||
a2f.o : epwcom.o
|
||||
a2f.o : io_epw.o
|
||||
allocate_epwq.o : ../../LR_Modules/lrcom.o
|
||||
allocate_epwq.o : ../../Modules/becmod.o
|
||||
allocate_epwq.o : ../../Modules/fft_base.o
|
||||
allocate_epwq.o : ../../Modules/ions_base.o
|
||||
allocate_epwq.o : ../../Modules/noncol.o
|
||||
allocate_epwq.o : ../../Modules/recvec.o
|
||||
allocate_epwq.o : ../../Modules/uspp.o
|
||||
allocate_epwq.o : ../../PHonon/PH/phcom.o
|
||||
allocate_epwq.o : ../../PW/src/pwcom.o
|
||||
allocate_epwq.o : elph2.o
|
||||
allocate_epwq.o : epwcom.o
|
||||
allocate_epwq.o : transportcom.o
|
||||
bcast_epw_input.o : ../../LR_Modules/lrcom.o
|
||||
bcast_epw_input.o : ../../Modules/control_flags.o
|
||||
bcast_epw_input.o : ../../Modules/io_files.o
|
||||
bcast_epw_input.o : ../../Modules/io_global.o
|
||||
bcast_epw_input.o : ../../Modules/ions_base.o
|
||||
bcast_epw_input.o : ../../Modules/mp_world.o
|
||||
bcast_epw_input.o : ../../PHonon/PH/phcom.o
|
||||
bcast_epw_input.o : ../../UtilXlib/mp.o
|
||||
bcast_epw_input.o : elph2.o
|
||||
bcast_epw_input.o : epwcom.o
|
||||
bloch2wan.o : ../../Modules/cell_base.o
|
||||
bloch2wan.o : ../../Modules/io_files.o
|
||||
bloch2wan.o : ../../Modules/io_global.o
|
||||
bloch2wan.o : ../../Modules/ions_base.o
|
||||
bloch2wan.o : ../../Modules/kind.o
|
||||
bloch2wan.o : ../../Modules/mp_global.o
|
||||
bloch2wan.o : ../../Modules/mp_world.o
|
||||
bloch2wan.o : ../../PHonon/PH/phcom.o
|
||||
bloch2wan.o : ../../UtilXlib/mp.o
|
||||
bloch2wan.o : constants_epw.o
|
||||
bloch2wan.o : elph2.o
|
||||
bloch2wan.o : epwcom.o
|
||||
bloch2wan.o : io_epw.o
|
||||
broyden.o : ../../Modules/kind.o
|
||||
broyden.o : eliashbergcom.o
|
||||
broyden.o : epwcom.o
|
||||
close_epw.o : ../../LR_Modules/lrcom.o
|
||||
close_epw.o : ../../Modules/becmod.o
|
||||
close_epw.o : ../../Modules/io_files.o
|
||||
close_epw.o : ../../Modules/kind.o
|
||||
close_epw.o : ../../Modules/mp_global.o
|
||||
close_epw.o : ../../Modules/noncol.o
|
||||
close_epw.o : ../../PHonon/PH/phcom.o
|
||||
close_epw.o : ../../PW/src/pwcom.o
|
||||
close_epw.o : ../../UtilXlib/parallel_include.o
|
||||
close_epw.o : elph2.o
|
||||
close_epw.o : epwcom.o
|
||||
close_epw.o : io_epw.o
|
||||
close_epw.o : transportcom.o
|
||||
constants_epw.o : ../../Modules/kind.o
|
||||
createkmap.o : ../../Modules/cell_base.o
|
||||
createkmap.o : ../../Modules/constants.o
|
||||
createkmap.o : ../../Modules/control_flags.o
|
||||
createkmap.o : ../../Modules/fft_base.o
|
||||
createkmap.o : ../../Modules/io_files.o
|
||||
createkmap.o : ../../Modules/io_global.o
|
||||
createkmap.o : ../../Modules/kind.o
|
||||
createkmap.o : ../../Modules/mp_global.o
|
||||
createkmap.o : ../../Modules/mp_world.o
|
||||
createkmap.o : ../../Modules/recvec.o
|
||||
createkmap.o : ../../PW/src/pwcom.o
|
||||
createkmap.o : ../../PW/src/start_k.o
|
||||
createkmap.o : ../../UtilXlib/mp.o
|
||||
createkmap.o : elph2.o
|
||||
createkmap.o : epwcom.o
|
||||
createkmap.o : kfold.o
|
||||
deallocate_epw.o : elph2.o
|
||||
deallocate_epw.o : epwcom.o
|
||||
division.o : ../../Modules/mp_global.o
|
||||
division.o : ../../Modules/mp_images.o
|
||||
division.o : ../../PW/src/pwcom.o
|
||||
division.o : ../../UtilXlib/parallel_include.o
|
||||
dvanqq2.o : ../../FFTXlib/fft_interfaces.o
|
||||
dvanqq2.o : ../../LR_Modules/lrcom.o
|
||||
dvanqq2.o : ../../Modules/cell_base.o
|
||||
dvanqq2.o : ../../Modules/fft_base.o
|
||||
dvanqq2.o : ../../Modules/ions_base.o
|
||||
dvanqq2.o : ../../Modules/kind.o
|
||||
dvanqq2.o : ../../Modules/mp_global.o
|
||||
dvanqq2.o : ../../Modules/noncol.o
|
||||
dvanqq2.o : ../../Modules/recvec.o
|
||||
dvanqq2.o : ../../Modules/uspp.o
|
||||
dvanqq2.o : ../../PHonon/PH/phcom.o
|
||||
dvanqq2.o : ../../PW/src/pwcom.o
|
||||
dvanqq2.o : ../../PW/src/scf_mod.o
|
||||
dvanqq2.o : ../../UtilXlib/mp.o
|
||||
dvqpsi_us3.o : ../../FFTXlib/fft_interfaces.o
|
||||
dvqpsi_us3.o : ../../LR_Modules/lrcom.o
|
||||
dvqpsi_us3.o : ../../Modules/cell_base.o
|
||||
dvqpsi_us3.o : ../../Modules/fft_base.o
|
||||
dvqpsi_us3.o : ../../Modules/ions_base.o
|
||||
dvqpsi_us3.o : ../../Modules/kind.o
|
||||
dvqpsi_us3.o : ../../Modules/noncol.o
|
||||
dvqpsi_us3.o : ../../Modules/recvec.o
|
||||
dvqpsi_us3.o : ../../Modules/uspp.o
|
||||
dvqpsi_us3.o : ../../Modules/wavefunctions.o
|
||||
dvqpsi_us3.o : ../../PHonon/PH/phcom.o
|
||||
dvqpsi_us3.o : ../../PW/src/pwcom.o
|
||||
dvqpsi_us3.o : elph2.o
|
||||
dvqpsi_us_only3.o : ../../LR_Modules/lrcom.o
|
||||
dvqpsi_us_only3.o : ../../Modules/cell_base.o
|
||||
dvqpsi_us_only3.o : ../../Modules/ions_base.o
|
||||
dvqpsi_us_only3.o : ../../Modules/kind.o
|
||||
dvqpsi_us_only3.o : ../../Modules/noncol.o
|
||||
dvqpsi_us_only3.o : ../../Modules/recvec.o
|
||||
dvqpsi_us_only3.o : ../../Modules/uspp.o
|
||||
dvqpsi_us_only3.o : ../../PHonon/PH/phcom.o
|
||||
dvqpsi_us_only3.o : ../../PW/src/pwcom.o
|
||||
dvqpsi_us_only3.o : elph2.o
|
||||
eliashberg.o : ../../Modules/io_global.o
|
||||
eliashberg.o : eliashbergcom.o
|
||||
eliashberg.o : epwcom.o
|
||||
eliashberg.o : io_eliashberg.o
|
||||
eliashberg.o : superconductivity.o
|
||||
eliashberg.o : superconductivity_aniso.o
|
||||
eliashberg.o : superconductivity_iso.o
|
||||
eliashbergcom.o : ../../Modules/kind.o
|
||||
elph2.o : ../../Modules/kind.o
|
||||
elphel2_shuffle.o : ../../LR_Modules/lrcom.o
|
||||
elphel2_shuffle.o : ../../Modules/becmod.o
|
||||
elphel2_shuffle.o : ../../Modules/cell_base.o
|
||||
elphel2_shuffle.o : ../../Modules/control_flags.o
|
||||
elphel2_shuffle.o : ../../Modules/fft_base.o
|
||||
elphel2_shuffle.o : ../../Modules/io_files.o
|
||||
elphel2_shuffle.o : ../../Modules/io_global.o
|
||||
elphel2_shuffle.o : ../../Modules/kind.o
|
||||
elphel2_shuffle.o : ../../Modules/mp_global.o
|
||||
elphel2_shuffle.o : ../../Modules/noncol.o
|
||||
elphel2_shuffle.o : ../../Modules/recvec.o
|
||||
elphel2_shuffle.o : ../../Modules/uspp.o
|
||||
elphel2_shuffle.o : ../../Modules/wavefunctions.o
|
||||
elphel2_shuffle.o : ../../PHonon/PH/phcom.o
|
||||
elphel2_shuffle.o : ../../PW/src/pwcom.o
|
||||
elphel2_shuffle.o : ../../PW/src/symm_base.o
|
||||
elphel2_shuffle.o : ../../UtilXlib/mp.o
|
||||
elphel2_shuffle.o : constants_epw.o
|
||||
elphel2_shuffle.o : division.o
|
||||
elphel2_shuffle.o : elph2.o
|
||||
elphon_shuffle.o : ../../FFTXlib/fft_interfaces.o
|
||||
elphon_shuffle.o : ../../Modules/fft_base.o
|
||||
elphon_shuffle.o : ../../Modules/kind.o
|
||||
elphon_shuffle.o : ../../Modules/mp_global.o
|
||||
elphon_shuffle.o : ../../Modules/mp_images.o
|
||||
elphon_shuffle.o : ../../Modules/noncol.o
|
||||
elphon_shuffle.o : ../../Modules/recvec.o
|
||||
elphon_shuffle.o : ../../PHonon/PH/phcom.o
|
||||
elphon_shuffle.o : ../../PW/src/pwcom.o
|
||||
elphon_shuffle.o : ../../UtilXlib/mp.o
|
||||
elphon_shuffle.o : constants_epw.o
|
||||
elphon_shuffle.o : elph2.o
|
||||
elphon_shuffle_wrap.o : ../../LR_Modules/lrcom.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/cell_base.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/control_flags.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/fft_base.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/io_files.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/io_global.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/ions_base.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/kind.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/mp_global.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/mp_images.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/mp_world.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/noncol.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/recvec.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/uspp.o
|
||||
elphon_shuffle_wrap.o : ../../Modules/wavefunctions.o
|
||||
elphon_shuffle_wrap.o : ../../PHonon/PH/phcom.o
|
||||
elphon_shuffle_wrap.o : ../../PW/src/pwcom.o
|
||||
elphon_shuffle_wrap.o : ../../PW/src/start_k.o
|
||||
elphon_shuffle_wrap.o : ../../PW/src/symm_base.o
|
||||
elphon_shuffle_wrap.o : ../../UtilXlib/mp.o
|
||||
elphon_shuffle_wrap.o : ../../iotk/src/iotk_module.o
|
||||
elphon_shuffle_wrap.o : constants_epw.o
|
||||
elphon_shuffle_wrap.o : elph2.o
|
||||
elphon_shuffle_wrap.o : epwcom.o
|
||||
elphon_shuffle_wrap.o : io_epw.o
|
||||
ephwann_shuffle.o : ../../Modules/cell_base.o
|
||||
ephwann_shuffle.o : ../../Modules/constants.o
|
||||
ephwann_shuffle.o : ../../Modules/io_files.o
|
||||
ephwann_shuffle.o : ../../Modules/io_global.o
|
||||
ephwann_shuffle.o : ../../Modules/ions_base.o
|
||||
ephwann_shuffle.o : ../../Modules/kind.o
|
||||
ephwann_shuffle.o : ../../Modules/mp_global.o
|
||||
ephwann_shuffle.o : ../../Modules/mp_world.o
|
||||
ephwann_shuffle.o : ../../Modules/noncol.o
|
||||
ephwann_shuffle.o : ../../PHonon/PH/phcom.o
|
||||
ephwann_shuffle.o : ../../PW/src/pwcom.o
|
||||
ephwann_shuffle.o : ../../PW/src/start_k.o
|
||||
ephwann_shuffle.o : ../../UtilXlib/mp.o
|
||||
ephwann_shuffle.o : ../../UtilXlib/parallel_include.o
|
||||
ephwann_shuffle.o : bloch2wan.o
|
||||
ephwann_shuffle.o : close_epw.o
|
||||
ephwann_shuffle.o : constants_epw.o
|
||||
ephwann_shuffle.o : division.o
|
||||
ephwann_shuffle.o : elph2.o
|
||||
ephwann_shuffle.o : epwcom.o
|
||||
ephwann_shuffle.o : io_eliashberg.o
|
||||
ephwann_shuffle.o : io_epw.o
|
||||
ephwann_shuffle.o : io_scattering.o
|
||||
ephwann_shuffle.o : printing.o
|
||||
ephwann_shuffle.o : transport.o
|
||||
ephwann_shuffle.o : transport_iter.o
|
||||
ephwann_shuffle.o : transportcom.o
|
||||
ephwann_shuffle.o : wan2bloch.o
|
||||
ephwann_shuffle.o : wigner.o
|
||||
ephwann_shuffle_mem.o : ../../Modules/cell_base.o
|
||||
ephwann_shuffle_mem.o : ../../Modules/io_files.o
|
||||
ephwann_shuffle_mem.o : ../../Modules/io_global.o
|
||||
ephwann_shuffle_mem.o : ../../Modules/ions_base.o
|
||||
ephwann_shuffle_mem.o : ../../Modules/kind.o
|
||||
ephwann_shuffle_mem.o : ../../Modules/mp_global.o
|
||||
ephwann_shuffle_mem.o : ../../Modules/mp_world.o
|
||||
ephwann_shuffle_mem.o : ../../Modules/noncol.o
|
||||
ephwann_shuffle_mem.o : ../../PHonon/PH/phcom.o
|
||||
ephwann_shuffle_mem.o : ../../PW/src/pwcom.o
|
||||
ephwann_shuffle_mem.o : ../../PW/src/start_k.o
|
||||
ephwann_shuffle_mem.o : ../../UtilXlib/mp.o
|
||||
ephwann_shuffle_mem.o : ../../UtilXlib/parallel_include.o
|
||||
ephwann_shuffle_mem.o : bloch2wan.o
|
||||
ephwann_shuffle_mem.o : close_epw.o
|
||||
ephwann_shuffle_mem.o : constants_epw.o
|
||||
ephwann_shuffle_mem.o : division.o
|
||||
ephwann_shuffle_mem.o : elph2.o
|
||||
ephwann_shuffle_mem.o : epwcom.o
|
||||
ephwann_shuffle_mem.o : io_eliashberg.o
|
||||
ephwann_shuffle_mem.o : io_epw.o
|
||||
ephwann_shuffle_mem.o : io_scattering.o
|
||||
ephwann_shuffle_mem.o : printing.o
|
||||
ephwann_shuffle_mem.o : transport.o
|
||||
ephwann_shuffle_mem.o : transport_iter.o
|
||||
ephwann_shuffle_mem.o : transportcom.o
|
||||
ephwann_shuffle_mem.o : wan2bloch.o
|
||||
ephwann_shuffle_mem.o : wigner.o
|
||||
epw.o : ../../Modules/control_flags.o
|
||||
epw.o : ../../Modules/environment.o
|
||||
epw.o : ../../Modules/io_global.o
|
||||
epw.o : ../../Modules/mp_global.o
|
||||
epw.o : ../../Modules/mp_world.o
|
||||
epw.o : ../../Modules/version.o
|
||||
epw.o : ../../UtilXlib/mp.o
|
||||
epw.o : close_epw.o
|
||||
epw.o : elph2.o
|
||||
epw.o : epwcom.o
|
||||
epw_init.o : ../../LR_Modules/lrcom.o
|
||||
epw_init.o : ../../Modules/atom.o
|
||||
epw_init.o : ../../Modules/becmod.o
|
||||
epw_init.o : ../../Modules/cell_base.o
|
||||
epw_init.o : ../../Modules/constants.o
|
||||
epw_init.o : ../../Modules/fft_base.o
|
||||
epw_init.o : ../../Modules/gvecw.o
|
||||
epw_init.o : ../../Modules/ions_base.o
|
||||
epw_init.o : ../../Modules/kind.o
|
||||
epw_init.o : ../../Modules/mp_global.o
|
||||
epw_init.o : ../../Modules/noncol.o
|
||||
epw_init.o : ../../Modules/recvec.o
|
||||
epw_init.o : ../../Modules/uspp.o
|
||||
epw_init.o : ../../Modules/wavefunctions.o
|
||||
epw_init.o : ../../PHonon/PH/phcom.o
|
||||
epw_init.o : ../../PW/src/pwcom.o
|
||||
epw_init.o : ../../UtilXlib/mp.o
|
||||
epw_init.o : elph2.o
|
||||
epw_readin.o : ../../LR_Modules/lrcom.o
|
||||
epw_readin.o : ../../Modules/check_stop.o
|
||||
epw_readin.o : ../../Modules/constants.o
|
||||
epw_readin.o : ../../Modules/control_flags.o
|
||||
epw_readin.o : ../../Modules/io_files.o
|
||||
epw_readin.o : ../../Modules/io_global.o
|
||||
epw_readin.o : ../../Modules/ions_base.o
|
||||
epw_readin.o : ../../Modules/mp_global.o
|
||||
epw_readin.o : ../../Modules/mp_world.o
|
||||
epw_readin.o : ../../PHonon/PH/phcom.o
|
||||
epw_readin.o : ../../PW/src/pwcom.o
|
||||
epw_readin.o : ../../PW/src/start_k.o
|
||||
epw_readin.o : ../../UtilXlib/mp.o
|
||||
epw_readin.o : constants_epw.o
|
||||
epw_readin.o : elph2.o
|
||||
epw_readin.o : epwcom.o
|
||||
epw_setup.o : ../../LR_Modules/lrcom.o
|
||||
epw_setup.o : ../../Modules/cell_base.o
|
||||
epw_setup.o : ../../Modules/constants.o
|
||||
epw_setup.o : ../../Modules/control_flags.o
|
||||
epw_setup.o : ../../Modules/fft_base.o
|
||||
epw_setup.o : ../../Modules/funct.o
|
||||
epw_setup.o : ../../Modules/io_files.o
|
||||
epw_setup.o : ../../Modules/io_global.o
|
||||
epw_setup.o : ../../Modules/ions_base.o
|
||||
epw_setup.o : ../../Modules/kind.o
|
||||
epw_setup.o : ../../Modules/mp_global.o
|
||||
epw_setup.o : ../../Modules/mp_pools.o
|
||||
epw_setup.o : ../../Modules/noncol.o
|
||||
epw_setup.o : ../../Modules/recvec.o
|
||||
epw_setup.o : ../../Modules/uspp.o
|
||||
epw_setup.o : ../../PHonon/PH/phcom.o
|
||||
epw_setup.o : ../../PW/src/pwcom.o
|
||||
epw_setup.o : ../../PW/src/scf_mod.o
|
||||
epw_setup.o : ../../PW/src/start_k.o
|
||||
epw_setup.o : ../../PW/src/symm_base.o
|
||||
epw_setup.o : ../../UtilXlib/mp.o
|
||||
epw_setup.o : constants_epw.o
|
||||
epw_setup.o : epwcom.o
|
||||
epw_setup.o : transportcom.o
|
||||
epw_summary.o : ../../LR_Modules/lrcom.o
|
||||
epw_summary.o : ../../Modules/cell_base.o
|
||||
epw_summary.o : ../../Modules/control_flags.o
|
||||
epw_summary.o : ../../Modules/fft_base.o
|
||||
epw_summary.o : ../../Modules/funct.o
|
||||
epw_summary.o : ../../Modules/gvecw.o
|
||||
epw_summary.o : ../../Modules/io_global.o
|
||||
epw_summary.o : ../../Modules/ions_base.o
|
||||
epw_summary.o : ../../Modules/noncol.o
|
||||
epw_summary.o : ../../Modules/recvec.o
|
||||
epw_summary.o : ../../PHonon/PH/phcom.o
|
||||
epw_summary.o : ../../PW/src/pwcom.o
|
||||
epw_summary.o : ../../PW/src/symm_base.o
|
||||
epw_summary.o : epwcom.o
|
||||
epwcom.o : ../../Modules/kind.o
|
||||
epwcom.o : ../../Modules/parameters.o
|
||||
fermiwindow.o : ../../Modules/io_global.o
|
||||
fermiwindow.o : ../../Modules/kind.o
|
||||
fermiwindow.o : ../../Modules/mp_global.o
|
||||
fermiwindow.o : ../../PW/src/pwcom.o
|
||||
fermiwindow.o : ../../UtilXlib/mp.o
|
||||
fermiwindow.o : elph2.o
|
||||
fermiwindow.o : epwcom.o
|
||||
gmap_sym.o : ../../Modules/fft_base.o
|
||||
gmap_sym.o : ../../Modules/kind.o
|
||||
gmap_sym.o : ../../Modules/recvec.o
|
||||
gmap_sym.o : constants_epw.o
|
||||
indabs.o : ../../Modules/cell_base.o
|
||||
indabs.o : ../../Modules/io_global.o
|
||||
indabs.o : ../../Modules/kind.o
|
||||
indabs.o : ../../Modules/mp_global.o
|
||||
indabs.o : ../../PHonon/PH/phcom.o
|
||||
indabs.o : ../../UtilXlib/mp.o
|
||||
indabs.o : constants_epw.o
|
||||
indabs.o : elph2.o
|
||||
indabs.o : epwcom.o
|
||||
indabs.o : io_epw.o
|
||||
indabs.o : transportcom.o
|
||||
io_dyn_mat2.o : ../../Modules/io_global.o
|
||||
io_dyn_mat2.o : ../../Modules/kind.o
|
||||
io_dyn_mat2.o : ../../Modules/mp_images.o
|
||||
io_dyn_mat2.o : ../../iotk/src/iotk_module.o
|
||||
io_eliashberg.o : ../../Modules/cell_base.o
|
||||
io_eliashberg.o : ../../Modules/control_flags.o
|
||||
io_eliashberg.o : ../../Modules/io_files.o
|
||||
io_eliashberg.o : ../../Modules/io_global.o
|
||||
io_eliashberg.o : ../../Modules/kind.o
|
||||
io_eliashberg.o : ../../Modules/mp_global.o
|
||||
io_eliashberg.o : ../../Modules/mp_world.o
|
||||
io_eliashberg.o : ../../PHonon/PH/phcom.o
|
||||
io_eliashberg.o : ../../PW/src/pwcom.o
|
||||
io_eliashberg.o : ../../PW/src/symm_base.o
|
||||
io_eliashberg.o : ../../UtilXlib/mp.o
|
||||
io_eliashberg.o : constants_epw.o
|
||||
io_eliashberg.o : division.o
|
||||
io_eliashberg.o : eliashbergcom.o
|
||||
io_eliashberg.o : elph2.o
|
||||
io_eliashberg.o : epwcom.o
|
||||
io_eliashberg.o : io_epw.o
|
||||
io_eliashberg.o : superconductivity.o
|
||||
io_scattering.o : ../../Modules/io_files.o
|
||||
io_scattering.o : ../../Modules/io_global.o
|
||||
io_scattering.o : ../../Modules/kind.o
|
||||
io_scattering.o : ../../Modules/mp_global.o
|
||||
io_scattering.o : ../../Modules/mp_world.o
|
||||
io_scattering.o : ../../UtilXlib/mp.o
|
||||
io_scattering.o : ../../UtilXlib/parallel_include.o
|
||||
io_scattering.o : constants_epw.o
|
||||
io_scattering.o : elph2.o
|
||||
io_scattering.o : epwcom.o
|
||||
io_scattering.o : io_epw.o
|
||||
io_scattering.o : transportcom.o
|
||||
kfold.o : ../../Modules/kind.o
|
||||
kpoint_grid_epw.o : ../../Modules/kind.o
|
||||
ktokpmq.o : ../../Modules/cell_base.o
|
||||
ktokpmq.o : ../../Modules/kind.o
|
||||
ktokpmq.o : ../../Modules/mp_global.o
|
||||
ktokpmq.o : ../../Modules/mp_images.o
|
||||
ktokpmq.o : ../../PW/src/pwcom.o
|
||||
ktokpmq.o : ../../PW/src/start_k.o
|
||||
ktokpmq.o : ../../UtilXlib/mp.o
|
||||
ktokpmq.o : elph2.o
|
||||
ktokpmq.o : epwcom.o
|
||||
load_rebal.o : ../../Modules/io_global.o
|
||||
load_rebal.o : ../../Modules/kind.o
|
||||
load_rebal.o : ../../Modules/mp_global.o
|
||||
load_rebal.o : ../../PW/src/pwcom.o
|
||||
load_rebal.o : constants_epw.o
|
||||
load_rebal.o : elph2.o
|
||||
load_rebal.o : epwcom.o
|
||||
load_rebal.o : transportcom.o
|
||||
loadkmesh.o : ../../Modules/cell_base.o
|
||||
loadkmesh.o : ../../Modules/io_global.o
|
||||
loadkmesh.o : ../../Modules/kind.o
|
||||
loadkmesh.o : ../../Modules/mp_global.o
|
||||
loadkmesh.o : ../../Modules/mp_world.o
|
||||
loadkmesh.o : ../../Modules/noncol.o
|
||||
loadkmesh.o : ../../PW/src/symm_base.o
|
||||
loadkmesh.o : ../../UtilXlib/mp.o
|
||||
loadkmesh.o : elph2.o
|
||||
loadkmesh.o : epwcom.o
|
||||
loadkmesh.o : io_epw.o
|
||||
loadqmesh.o : ../../Modules/cell_base.o
|
||||
loadqmesh.o : ../../Modules/io_global.o
|
||||
loadqmesh.o : ../../Modules/kind.o
|
||||
loadqmesh.o : ../../Modules/mp_global.o
|
||||
loadqmesh.o : ../../Modules/mp_world.o
|
||||
loadqmesh.o : ../../Modules/noncol.o
|
||||
loadqmesh.o : ../../PW/src/symm_base.o
|
||||
loadqmesh.o : ../../UtilXlib/mp.o
|
||||
loadqmesh.o : elph2.o
|
||||
loadqmesh.o : epwcom.o
|
||||
loadqmesh.o : io_epw.o
|
||||
loadumat.o : ../../Modules/io_global.o
|
||||
loadumat.o : ../../Modules/kind.o
|
||||
loadumat.o : ../../Modules/mp_global.o
|
||||
loadumat.o : ../../UtilXlib/mp.o
|
||||
loadumat.o : constants_epw.o
|
||||
loadumat.o : epwcom.o
|
||||
loadumat.o : io_epw.o
|
||||
nesting_fn.o : ../../Modules/io_global.o
|
||||
nesting_fn.o : ../../Modules/kind.o
|
||||
nesting_fn.o : ../../Modules/mp_global.o
|
||||
nesting_fn.o : ../../Modules/mp_world.o
|
||||
nesting_fn.o : ../../PW/src/pwcom.o
|
||||
nesting_fn.o : ../../UtilXlib/mp.o
|
||||
nesting_fn.o : constants_epw.o
|
||||
nesting_fn.o : division.o
|
||||
nesting_fn.o : elph2.o
|
||||
nesting_fn.o : epwcom.o
|
||||
openfilepw.o : ../../LR_Modules/lrcom.o
|
||||
openfilepw.o : ../../Modules/fft_base.o
|
||||
openfilepw.o : ../../Modules/io_files.o
|
||||
openfilepw.o : ../../Modules/noncol.o
|
||||
openfilepw.o : ../../PHonon/PH/phcom.o
|
||||
openfilepw.o : ../../PW/src/pwcom.o
|
||||
plot_band.o : ../../Modules/cell_base.o
|
||||
plot_band.o : ../../Modules/io_global.o
|
||||
plot_band.o : ../../Modules/kind.o
|
||||
plot_band.o : ../../Modules/mp_global.o
|
||||
plot_band.o : ../../PHonon/PH/phcom.o
|
||||
plot_band.o : ../../UtilXlib/mp.o
|
||||
plot_band.o : constants_epw.o
|
||||
plot_band.o : elph2.o
|
||||
plot_band.o : epwcom.o
|
||||
plot_band.o : io_epw.o
|
||||
print_gkk.o : constants_epw.o
|
||||
print_gkk.o : elph2.o
|
||||
print_gkk.o : epwcom.o
|
||||
poolgather.o : ../../Modules/kind.o
|
||||
poolgather.o : ../../Modules/mp_global.o
|
||||
poolgather.o : ../../UtilXlib/mp.o
|
||||
print_ibte.o : ../../Modules/cell_base.o
|
||||
print_ibte.o : ../../Modules/io_files.o
|
||||
print_ibte.o : ../../Modules/io_global.o
|
||||
print_ibte.o : ../../Modules/kind.o
|
||||
print_ibte.o : ../../Modules/mp_global.o
|
||||
print_ibte.o : ../../PHonon/PH/phcom.o
|
||||
print_ibte.o : ../../PW/src/pwcom.o
|
||||
print_ibte.o : ../../UtilXlib/mp.o
|
||||
print_ibte.o : ../../UtilXlib/parallel_include.o
|
||||
print_ibte.o : constants_epw.o
|
||||
print_ibte.o : elph2.o
|
||||
print_ibte.o : epwcom.o
|
||||
print_ibte.o : io_epw.o
|
||||
print_ibte.o : transportcom.o
|
||||
printing.o : ../../Modules/cell_base.o
|
||||
printing.o : ../../Modules/io_global.o
|
||||
printing.o : ../../Modules/kind.o
|
||||
printing.o : ../../Modules/mp_global.o
|
||||
printing.o : ../../Modules/mp_world.o
|
||||
printing.o : ../../Modules/noncol.o
|
||||
printing.o : ../../Modules/uspp.o
|
||||
printing.o : ../../PHonon/PH/phcom.o
|
||||
printing.o : ../../UtilXlib/mp.o
|
||||
printing.o : constants_epw.o
|
||||
printing.o : elph2.o
|
||||
printing.o : epwcom.o
|
||||
printing.o : transportcom.o
|
||||
pw2wan90epw.o : ../../FFTXlib/fft_interfaces.o
|
||||
pw2wan90epw.o : ../../FFTXlib/scatter_mod.o
|
||||
pw2wan90epw.o : ../../LR_Modules/lrcom.o
|
||||
pw2wan90epw.o : ../../Modules/becmod.o
|
||||
pw2wan90epw.o : ../../Modules/cell_base.o
|
||||
pw2wan90epw.o : ../../Modules/constants.o
|
||||
pw2wan90epw.o : ../../Modules/fft_base.o
|
||||
pw2wan90epw.o : ../../Modules/gvecw.o
|
||||
pw2wan90epw.o : ../../Modules/invmat.o
|
||||
pw2wan90epw.o : ../../Modules/io_files.o
|
||||
pw2wan90epw.o : ../../Modules/io_global.o
|
||||
pw2wan90epw.o : ../../Modules/ions_base.o
|
||||
pw2wan90epw.o : ../../Modules/kind.o
|
||||
pw2wan90epw.o : ../../Modules/mp_global.o
|
||||
pw2wan90epw.o : ../../Modules/mp_world.o
|
||||
pw2wan90epw.o : ../../Modules/noncol.o
|
||||
pw2wan90epw.o : ../../Modules/random_numbers.o
|
||||
pw2wan90epw.o : ../../Modules/recvec.o
|
||||
pw2wan90epw.o : ../../Modules/uspp.o
|
||||
pw2wan90epw.o : ../../Modules/wavefunctions.o
|
||||
pw2wan90epw.o : ../../PW/src/pwcom.o
|
||||
pw2wan90epw.o : ../../UtilXlib/mp.o
|
||||
pw2wan90epw.o : constants_epw.o
|
||||
pw2wan90epw.o : elph2.o
|
||||
pw2wan90epw.o : epwcom.o
|
||||
pw2wan90epw.o : io_epw.o
|
||||
pw2wan90epw.o : wannierEPW.o
|
||||
readdvscf.o : ../../Modules/fft_base.o
|
||||
readdvscf.o : ../../Modules/io_files.o
|
||||
readdvscf.o : ../../Modules/kind.o
|
||||
readdvscf.o : ../../Modules/noncol.o
|
||||
readdvscf.o : ../../PHonon/PH/phcom.o
|
||||
readdvscf.o : ../../PW/src/pwcom.o
|
||||
readdvscf.o : epwcom.o
|
||||
readdvscf.o : io_epw.o
|
||||
readgmap.o : ../../Modules/io_files.o
|
||||
readgmap.o : ../../Modules/io_global.o
|
||||
readgmap.o : ../../Modules/kind.o
|
||||
readgmap.o : ../../Modules/mp_global.o
|
||||
readgmap.o : ../../PW/src/pwcom.o
|
||||
readgmap.o : ../../UtilXlib/mp.o
|
||||
readgmap.o : elph2.o
|
||||
readgmap.o : io_epw.o
|
||||
readmat_shuffle2.o : ../../Modules/cell_base.o
|
||||
readmat_shuffle2.o : ../../Modules/control_flags.o
|
||||
readmat_shuffle2.o : ../../Modules/io_files.o
|
||||
readmat_shuffle2.o : ../../Modules/io_global.o
|
||||
readmat_shuffle2.o : ../../Modules/ions_base.o
|
||||
readmat_shuffle2.o : ../../Modules/kind.o
|
||||
readmat_shuffle2.o : ../../Modules/mp_global.o
|
||||
readmat_shuffle2.o : ../../Modules/mp_world.o
|
||||
readmat_shuffle2.o : ../../Modules/noncol.o
|
||||
readmat_shuffle2.o : ../../PHonon/PH/phcom.o
|
||||
readmat_shuffle2.o : ../../PW/src/symm_base.o
|
||||
readmat_shuffle2.o : ../../UtilXlib/mp.o
|
||||
readmat_shuffle2.o : constants_epw.o
|
||||
readmat_shuffle2.o : elph2.o
|
||||
readmat_shuffle2.o : epwcom.o
|
||||
readmat_shuffle2.o : io_dyn_mat2.o
|
||||
readmat_shuffle2.o : io_epw.o
|
||||
readmat_shuffle2.o : wan2bloch.o
|
||||
readwfc.o : ../../LR_Modules/lrcom.o
|
||||
readwfc.o : ../../Modules/io_files.o
|
||||
readwfc.o : ../../Modules/kind.o
|
||||
readwfc.o : ../../Modules/mp_global.o
|
||||
readwfc.o : ../../Modules/noncol.o
|
||||
readwfc.o : ../../PW/src/pwcom.o
|
||||
refold.o : ../../Modules/io_global.o
|
||||
refold.o : io_epw.o
|
||||
refold.o : kfold.o
|
||||
rgd_blk_epw_fine_mem.o : ../../Modules/cell_base.o
|
||||
rgd_blk_epw_fine_mem.o : ../../Modules/ions_base.o
|
||||
rgd_blk_epw_fine_mem.o : ../../Modules/kind.o
|
||||
rgd_blk_epw_fine_mem.o : constants_epw.o
|
||||
rgd_blk_epw_fine_mem.o : epwcom.o
|
||||
rigid_epw.o : ../../Modules/cell_base.o
|
||||
rigid_epw.o : ../../Modules/io_global.o
|
||||
rigid_epw.o : ../../Modules/ions_base.o
|
||||
rigid_epw.o : ../../Modules/kind.o
|
||||
rigid_epw.o : constants_epw.o
|
||||
rigid_epw.o : epwcom.o
|
||||
rotate_eigenm.o : ../../Modules/cell_base.o
|
||||
rotate_eigenm.o : ../../Modules/control_flags.o
|
||||
rotate_eigenm.o : ../../Modules/io_global.o
|
||||
rotate_eigenm.o : ../../Modules/ions_base.o
|
||||
rotate_eigenm.o : ../../Modules/kind.o
|
||||
rotate_eigenm.o : ../../PHonon/PH/phcom.o
|
||||
rotate_eigenm.o : constants_epw.o
|
||||
rotate_eigenm.o : elph2.o
|
||||
rotate_epmat.o : ../../Modules/ions_base.o
|
||||
rotate_epmat.o : ../../Modules/kind.o
|
||||
rotate_epmat.o : ../../PHonon/PH/phcom.o
|
||||
rotate_epmat.o : ../../PW/src/pwcom.o
|
||||
rotate_epmat.o : constants_epw.o
|
||||
rotate_epmat.o : elph2.o
|
||||
rotate_epmat.o : epwcom.o
|
||||
selfen_elec.o : ../../Modules/control_flags.o
|
||||
selfen_elec.o : ../../Modules/io_global.o
|
||||
selfen_elec.o : ../../Modules/kind.o
|
||||
selfen_elec.o : ../../Modules/mp_global.o
|
||||
selfen_elec.o : ../../Modules/mp_world.o
|
||||
selfen_elec.o : ../../PHonon/PH/phcom.o
|
||||
selfen_elec.o : ../../PW/src/pwcom.o
|
||||
selfen_elec.o : ../../UtilXlib/mp.o
|
||||
selfen_elec.o : constants_epw.o
|
||||
selfen_elec.o : elph2.o
|
||||
selfen_elec.o : epwcom.o
|
||||
selfen_elec.o : io_epw.o
|
||||
selfen_elec.o : io_scattering.o
|
||||
selfen_elec.o : transportcom.o
|
||||
selfen_phon.o : ../../Modules/io_global.o
|
||||
selfen_phon.o : ../../Modules/kind.o
|
||||
selfen_phon.o : ../../Modules/mp_global.o
|
||||
selfen_phon.o : ../../PHonon/PH/phcom.o
|
||||
selfen_phon.o : ../../PW/src/pwcom.o
|
||||
selfen_phon.o : ../../UtilXlib/mp.o
|
||||
selfen_phon.o : constants_epw.o
|
||||
selfen_phon.o : elph2.o
|
||||
selfen_phon.o : epwcom.o
|
||||
selfen_pl.o : ../../Modules/cell_base.o
|
||||
selfen_pl.o : ../../Modules/io_global.o
|
||||
selfen_pl.o : ../../Modules/kind.o
|
||||
selfen_pl.o : ../../Modules/mp_global.o
|
||||
selfen_pl.o : ../../PW/src/pwcom.o
|
||||
selfen_pl.o : ../../UtilXlib/mp.o
|
||||
selfen_pl.o : constants_epw.o
|
||||
selfen_pl.o : division.o
|
||||
selfen_pl.o : elph2.o
|
||||
selfen_pl.o : epwcom.o
|
||||
selfen_pl.o : io_epw.o
|
||||
setphases.o : ../../FFTXlib/fft_interfaces.o
|
||||
setphases.o : ../../LR_Modules/lrcom.o
|
||||
setphases.o : ../../Modules/cell_base.o
|
||||
setphases.o : ../../Modules/control_flags.o
|
||||
setphases.o : ../../Modules/fft_base.o
|
||||
setphases.o : ../../Modules/io_global.o
|
||||
setphases.o : ../../Modules/kind.o
|
||||
setphases.o : ../../Modules/mp_global.o
|
||||
setphases.o : ../../Modules/recvec.o
|
||||
setphases.o : ../../Modules/wavefunctions.o
|
||||
setphases.o : ../../PHonon/PH/phcom.o
|
||||
setphases.o : ../../PW/src/pwcom.o
|
||||
setphases.o : ../../UtilXlib/mp.o
|
||||
setphases.o : constants_epw.o
|
||||
setphases_wrap.o : ../../Modules/io_global.o
|
||||
setphases_wrap.o : ../../Modules/kind.o
|
||||
setphases_wrap.o : ../../Modules/mp_global.o
|
||||
setphases_wrap.o : ../../PW/src/pwcom.o
|
||||
setphases_wrap.o : ../../UtilXlib/mp.o
|
||||
setphases_wrap.o : elph2.o
|
||||
sgama2.o : ../../Modules/constants.o
|
||||
sgama2.o : ../../Modules/io_global.o
|
||||
sgama2.o : ../../Modules/kind.o
|
||||
sort.o : ../../Modules/kind.o
|
||||
spectral_cumulant.o : ../../Modules/io_global.o
|
||||
spectral_cumulant.o : ../../Modules/kind.o
|
||||
spectral_cumulant.o : constants_epw.o
|
||||
spectral_cumulant.o : elph2.o
|
||||
spectral_cumulant.o : epwcom.o
|
||||
spectral_cumulant.o : io_epw.o
|
||||
spectral_func.o : ../../Modules/io_global.o
|
||||
spectral_func.o : ../../Modules/kind.o
|
||||
spectral_func.o : ../../Modules/mp_global.o
|
||||
spectral_func.o : ../../PHonon/PH/phcom.o
|
||||
spectral_func.o : ../../PW/src/pwcom.o
|
||||
spectral_func.o : ../../UtilXlib/mp.o
|
||||
spectral_func.o : constants_epw.o
|
||||
spectral_func.o : division.o
|
||||
spectral_func.o : elph2.o
|
||||
spectral_func.o : epwcom.o
|
||||
spectral_func.o : io_epw.o
|
||||
spectral_func_ph.o : ../../Modules/io_global.o
|
||||
spectral_func_ph.o : ../../Modules/kind.o
|
||||
spectral_func_ph.o : ../../Modules/mp_global.o
|
||||
spectral_func_ph.o : ../../Modules/mp_world.o
|
||||
spectral_func_ph.o : ../../PHonon/PH/phcom.o
|
||||
spectral_func_ph.o : ../../PW/src/pwcom.o
|
||||
spectral_func_ph.o : ../../UtilXlib/mp.o
|
||||
spectral_func_ph.o : constants_epw.o
|
||||
spectral_func_ph.o : elph2.o
|
||||
spectral_func_ph.o : epwcom.o
|
||||
spectral_func_ph.o : io_epw.o
|
||||
spectral_func_pl.o : ../../Modules/cell_base.o
|
||||
spectral_func_pl.o : ../../Modules/io_global.o
|
||||
spectral_func_pl.o : ../../Modules/kind.o
|
||||
spectral_func_pl.o : ../../Modules/mp_global.o
|
||||
spectral_func_pl.o : ../../PW/src/pwcom.o
|
||||
spectral_func_pl.o : ../../UtilXlib/mp.o
|
||||
spectral_func_pl.o : constants_epw.o
|
||||
spectral_func_pl.o : division.o
|
||||
spectral_func_pl.o : elph2.o
|
||||
spectral_func_pl.o : epwcom.o
|
||||
spectral_func_pl.o : io_epw.o
|
||||
star_q2.o : ../../Modules/io_global.o
|
||||
star_q2.o : ../../Modules/kind.o
|
||||
stop_epw.o : ../../Modules/io_global.o
|
||||
stop_epw.o : ../../Modules/mp_global.o
|
||||
stop_epw.o : ../../UtilXlib/mp.o
|
||||
stop_epw.o : printing.o
|
||||
superconductivity.o : ../../Modules/constants.o
|
||||
superconductivity.o : ../../Modules/io_files.o
|
||||
superconductivity.o : ../../Modules/io_global.o
|
||||
superconductivity.o : ../../Modules/kind.o
|
||||
superconductivity.o : ../../Modules/mp_global.o
|
||||
superconductivity.o : ../../Modules/mp_world.o
|
||||
superconductivity.o : ../../UtilXlib/mp.o
|
||||
superconductivity.o : constants_epw.o
|
||||
superconductivity.o : division.o
|
||||
superconductivity.o : eliashbergcom.o
|
||||
superconductivity.o : elph2.o
|
||||
superconductivity.o : epwcom.o
|
||||
superconductivity.o : io_epw.o
|
||||
superconductivity_aniso.o : ../../Modules/cell_base.o
|
||||
superconductivity_aniso.o : ../../Modules/control_flags.o
|
||||
superconductivity_aniso.o : ../../Modules/io_files.o
|
||||
superconductivity_aniso.o : ../../Modules/io_global.o
|
||||
superconductivity_aniso.o : ../../Modules/kind.o
|
||||
superconductivity_aniso.o : ../../Modules/mp_global.o
|
||||
superconductivity_aniso.o : ../../Modules/mp_world.o
|
||||
superconductivity_aniso.o : ../../PHonon/PH/phcom.o
|
||||
superconductivity_aniso.o : ../../UtilXlib/mp.o
|
||||
superconductivity_aniso.o : constants_epw.o
|
||||
superconductivity_aniso.o : division.o
|
||||
superconductivity_aniso.o : eliashbergcom.o
|
||||
superconductivity_aniso.o : elph2.o
|
||||
superconductivity_aniso.o : epwcom.o
|
||||
|
@ -181,29 +715,88 @@ superconductivity_aniso.o : io_eliashberg.o
|
|||
superconductivity_aniso.o : io_epw.o
|
||||
superconductivity_aniso.o : superconductivity.o
|
||||
superconductivity_aniso.o : superconductivity_iso.o
|
||||
superconductivity_iso.o : ../../Modules/control_flags.o
|
||||
superconductivity_iso.o : ../../Modules/io_files.o
|
||||
superconductivity_iso.o : ../../Modules/io_global.o
|
||||
superconductivity_iso.o : ../../Modules/kind.o
|
||||
superconductivity_iso.o : ../../UtilXlib/mp.o
|
||||
superconductivity_iso.o : constants_epw.o
|
||||
superconductivity_iso.o : eliashbergcom.o
|
||||
superconductivity_iso.o : epwcom.o
|
||||
superconductivity_iso.o : io_eliashberg.o
|
||||
superconductivity_iso.o : io_epw.o
|
||||
superconductivity_iso.o : superconductivity.o
|
||||
system_mem_usage.o : ../../Modules/io_global.o
|
||||
system_mem_usage.o : io_epw.o
|
||||
transport.o : ../../Modules/cell_base.o
|
||||
transport.o : ../../Modules/io_files.o
|
||||
transport.o : ../../Modules/io_global.o
|
||||
transport.o : ../../Modules/kind.o
|
||||
transport.o : ../../Modules/mp_global.o
|
||||
transport.o : ../../Modules/mp_world.o
|
||||
transport.o : ../../Modules/noncol.o
|
||||
transport.o : ../../PHonon/PH/phcom.o
|
||||
transport.o : ../../PW/src/pwcom.o
|
||||
transport.o : ../../PW/src/symm_base.o
|
||||
transport.o : ../../UtilXlib/mp.o
|
||||
transport.o : constants_epw.o
|
||||
transport.o : division.o
|
||||
transport.o : elph2.o
|
||||
transport.o : epwcom.o
|
||||
transport.o : io_epw.o
|
||||
transport.o : io_scattering.o
|
||||
transport.o : transportcom.o
|
||||
transport.o : wan2bloch.o
|
||||
transport_iter.o : ../../Modules/cell_base.o
|
||||
transport_iter.o : ../../Modules/io_files.o
|
||||
transport_iter.o : ../../Modules/io_global.o
|
||||
transport_iter.o : ../../Modules/kind.o
|
||||
transport_iter.o : ../../Modules/mp_global.o
|
||||
transport_iter.o : ../../Modules/mp_world.o
|
||||
transport_iter.o : ../../Modules/noncol.o
|
||||
transport_iter.o : ../../PHonon/PH/phcom.o
|
||||
transport_iter.o : ../../PW/src/pwcom.o
|
||||
transport_iter.o : ../../PW/src/symm_base.o
|
||||
transport_iter.o : ../../UtilXlib/mp.o
|
||||
transport_iter.o : ../../UtilXlib/parallel_include.o
|
||||
transport_iter.o : constants_epw.o
|
||||
transport_iter.o : division.o
|
||||
transport_iter.o : elph2.o
|
||||
transport_iter.o : epwcom.o
|
||||
transport_iter.o : io_eliashberg.o
|
||||
transport_iter.o : io_epw.o
|
||||
transport_iter.o : io_scattering.o
|
||||
transport_iter.o : printing.o
|
||||
transport_iter.o : transportcom.o
|
||||
transportcom.o : ../../Modules/kind.o
|
||||
wan2bloch.o : ../../Modules/cell_base.o
|
||||
wan2bloch.o : ../../Modules/io_files.o
|
||||
wan2bloch.o : ../../Modules/io_global.o
|
||||
wan2bloch.o : ../../Modules/ions_base.o
|
||||
wan2bloch.o : ../../Modules/kind.o
|
||||
wan2bloch.o : ../../Modules/mp_global.o
|
||||
wan2bloch.o : ../../Modules/mp_world.o
|
||||
wan2bloch.o : ../../PHonon/PH/phcom.o
|
||||
wan2bloch.o : ../../PHonon/PH/rigid.o
|
||||
wan2bloch.o : ../../UtilXlib/parallel_include.o
|
||||
wan2bloch.o : constants_epw.o
|
||||
wan2bloch.o : elph2.o
|
||||
wan2bloch.o : epwcom.o
|
||||
wan2bloch.o : io_epw.o
|
||||
wannierEPW.o : ../../Modules/kind.o
|
||||
wannierize.o : ../../Modules/io_files.o
|
||||
wannierize.o : ../../Modules/io_global.o
|
||||
wannierize.o : ../../Modules/ions_base.o
|
||||
wannierize.o : ../../Modules/kind.o
|
||||
wannierize.o : ../../Modules/mp_global.o
|
||||
wannierize.o : ../../Modules/mp_world.o
|
||||
wannierize.o : ../../PW/src/pwcom.o
|
||||
wannierize.o : ../../PW/src/start_k.o
|
||||
wannierize.o : ../../UtilXlib/mp.o
|
||||
wannierize.o : constants_epw.o
|
||||
wannierize.o : epwcom.o
|
||||
wannierize.o : io_epw.o
|
||||
wannierize.o : wannierEPW.o
|
||||
wigner.o : ../../Modules/cell_base.o
|
||||
wigner.o : ../../Modules/kind.o
|
||||
wigner.o : constants_epw.o
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
subroutine nesting_fn_q (iq )
|
||||
subroutine nesting_fn_q ( iqq, iq )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! compute the imaginary part of the phonon self energy due to electron-
|
||||
|
@ -37,6 +37,8 @@
|
|||
!
|
||||
implicit none
|
||||
!
|
||||
INTEGER, INTENT (in) :: iqq
|
||||
!! Current q-point index from selecq
|
||||
INTEGER, INTENT (in) :: iq
|
||||
!! Current q-point index
|
||||
!
|
||||
|
@ -74,7 +76,7 @@
|
|||
real(kind=DP), external :: efermig
|
||||
!
|
||||
!
|
||||
IF (iq.eq.1) then
|
||||
IF (iqq == 1) then
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Nesting Function in the double delta approx")')
|
||||
WRITE(stdout,'(5x,a/)') repeat('=',67)
|
||||
|
@ -108,7 +110,7 @@
|
|||
! N(Ef) in the equation for lambda is the DOS per spin
|
||||
dosef = dosef / two
|
||||
!
|
||||
IF (iq.eq.1) then
|
||||
IF (iqq == 1) then
|
||||
WRITE (stdout, 100) degaussw0 * ryd2ev, ngaussw
|
||||
WRITE (stdout, 101) dosef / ryd2ev, ef0 * ryd2ev
|
||||
ENDIF
|
||||
|
@ -184,224 +186,5 @@
|
|||
101 format(5x,'DOS =',f10.6,' states/spin/eV/Unit Cell at Ef=',f10.6,' eV')
|
||||
102 format(5x,' Nesting function (q)=',e15.6,' [Adimensional]')
|
||||
!
|
||||
end subroutine nesting_fn_q
|
||||
END SUBROUTINE nesting_fn_q
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
subroutine nesting_fn_k ( ik )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! Compute the imaginary part of the phonon self energy due to electron-
|
||||
!! phonon interaction in the Migdal approximation. This corresponds to
|
||||
!! the phonon linewidth (half width). The phonon frequency is taken into
|
||||
!! account in the energy selection rule.
|
||||
!!
|
||||
!-----------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
USE epwcom, ONLY : nbndsub, fsthick, &
|
||||
eptemp, ngaussw, degaussw, &
|
||||
nsmear, delta_smear, efermi_read, fermi_energy
|
||||
USE pwcom, ONLY : nelec, ef, isk
|
||||
USE elph2, ONLY : ibndmax, ibndmin, etf, etf_k, &
|
||||
wkf, xqf, wqf, nkqf, nqf, nqtotf, &
|
||||
nkqtotf, xqf, gamma_nest
|
||||
USE constants_epw, ONLY : ryd2ev, two, zero
|
||||
#if defined(__NAG)
|
||||
USE f90_unix_io, ONLY : flush
|
||||
#endif
|
||||
USE mp, ONLY : mp_barrier,mp_sum, mp_bcast
|
||||
USE mp_global, ONLY : inter_pool_comm
|
||||
USE mp_world, ONLY : mpime
|
||||
USE io_global, ONLY : ionode_id
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
INTEGER, INTENT (in) :: ik
|
||||
!! Current k-point
|
||||
!
|
||||
! Work variables
|
||||
INTEGER :: iq
|
||||
!! Counter on the k-point index
|
||||
INTEGER :: ikk
|
||||
!! k-point index
|
||||
INTEGER :: ikq
|
||||
!! q-point index
|
||||
INTEGER :: ibnd
|
||||
!! Counter on bands
|
||||
INTEGER :: jbnd
|
||||
!! Counter on bands
|
||||
INTEGER :: fermicount
|
||||
!! Number of states on the Fermi surface
|
||||
INTEGER :: ismear
|
||||
!! Smearing for the Gaussian function
|
||||
INTEGER :: lower_bnd
|
||||
!! Upper bounds index after k or q paral
|
||||
INTEGER :: upper_bnd
|
||||
!! Upper bounds index after k or q paral
|
||||
!
|
||||
REAL(kind=DP) :: ekk
|
||||
!! Eigen energy on the fine grid relative to the Fermi level
|
||||
REAL(kind=DP) :: ekq
|
||||
!! Eigen energy of k+q on the fine grid relative to the Fermi level
|
||||
REAL(kind=DP) :: ef0
|
||||
!! Fermi energy level
|
||||
REAL(kind=DP) :: weight
|
||||
!! Imaginary part of the phonhon self-energy factor
|
||||
REAL(kind=DP) :: dosef
|
||||
!! Density of state N(Ef)
|
||||
REAL(kind=DP) :: w0g1
|
||||
!! Dirac delta for the imaginary part of $\Sigma$
|
||||
REAL(kind=DP) :: w0g2
|
||||
!! Dirac delta for the imaginary part of $\Sigma$
|
||||
!
|
||||
REAL(kind=DP) :: w0gauss, degaussw0
|
||||
REAL(kind=DP), external :: efermig_seq, dos_ef_seq
|
||||
REAL(kind=DP), ALLOCATABLE :: xqf_all(:,:), wqf_all(:,:)
|
||||
REAL(kind=DP), external :: efermig
|
||||
!
|
||||
!
|
||||
IF (ik.eq.1) then
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Nesting Function in the double delta approx")')
|
||||
WRITE(stdout,'(5x,a/)') repeat('=',67)
|
||||
!
|
||||
IF ( fsthick.lt.1.d3 ) &
|
||||
WRITE(stdout, '(/5x,a,f10.6,a)' ) &
|
||||
'Fermi Surface thickness = ', fsthick * ryd2ev, ' eV'
|
||||
WRITE(stdout, '(/5x,a,f10.6,a)' ) &
|
||||
'Golden Rule strictly enforced with T = ',eptemp * ryd2ev, ' eV'
|
||||
IF ( .not. ALLOCATED (gamma_nest) ) ALLOCATE( gamma_nest (nqtotf,nsmear) )
|
||||
gamma_nest(:,:) = zero
|
||||
ENDIF
|
||||
|
||||
! here we loop on smearing values
|
||||
DO ismear = 1, nsmear
|
||||
!
|
||||
degaussw0 = (ismear-1)*delta_smear+degaussw
|
||||
!
|
||||
! Fermi level and corresponding DOS
|
||||
!
|
||||
! Note that the weights of k+q points must be set to zero here
|
||||
! no spin-polarized calculation here
|
||||
IF ( efermi_read ) THEN
|
||||
ef0 = fermi_energy
|
||||
ELSE
|
||||
IF (mpime .eq. ionode_id) THEN
|
||||
ef0 = efermig_seq(etf_k, nbndsub, nkqf, nelec, wkf, degaussw0, ngaussw, 0, isk)
|
||||
ENDIF
|
||||
CALL mp_bcast (ef0, ionode_id, inter_pool_comm)
|
||||
ENDIF
|
||||
!
|
||||
IF (mpime .eq. ionode_id) THEN
|
||||
dosef = dos_ef_seq (ngaussw, degaussw0, ef0, etf_k, wkf, nkqf, nbndsub)
|
||||
! N(Ef) in the equation for lambda is the DOS per spin
|
||||
dosef = dosef / two
|
||||
ENDIF
|
||||
CALL mp_bcast (dosef, ionode_id, inter_pool_comm)
|
||||
!
|
||||
IF (ik.eq.1) then
|
||||
WRITE (stdout, 100) degaussw0 * ryd2ev, ngaussw
|
||||
WRITE (stdout, 101) dosef / ryd2ev, ef0 * ryd2ev
|
||||
ENDIF
|
||||
!
|
||||
! Find the bounds of q-dependent arrays in the parallel case in each pool
|
||||
CALL fkbounds( nqtotf, lower_bnd, upper_bnd )
|
||||
!
|
||||
CALL start_clock('nesting')
|
||||
!
|
||||
fermicount = 0
|
||||
!
|
||||
DO iq = 1, nqf
|
||||
!
|
||||
ikq = 2 * iq
|
||||
ikk = ikq - 1
|
||||
!
|
||||
! here we must have ef, not ef0, to be consistent with ephwann_shuffle
|
||||
IF ( ( minval ( abs(etf (:, ikk) - ef) ) .lt. fsthick ) .and. &
|
||||
( minval ( abs(etf (:, ikq) - ef) ) .lt. fsthick ) ) then
|
||||
!
|
||||
fermicount = fermicount + 1
|
||||
!
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
!
|
||||
ekk = etf (ibndmin-1+ibnd, ikk) - ef0
|
||||
w0g1 = w0gauss ( ekk / degaussw0, 0) / degaussw0
|
||||
!
|
||||
DO jbnd = 1, ibndmax-ibndmin+1
|
||||
!
|
||||
ekq = etf (ibndmin-1+jbnd, ikq) - ef0
|
||||
w0g2 = w0gauss ( ekq / degaussw0, 0) / degaussw0
|
||||
!
|
||||
! = k-point weight * [f(E_k) - f(E_k+q)]/ [E_k+q - E_k -w_q +id]
|
||||
! This is the imaginary part of the phonon self-energy, sans the matrix elements
|
||||
!
|
||||
! weight = wkf (ikk) * (wgkk - wgkq) * &
|
||||
! aimag ( cone / ( ekq - ekk - ci * degaussw ) )
|
||||
!
|
||||
! the below expression is positive-definite, but also an approximation
|
||||
! which neglects some fine features
|
||||
!
|
||||
weight = wkf (ikk) * w0g1 * w0g2
|
||||
!
|
||||
gamma_nest(iq+lower_bnd-1,ismear) = gamma_nest(iq+lower_bnd-1,ismear) + weight
|
||||
!
|
||||
ENDDO ! jbnd
|
||||
ENDDO ! ibnd
|
||||
!
|
||||
ENDIF ! endif fsthick
|
||||
!
|
||||
ENDDO ! loop on q
|
||||
!
|
||||
CALL stop_clock('nesting')
|
||||
!
|
||||
ENDDO !smears
|
||||
!
|
||||
IF ( ik .eq. (nkqtotf - nqtotf)) THEN
|
||||
!
|
||||
ALLOCATE ( xqf_all (3,nqtotf ),wqf_all (1,nqtotf) )
|
||||
xqf_all(:,:) = zero
|
||||
wqf_all(:,:) = zero
|
||||
!
|
||||
#if defined(__MPI)
|
||||
!
|
||||
! note that poolgather2 works with the doubled grid (k and k+q)
|
||||
!
|
||||
CALL poolgather2 ( 3, nqtotf, nqf, xqf, xqf_all )
|
||||
CALL poolgather2 ( 1, nqtotf, nqf, wqf, wqf_all )
|
||||
CALL mp_sum(gamma_nest, inter_pool_comm )
|
||||
CALL mp_sum(fermicount, inter_pool_comm)
|
||||
CALL mp_barrier(inter_pool_comm)
|
||||
!
|
||||
#else
|
||||
!
|
||||
xqf_all = xqf
|
||||
DO iq = 1, nqtotf
|
||||
wqf_all(1,iq) = wqf(iq)
|
||||
ENDDO
|
||||
!
|
||||
#endif
|
||||
DO ismear = 1, nsmear
|
||||
degaussw0 = (ismear-1)*delta_smear+degaussw
|
||||
WRITE(stdout,'(/5x,"smearing = ",f9.5)') degaussw0
|
||||
DO iq = 1, nqtotf
|
||||
WRITE(stdout,'(/5x,"iq = ",i5," coord.: ", 3f9.5, " wt: ", f9.5)') iq, xqf_all(:,iq), wqf_all(1,iq)
|
||||
WRITE(stdout,'(5x,a)') repeat('-',67)
|
||||
!
|
||||
WRITE(stdout, 102) gamma_nest(iq,ismear)
|
||||
WRITE(stdout,'(5x,a/)') repeat('-',67)
|
||||
CALL flush(6)
|
||||
!
|
||||
WRITE( stdout, '(/5x,a,i8,a,i8/)' ) &
|
||||
'Number of (k,k+q) pairs on the Fermi surface: ',fermicount, ' out of ', nkqtotf/2
|
||||
!
|
||||
ENDDO
|
||||
!
|
||||
ENDDO
|
||||
!
|
||||
endif
|
||||
!
|
||||
100 format(5x,'Gaussian Broadening: ',f7.3,' eV, ngauss=',i4)
|
||||
101 format(5x,'DOS =',f10.6,' states/spin/eV/Unit Cell at Ef=',f10.6,' eV')
|
||||
102 format(5x,'Nesting function (q)=',e15.6,' [Adimensional]')
|
||||
!
|
||||
end subroutine nesting_fn_k
|
||||
|
|
|
@ -0,0 +1,665 @@
|
|||
!
|
||||
! Copyright (C) 2010-2016 Samuel Ponce', Roxana Margine, Carla Verdi, Feliciano Giustino
|
||||
! Copyright (C) 2016-2018 Samuel Ponce'
|
||||
!
|
||||
! This file is distributed under the terms of the GNU General Public
|
||||
! License. See the file `LICENSE' in the root directory of the
|
||||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE print_ibte( iqq, iq, totq, ef0, efcb, first_cycle, ind_tot, ind_totcb, &
|
||||
lrepmatw2, lrepmatw4, lrepmatw5, lrepmatw6 )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! This subroutine computes the scattering rate (inv_tau)
|
||||
!!
|
||||
!-----------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP, i4b
|
||||
USE cell_base, ONLY : omega
|
||||
USE io_global, ONLY : stdout
|
||||
USE phcom, ONLY : nmodes
|
||||
USE epwcom, ONLY : nbndsub, fsthick, eps_acustic, degaussw, &
|
||||
nstemp, scattering_serta, scattering_0rta, shortrange,&
|
||||
restart, restart_freq, restart_filq, vme
|
||||
USE pwcom, ONLY : ef
|
||||
USE elph2, ONLY : ibndmax, ibndmin, etf, nkqf, nkf, dmef, vmef, wf, wqf, &
|
||||
epf17, nkqtotf, inv_tau_all, inv_tau_allcb, &
|
||||
xqf, zi_allvb, zi_allcb, xkf, wkf, dmef, vmef, nqf
|
||||
USE transportcom, ONLY : transp_temp, lower_bnd
|
||||
USE constants_epw, ONLY : zero, one, two, pi, ryd2mev, kelvin2eV, ryd2ev, &
|
||||
eps6, eps10, bohr2ang, ang2cm
|
||||
USE io_files, ONLY : prefix, diropn, tmp_dir
|
||||
USE mp, ONLY : mp_barrier, mp_sum, mp_bcast
|
||||
USE mp_global, ONLY : world_comm, my_pool_id, npool
|
||||
USE io_global, ONLY : ionode_id
|
||||
USE io_epw, ONLY : iunepmat, iunepmatcb, iufilibtev_sup, iunrestart, &
|
||||
iunsparseq, iunsparsek, iunsparsei, iunsparsej, iunsparset, &
|
||||
iunsparseqcb, iunsparsekcb, iunsparseicb, iunsparsejcb, iunsparsetcb
|
||||
#if defined(__MPI)
|
||||
USE parallel_include, ONLY : MPI_OFFSET_KIND, MPI_SEEK_SET, MPI_INTEGER8, &
|
||||
MPI_DOUBLE_PRECISION, MPI_STATUS_IGNORE, MPI_INTEGER4, &
|
||||
MPI_MODE_CREATE, MPI_INFO_NULL, MPI_MODE_WRONLY, MPI_OFFSET
|
||||
#endif
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
LOGICAL, INTENT (INOUT) :: first_cycle
|
||||
!! Use to determine weather this is the first cycle after restart
|
||||
INTEGER, INTENT(IN) :: iqq
|
||||
!! Q-point index from selecq
|
||||
INTEGER, INTENT(IN) :: iq
|
||||
!! Q-point index
|
||||
INTEGER, INTENT(IN) :: totq
|
||||
!! Total number of q-points in selecq
|
||||
REAL(KIND=DP), INTENT(IN) :: ef0(nstemp)
|
||||
!! Fermi level for the temperature itemp
|
||||
REAL(KIND=DP), INTENT(IN) :: efcb(nstemp)
|
||||
!! Second Fermi level for the temperature itemp. Could be unused (0).
|
||||
INTEGER(kind=MPI_OFFSET_KIND), INTENT(INOUT) :: ind_tot
|
||||
!! Total number of element written to file
|
||||
INTEGER(kind=MPI_OFFSET_KIND), INTENT(INOUT) :: ind_totcb
|
||||
!! Total number of element written to file
|
||||
#if defined(__MPI)
|
||||
INTEGER (kind=MPI_OFFSET_KIND), INTENT(inout) :: lrepmatw2
|
||||
!! Offset for that core
|
||||
INTEGER (kind=MPI_OFFSET_KIND), INTENT(inout) :: lrepmatw4
|
||||
!! Offset for that core
|
||||
INTEGER (kind=MPI_OFFSET_KIND), INTENT(inout) :: lrepmatw5
|
||||
!! Offset for that core
|
||||
INTEGER (kind=MPI_OFFSET_KIND), INTENT(inout) :: lrepmatw6
|
||||
!! Offset for that core
|
||||
#else
|
||||
INTEGER (kind=8), INTENT (inout) :: lrepmatw2
|
||||
!! Offset for that core
|
||||
INTEGER (kind=i4b), INTENT (inout) :: lrepmatw4
|
||||
!! Offset for that core
|
||||
INTEGER (kind=8), INTENT (inout) :: lrepmatw5
|
||||
!! Offset for that core
|
||||
INTEGER (kind=i4b), INTENT (inout) :: lrepmatw6
|
||||
#endif
|
||||
!
|
||||
! Local variables
|
||||
INTEGER :: n
|
||||
!! Integer for the degenerate average over eigenstates
|
||||
INTEGER :: ik
|
||||
!! K-point index
|
||||
INTEGER :: ikk
|
||||
!! Odd index to read etf
|
||||
INTEGER :: ikq
|
||||
!! Even k+q index to read etf
|
||||
INTEGER :: ibnd
|
||||
!! Local band index
|
||||
INTEGER :: jbnd
|
||||
!! Local band index
|
||||
INTEGER :: imode
|
||||
!! Local mode index
|
||||
INTEGER :: itemp
|
||||
!! Index over temperature range
|
||||
INTEGER :: k_all(npool)
|
||||
#if defined(__MPI)
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lrepmatw
|
||||
!! Offset for that core
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lrepmatw3
|
||||
!! Offset for that core
|
||||
INTEGER (kind=MPI_OFFSET_KIND) :: lsize
|
||||
!! Offset to tell where to start reading the file
|
||||
#else
|
||||
INTEGER(kind=8) :: lrepmatw
|
||||
!!
|
||||
INTEGER(kind=4) :: lrepmatw3
|
||||
!!
|
||||
INTEGER(kind=8) :: lsize
|
||||
!! Offset to tell where to start reading the file
|
||||
#endif
|
||||
CHARACTER (len=256) :: filint
|
||||
INTEGER :: ierr
|
||||
INTEGER :: ind(npool)
|
||||
INTEGER :: indcb(npool)
|
||||
INTEGER(kind=i4b) :: sparse_q((ibndmax-ibndmin+1) * (ibndmax-ibndmin+1) * nstemp * nkf )
|
||||
INTEGER(kind=i4b) :: sparse_k((ibndmax-ibndmin+1) * (ibndmax-ibndmin+1) * nstemp * nkf )
|
||||
INTEGER(kind=i4b) :: sparse_i((ibndmax-ibndmin+1) * (ibndmax-ibndmin+1) * nstemp * nkf )
|
||||
INTEGER(kind=i4b) :: sparse_j((ibndmax-ibndmin+1) * (ibndmax-ibndmin+1) * nstemp * nkf )
|
||||
INTEGER(kind=i4b) :: sparse_t((ibndmax-ibndmin+1) * (ibndmax-ibndmin+1) * nstemp * nkf )
|
||||
INTEGER(kind=i4b) :: sparsecb_q((ibndmax-ibndmin+1) * (ibndmax-ibndmin+1) * nstemp * nkf )
|
||||
INTEGER(kind=i4b) :: sparsecb_k((ibndmax-ibndmin+1) * (ibndmax-ibndmin+1) * nstemp * nkf )
|
||||
INTEGER(kind=i4b) :: sparsecb_i((ibndmax-ibndmin+1) * (ibndmax-ibndmin+1) * nstemp * nkf )
|
||||
INTEGER(kind=i4b) :: sparsecb_j((ibndmax-ibndmin+1) * (ibndmax-ibndmin+1) * nstemp * nkf )
|
||||
INTEGER(kind=i4b) :: sparsecb_t((ibndmax-ibndmin+1) * (ibndmax-ibndmin+1) * nstemp * nkf )
|
||||
!
|
||||
REAL(kind=DP) :: tmp
|
||||
!! Temporary variable
|
||||
REAL(kind=DP) :: dfnk
|
||||
!! Derivative of f_nk with respect to \varepsilon_nk
|
||||
REAL(kind=DP) :: ekk2
|
||||
!! Temporary variable to the eigenenergies for the degenerate average
|
||||
REAL(KIND=DP) :: ekk
|
||||
!! Energy relative to Fermi level: $$\varepsilon_{n\mathbf{k}}-\varepsilon_F$$
|
||||
REAL(KIND=DP) :: ekq
|
||||
!! Energy relative to Fermi level: $$\varepsilon_{m\mathbf{k+q}}-\varepsilon_F$$
|
||||
REAL(KIND=DP) :: g2
|
||||
!! Electron-phonon matrix elements squared (g2 is Ry^2)
|
||||
REAL(KIND=DP) :: etemp
|
||||
!! Temperature in Ry (this includes division by kb)
|
||||
REAL(KIND=DP) :: w0g1
|
||||
!! $$ \delta[\varepsilon_{nk} - \varepsilon_{mk+q} + \omega_{q}] $$
|
||||
REAL(KIND=DP) :: w0g2
|
||||
!! $$ \delta[\varepsilon_{nk} - \varepsilon_{mk+q} - \omega_{q}] $$
|
||||
REAL(KIND=DP) :: inv_wq
|
||||
!! Inverse phonon frequency. Defined for efficiency reasons.
|
||||
REAL(KIND=DP) :: inv_etemp
|
||||
!! Invese temperature inv_etemp = 1/etemp. Defined for efficiency reasons.
|
||||
REAL(KIND=DP) :: g2_tmp
|
||||
!! Used to set component to 0 if the phonon freq. is too low. This is defined
|
||||
!! for efficiency reasons as if statement should be avoided in inner-most loops.
|
||||
REAL(KIND=DP) :: inv_degaussw
|
||||
!! 1.0/degaussw. Defined for efficiency reasons.
|
||||
REAL(KIND=DP) :: wq
|
||||
!! Phonon frequency $$\omega_{q\nu}$$ on the fine grid.
|
||||
REAL(KIND=DP) :: wgq
|
||||
!! Bose-Einstein occupation function $$n_{q\nu}$$
|
||||
REAL(kind=DP) :: weight
|
||||
!! Self-energy factor
|
||||
REAL(KIND=DP) :: fmkq
|
||||
!! Fermi-Dirac occupation function $$f_{m\mathbf{k+q}}$$
|
||||
REAL(KIND=DP) :: vkk(3,ibndmax-ibndmin+1)
|
||||
!! Electronic velocity $$v_{n\mathbf{k}}$$
|
||||
!REAL(kind=DP) :: trans_prob(ibndmax-ibndmin+1, ibndmax-ibndmin+1, nstemp, nkf)
|
||||
REAL(kind=DP) :: trans_prob( (ibndmax-ibndmin+1) * (ibndmax-ibndmin+1) * nstemp * nkf)
|
||||
!! Temporary array to store the scattering rates
|
||||
!REAL(kind=DP) :: trans_probcb(ibndmax-ibndmin+1, ibndmax-ibndmin+1, nstemp, nkf)
|
||||
REAL(kind=DP) :: trans_probcb( (ibndmax-ibndmin+1)*(ibndmax-ibndmin+1)* nstemp* nkf )
|
||||
!! Temporary array to store the scattering rates
|
||||
REAL(kind=DP) :: zi_tmp(ibndmax-ibndmin+1)
|
||||
!! Temporary array to store the zi
|
||||
REAL(KIND=DP), ALLOCATABLE :: inv_tau_all_new (:,:,:)
|
||||
!! New scattering rates to be merged
|
||||
REAL(KIND=DP) :: xkf_all(3,nkqtotf/2)
|
||||
!! k-points coordinate from all cores
|
||||
REAL(KIND=DP) :: wkf_all(nkqtotf/2)
|
||||
!! Weights from all the cores
|
||||
REAL(KIND=DP) :: vkk_all(3,ibndmax-ibndmin+1,nkqtotf/2)
|
||||
!! Velocities from all the cores
|
||||
!
|
||||
REAL(KIND=DP) :: etf_all(ibndmax-ibndmin+1,nkqtotf/2)
|
||||
!! Eigen-energies on the fine grid collected from all pools in parallel case
|
||||
REAL(KIND=DP), EXTERNAL :: DDOT
|
||||
!! Dot product function
|
||||
REAL(KIND=DP), EXTERNAL :: efermig
|
||||
!! Function that returns the Fermi energy
|
||||
REAL(KIND=DP), EXTERNAL :: wgauss
|
||||
!! Compute the approximate theta function. Here computes Fermi-Dirac
|
||||
REAL(KIND=DP), EXTERNAL :: w0gauss
|
||||
!! The derivative of wgauss: an approximation to the delta function
|
||||
REAL(kind=DP), PARAMETER :: eps = 1.d-4
|
||||
!! Tolerence parameter for the velocity
|
||||
REAL(kind=DP), PARAMETER :: eps2 = 0.01/ryd2mev
|
||||
!! Tolerence
|
||||
REAL(kind=DP) :: carrier_density, fnk, inv_cell
|
||||
!
|
||||
inv_cell = 1.0d0/omega
|
||||
!
|
||||
IF ( iqq == 1 ) THEN
|
||||
!
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Scattering rate for IBTE")')
|
||||
WRITE(stdout,'(5x,a/)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"restart and restart_freq inputs deactivated (restart point at every q-points).")')
|
||||
WRITE(stdout,'(5x,"No intermediate mobility will be shown.")')
|
||||
!
|
||||
IF ( fsthick < 1.d3 ) THEN
|
||||
WRITE(stdout, '(/5x,a,f10.6,a)' ) 'Fermi Surface thickness = ', fsthick * ryd2ev, ' eV'
|
||||
WRITE(stdout, '(5x,a,f10.6,a)' ) 'This is computed with respect to the fine Fermi level ',ef * ryd2ev, ' eV'
|
||||
WRITE(stdout, '(5x,a,f10.6,a,f10.6,a)' ) 'Only states between ',(ef-fsthick) * ryd2ev, ' eV and ',&
|
||||
(ef+fsthick) * ryd2ev, ' eV will be included'
|
||||
WRITE(stdout,'(5x,a/)')
|
||||
ENDIF
|
||||
lrepmatw = 0
|
||||
lrepmatw2 = 0
|
||||
lrepmatw4 = 0
|
||||
lrepmatw5 = 0
|
||||
lrepmatw6 = 0
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
! In the case of a restart do not add the first step
|
||||
IF (first_cycle) THEN
|
||||
first_cycle = .FALSE.
|
||||
ELSE
|
||||
!
|
||||
trans_prob(:) = zero
|
||||
sparse_q(:) = zero
|
||||
sparse_k(:) = zero
|
||||
sparse_i(:) = zero
|
||||
sparse_j(:) = zero
|
||||
sparse_t(:) = zero
|
||||
trans_probcb(:) = zero
|
||||
sparsecb_q(:) = zero
|
||||
sparsecb_k(:) = zero
|
||||
sparsecb_i(:) = zero
|
||||
sparsecb_j(:) = zero
|
||||
sparsecb_t(:) = zero
|
||||
|
||||
!trans_probcb(:) = zero
|
||||
etf_all(:,:) = zero
|
||||
vkk_all(:,:,:) = zero
|
||||
! local index for each q-point
|
||||
ind(:) = 0
|
||||
indcb(:) = 0
|
||||
!
|
||||
! loop over temperatures
|
||||
DO itemp = 1, nstemp
|
||||
xkf_all(:,:) = 0.0d0
|
||||
wkf_all(:) = 0.0d0
|
||||
!
|
||||
etemp = transp_temp(itemp)
|
||||
!
|
||||
! SP: Define the inverse so that we can efficiently multiply instead of
|
||||
! dividing
|
||||
!
|
||||
inv_etemp = 1.0/etemp
|
||||
inv_degaussw = 1.0/degaussw
|
||||
!
|
||||
DO ik = 1, nkf
|
||||
!
|
||||
ikk = 2 * ik - 1
|
||||
ikq = ikk + 1
|
||||
!
|
||||
! We are not consistent with ef from ephwann_shuffle but it should not
|
||||
! matter if fstick is large enough.
|
||||
IF ( ( minval ( abs(etf (:, ikk) - ef) ) .lt. fsthick ) .AND. &
|
||||
( minval ( abs(etf (:, ikq) - ef) ) .lt. fsthick ) ) THEN
|
||||
|
||||
xkf_all(:, ik+lower_bnd - 1 ) = xkf(:,ikk)
|
||||
wkf_all(ik+lower_bnd - 1 ) = wkf(ikk)
|
||||
!
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
! energy at k (relative to Ef)
|
||||
ekk = etf (ibndmin-1+ibnd, ikk) - ef0(itemp)
|
||||
!
|
||||
! This is to know if we need to store the data
|
||||
! derivative Fermi distribution
|
||||
! (-df_nk/dE_nk) = (f_nk)*(1-f_nk)/ (k_B T)
|
||||
dfnk = w0gauss( ekk*inv_etemp, -99 )*inv_etemp
|
||||
!
|
||||
DO jbnd = 1, ibndmax-ibndmin+1
|
||||
!
|
||||
! energy and fermi occupation at k+q
|
||||
ekq = etf (ibndmin-1+jbnd, ikq) - ef0(itemp)
|
||||
fmkq = wgauss( -ekq*inv_etemp, -99)
|
||||
!
|
||||
! We perform a sum over the modes
|
||||
tmp = zero
|
||||
DO imode = 1, nmodes
|
||||
!
|
||||
! the phonon frequency and bose occupation
|
||||
wq = wf (imode, iq)
|
||||
!
|
||||
! SP : Avoid if statement in inner loops
|
||||
! the coupling from Gamma acoustic phonons is negligible
|
||||
IF ( wq .gt. eps_acustic ) THEN
|
||||
g2_tmp = 1.0
|
||||
wgq = wgauss( -wq*inv_etemp, -99)
|
||||
wgq = wgq / ( one - two * wgq )
|
||||
! SP : Define the inverse for efficiency
|
||||
inv_wq = 1.0/(two * wq)
|
||||
ELSE
|
||||
g2_tmp = 0.0
|
||||
wgq = 0.0
|
||||
inv_wq = 0.0
|
||||
ENDIF
|
||||
!
|
||||
! here we take into account the zero-point sqrt(hbar/2M\omega)
|
||||
! with hbar = 1 and M already contained in the eigenmodes
|
||||
! g2 is Ry^2, wkf must already account for the spin factor
|
||||
!
|
||||
! In case of q=\Gamma, then the short-range = the normal g. We therefore
|
||||
! need to treat it like the normal g with abs(g).
|
||||
IF ( shortrange .AND. ( abs(xqf (1, iq))> eps2 .OR. abs(xqf (2, iq))> eps2 &
|
||||
.OR. abs(xqf (3, iq))> eps2 )) THEN
|
||||
! SP: The abs has to be removed. Indeed the epf17 can be a pure imaginary
|
||||
! number, in which case its square will be a negative number.
|
||||
g2 = REAL( (epf17 (jbnd, ibnd, imode, ik)**two)*inv_wq*g2_tmp, KIND=DP )
|
||||
ELSE
|
||||
g2 = (abs(epf17 (jbnd, ibnd, imode, ik))**two)*inv_wq*g2_tmp
|
||||
ENDIF
|
||||
!
|
||||
! delta[E_k - E_k+q + w_q] and delta[E_k - E_k+q - w_q]
|
||||
w0g1 = w0gauss( (ekk-ekq+wq) * inv_degaussw, 0) * inv_degaussw
|
||||
w0g2 = w0gauss( (ekk-ekq-wq) * inv_degaussw, 0) * inv_degaussw
|
||||
!
|
||||
! transition probability
|
||||
! (2 pi/hbar) * (k+q-point weight) * g2 *
|
||||
! { [f(E_k+q) + n(w_q)] * delta[E_k - E_k+q + w_q] +
|
||||
! [1 - f(E_k+q) + n(w_q)] * delta[E_k - E_k+q - w_q] }
|
||||
!
|
||||
! This is summed over modes
|
||||
tmp = tmp + pi * wqf(iq) * g2 * ( (fmkq+wgq)*w0g1 + (one-fmkq+wgq)*w0g2 )
|
||||
!
|
||||
ENDDO !imode
|
||||
! Only save the onces that really contribute
|
||||
IF (ABS(tmp * dfnk) > 1d-40 ) THEN
|
||||
!IF (ind(my_pool_id+1)<10) print*,'ik ibnd jbnd ',ik, ibnd, jbnd
|
||||
!IF (ind(my_pool_id+1)<10) print*,'VB ekk ',ekk
|
||||
!IF (ind(my_pool_id+1)<10) print*,'VB ekq ',ekq
|
||||
!IF (ind(my_pool_id+1)<10) print*,'VB f ',fmkq
|
||||
!IF (ind(my_pool_id+1)<10) print*,'VB g1 ',w0g1
|
||||
!IF (ind(my_pool_id+1)<10) print*,'VB g2 ',w0g2
|
||||
!IF (ind(my_pool_id+1)<10) print*,'VB tmp ',tmp
|
||||
!IF (ind (my_pool_id+1)==0) print*,tmp
|
||||
!IF (ind (my_pool_id+1)==0) print*,wqf(iq)
|
||||
!IF (ind (my_pool_id+1)==0) print*, g2
|
||||
!IF (ind (my_pool_id+1)==0) print*, fmkq
|
||||
!IF (ind (my_pool_id+1)==0) print*, wgq
|
||||
!IF (ind (my_pool_id+1)==0) print*, w0g1
|
||||
!IF (ind (my_pool_id+1)==0) print*, w0g2
|
||||
!
|
||||
ind (my_pool_id+1) = ind (my_pool_id+1) + 1
|
||||
!
|
||||
trans_prob( ind(my_pool_id+1) ) = tmp
|
||||
sparse_q ( ind(my_pool_id+1) ) = iq
|
||||
sparse_k ( ind(my_pool_id+1) ) = ik+lower_bnd-1
|
||||
!print*,'index sp_k ',ind(my_pool_id+1), sparse_k (ind(my_pool_id+1) )
|
||||
sparse_i ( ind(my_pool_id+1) ) = ibnd
|
||||
sparse_j ( ind(my_pool_id+1) ) = jbnd
|
||||
sparse_t ( ind(my_pool_id+1) ) = itemp
|
||||
! IF (ik+lower_bnd-1 == 2) print*,ind (my_pool_id+1)+ind_tot, tmp
|
||||
! print*,ind (my_pool_id+1)+ind_tot, iq, ik, ibnd, jbnd, itemp
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
ENDDO !jbnd
|
||||
ENDDO ! ibnd
|
||||
!
|
||||
! In this case we are also computing the scattering rate for another Fermi level position
|
||||
! This is used to compute both the electron and hole mobility at the same time.
|
||||
IF ( ABS(efcb(itemp)) > eps ) THEN
|
||||
!
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
!
|
||||
! energy at k (relative to Ef)
|
||||
ekk = etf (ibndmin-1+ibnd, ikk) - efcb(itemp)
|
||||
! This is to know if we need to store the data
|
||||
! derivative Fermi distribution
|
||||
! (-df_nk/dE_nk) = (f_nk)*(1-f_nk)/ (k_B T)
|
||||
dfnk = w0gauss( ekk*inv_etemp, -99 )*inv_etemp
|
||||
!
|
||||
DO jbnd = 1, ibndmax-ibndmin+1
|
||||
!
|
||||
! energy and fermi occupation at k+q
|
||||
ekq = etf (ibndmin-1+jbnd, ikq) - efcb(itemp)
|
||||
fmkq = wgauss( -ekq*inv_etemp, -99)
|
||||
!
|
||||
tmp = zero
|
||||
DO imode = 1, nmodes
|
||||
!
|
||||
! the phonon frequency and bose occupation
|
||||
wq = wf (imode, iq)
|
||||
!
|
||||
! SP : Avoid if statement in inner loops
|
||||
! the coupling from Gamma acoustic phonons is negligible
|
||||
IF ( wq .gt. eps_acustic ) THEN
|
||||
g2_tmp = 1.0
|
||||
wgq = wgauss( -wq*inv_etemp, -99)
|
||||
wgq = wgq / ( one - two * wgq )
|
||||
! SP : Define the inverse for efficiency
|
||||
inv_wq = 1.0/(two * wq)
|
||||
ELSE
|
||||
g2_tmp = 0.0
|
||||
wgq = 0.0
|
||||
inv_wq = 0.0
|
||||
ENDIF
|
||||
!
|
||||
! here we take into account the zero-point sqrt(hbar/2M\omega)
|
||||
! with hbar = 1 and M already contained in the eigenmodes
|
||||
! g2 is Ry^2, wkf must already account for the spin factor
|
||||
!
|
||||
! In case of q=\Gamma, then the short-range = the normal g. We therefore
|
||||
! need to treat it like the normal g with abs(g).
|
||||
IF ( shortrange .AND. ( abs(xqf (1, iq))> eps2 .OR. abs(xqf (2, iq))> eps2 &
|
||||
.OR. abs(xqf (3, iq))> eps2 )) THEN
|
||||
! SP: The abs has to be removed. Indeed the epf17 can be a pure imaginary
|
||||
! number, in which case its square will be a negative number.
|
||||
g2 = REAL( (epf17 (jbnd, ibnd, imode, ik)**two)*inv_wq*g2_tmp, KIND=DP)
|
||||
ELSE
|
||||
g2 = (abs(epf17 (jbnd, ibnd, imode, ik))**two)*inv_wq*g2_tmp
|
||||
ENDIF
|
||||
!
|
||||
! delta[E_k - E_k+q + w_q] and delta[E_k - E_k+q - w_q]
|
||||
w0g1 = w0gauss( (ekk-ekq+wq) * inv_degaussw, 0) * inv_degaussw
|
||||
w0g2 = w0gauss( (ekk-ekq-wq) * inv_degaussw, 0) * inv_degaussw
|
||||
!
|
||||
! transition probability
|
||||
! (2 pi/hbar) * (k+q-point weight) * g2 *
|
||||
! { [f(E_k+q) + n(w_q)] * delta[E_k - E_k+q + w_q] +
|
||||
! [1 - f(E_k+q) + n(w_q)] * delta[E_k - E_k+q - w_q] }
|
||||
!
|
||||
! This is summed over modes
|
||||
tmp = tmp + pi * wqf(iq) * g2 * ( (fmkq+wgq)*w0g1 + (one-fmkq+wgq)*w0g2 )
|
||||
!
|
||||
ENDDO ! imode
|
||||
!
|
||||
! Only save the onces that really contribute
|
||||
IF (ABS(tmp * dfnk) > 1d-40 ) THEN
|
||||
indcb (my_pool_id+1) = indcb (my_pool_id+1) + 1
|
||||
!
|
||||
trans_probcb ( indcb(my_pool_id+1) ) = tmp
|
||||
sparsecb_q ( indcb(my_pool_id+1) ) = iq
|
||||
sparsecb_k ( indcb(my_pool_id+1) ) = ik+lower_bnd-1
|
||||
sparsecb_i ( indcb(my_pool_id+1) ) = ibnd
|
||||
sparsecb_j ( indcb(my_pool_id+1) ) = jbnd
|
||||
sparsecb_t ( indcb(my_pool_id+1) ) = itemp
|
||||
!
|
||||
ENDIF
|
||||
|
||||
!
|
||||
ENDDO !jbnd
|
||||
!
|
||||
ENDDO !ibnd
|
||||
!
|
||||
ENDIF ! ABS(efcb) < eps
|
||||
!
|
||||
!print*,'trans_probcb(jbnd,ibnd,itemp,k_all(my_pool_id+1)) ',trans_probcb(1,1,1,k_all(my_pool_id+1))
|
||||
ENDIF ! endif fsthick
|
||||
!
|
||||
ENDDO ! end loop on k
|
||||
ENDDO ! itemp
|
||||
! If the q-point is taken, write on file
|
||||
CALL mp_sum( ind, world_comm )
|
||||
CALL mp_sum( indcb, world_comm )
|
||||
!
|
||||
IF ( sum(ind) > 0 ) THEN
|
||||
!
|
||||
IF ( my_pool_id == 0 ) ind_tot = ind_tot + SUM(ind)
|
||||
!CALL mp_bcast (ind_tot, ionode_id, world_comm)
|
||||
CALL MPI_BCAST( ind_tot, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
! Can be uncommented
|
||||
! WRITE(stdout,'(a,i9,E22.8)') ' Total number of element written ',ind_tot
|
||||
!
|
||||
! Size of what we write
|
||||
lsize = INT( ind(my_pool_id+1), kind = MPI_OFFSET_KIND )
|
||||
|
||||
! Offset where we need to start writing (we increment for each q-points)
|
||||
lrepmatw = lrepmatw2 + &
|
||||
INT( SUM( ind(1:my_pool_id+1)) - ind(my_pool_id+1), kind = MPI_OFFSET_KIND ) * 8_MPI_OFFSET_KIND
|
||||
lrepmatw3 = lrepmatw4 + &
|
||||
INT( SUM( ind(1:my_pool_id+1)) - ind(my_pool_id+1), kind = MPI_OFFSET_KIND ) * 4_MPI_OFFSET_KIND
|
||||
!
|
||||
CALL MPI_FILE_SEEK(iunepmat, lrepmatw,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunepmat, trans_prob, lsize, MPI_DOUBLE_PRECISION,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
CALL MPI_FILE_SEEK (iunsparseq, lrepmatw3,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunsparseq, sparse_q, lsize, MPI_INTEGER4,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
CALL MPI_FILE_SEEK (iunsparsek, lrepmatw3,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunsparsek, sparse_k, lsize, MPI_INTEGER4,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
CALL MPI_FILE_SEEK (iunsparsei, lrepmatw3,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunsparsei, sparse_i, lsize, MPI_INTEGER4,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
CALL MPI_FILE_SEEK (iunsparsej, lrepmatw3,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunsparsej, sparse_j, lsize, MPI_INTEGER4,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
CALL MPI_FILE_SEEK (iunsparset, lrepmatw3,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunsparset, sparse_t, lsize, MPI_INTEGER4,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
! Offset for the next q iteration
|
||||
lrepmatw2 = lrepmatw2 + INT( SUM( ind(:) ), kind = MPI_OFFSET_KIND ) * 8_MPI_OFFSET_KIND
|
||||
lrepmatw4 = lrepmatw4 + INT( SUM( ind(:) ), kind = MPI_OFFSET_KIND ) * 4_MPI_OFFSET_KIND
|
||||
!
|
||||
! now write in the support file
|
||||
CALL mp_sum(xkf_all, world_comm)
|
||||
CALL mp_sum(wkf_all, world_comm)
|
||||
!
|
||||
ENDIF
|
||||
IF ( sum(indcb) > 0 ) THEN
|
||||
!
|
||||
IF ( my_pool_id == 0 ) ind_totcb = ind_totcb + SUM(indcb)
|
||||
!CALL mp_bcast (ind_totcb, ionode_id, world_comm)
|
||||
CALL MPI_BCAST( ind_totcb, 1, MPI_OFFSET, ionode_id, world_comm, ierr)
|
||||
! WRITE(stdout,'(a,i9,E22.8)') ' Total number of element written in electron ',ind_totcb
|
||||
!
|
||||
! Size of what we write
|
||||
lsize = INT( indcb(my_pool_id+1), kind = MPI_OFFSET_KIND )
|
||||
|
||||
! Offset where we need to start writing (we increment for each q-points)
|
||||
lrepmatw = lrepmatw5 + &
|
||||
INT( SUM( indcb(1:my_pool_id+1)) - indcb(my_pool_id+1), kind = MPI_OFFSET_KIND ) * 8_MPI_OFFSET_KIND
|
||||
lrepmatw3 = lrepmatw6 + &
|
||||
INT( SUM( indcb(1:my_pool_id+1)) - indcb(my_pool_id+1), kind = MPI_OFFSET_KIND ) * 4_MPI_OFFSET_KIND
|
||||
!
|
||||
CALL MPI_FILE_SEEK(iunepmatcb, lrepmatw,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunepmatcb, trans_probcb, lsize, MPI_DOUBLE_PRECISION,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
CALL MPI_FILE_SEEK (iunsparseqcb, lrepmatw3,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunsparseqcb, sparsecb_q, lsize, MPI_INTEGER4,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
CALL MPI_FILE_SEEK (iunsparsekcb, lrepmatw3,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunsparsekcb, sparsecb_k, lsize, MPI_INTEGER4,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
CALL MPI_FILE_SEEK (iunsparseicb, lrepmatw3,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunsparseicb, sparsecb_i, lsize, MPI_INTEGER4,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
CALL MPI_FILE_SEEK (iunsparsejcb, lrepmatw3,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunsparsejcb, sparsecb_j, lsize, MPI_INTEGER4,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
CALL MPI_FILE_SEEK (iunsparsetcb, lrepmatw3,MPI_SEEK_SET,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_SEEK',1 )
|
||||
CALL MPI_FILE_WRITE(iunsparsetcb, sparsecb_t, lsize, MPI_INTEGER4,MPI_STATUS_IGNORE,ierr)
|
||||
IF( ierr /= 0 ) CALL errore( 'print_ibte', 'error in MPI_FILE_WRITE',1 )
|
||||
!
|
||||
! Offset for the next q iteration
|
||||
lrepmatw5 = lrepmatw5 + INT( SUM( indcb(:) ), kind = MPI_OFFSET_KIND ) * 8_MPI_OFFSET_KIND
|
||||
lrepmatw6 = lrepmatw6 + INT( SUM( indcb(:) ), kind = MPI_OFFSET_KIND ) * 4_MPI_OFFSET_KIND
|
||||
!
|
||||
ENDIF ! indcb
|
||||
!
|
||||
! Save to file restart information in formatted way for possible restart
|
||||
IF (my_pool_id == 0) THEN
|
||||
OPEN(unit=iunrestart,file='restart_ibte.fmt')
|
||||
WRITE (iunrestart,*) iqq
|
||||
WRITE (iunrestart,*) ind_tot
|
||||
WRITE (iunrestart,*) ind_totcb
|
||||
WRITE (iunrestart,*) lrepmatw2
|
||||
WRITE (iunrestart,*) lrepmatw4
|
||||
WRITE (iunrestart,*) lrepmatw5
|
||||
WRITE (iunrestart,*) lrepmatw6
|
||||
CLOSE(iunrestart)
|
||||
ENDIF
|
||||
!
|
||||
ENDIF ! first_cycle
|
||||
!
|
||||
IF ( iqq == totq ) THEN
|
||||
wkf_all(:) = zero
|
||||
! Computes the k-velocity
|
||||
DO ik = 1, nkf
|
||||
!
|
||||
ikk = 2 * ik - 1
|
||||
!
|
||||
wkf_all( ik+lower_bnd -1 ) = wkf(ikk)
|
||||
!
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
IF ( vme ) THEN
|
||||
vkk_all(:, ibnd, ik + lower_bnd - 1) = REAL (vmef (:, ibndmin-1+ibnd, ibndmin-1+ibnd, ikk))
|
||||
ELSE
|
||||
vkk_all(:,ibnd, ik + lower_bnd -1 ) = 2.0 * REAL (dmef (:, ibndmin-1+ibnd, ibndmin-1+ibnd, ikk))
|
||||
ENDIF
|
||||
etf_all(ibnd, ik+lower_bnd-1) = etf(ibndmin-1+ibnd, ikk)
|
||||
ENDDO
|
||||
ENDDO
|
||||
CALL mp_sum ( vkk_all, world_comm )
|
||||
CALL mp_sum ( etf_all, world_comm )
|
||||
CALL mp_sum ( wkf_all, world_comm )
|
||||
!
|
||||
IF ( my_pool_id == 0 ) THEN
|
||||
|
||||
! Now write total number of q-point inside and k-velocity
|
||||
!
|
||||
OPEN(iufilibtev_sup,file='IBTEvel_sup.fmt', form='formatted')
|
||||
WRITE(iufilibtev_sup,'(a)') '# Number of elements in hole and electrons '
|
||||
WRITE(iufilibtev_sup,'(2i16)') ind_tot, ind_totcb
|
||||
WRITE(iufilibtev_sup,'(a)') '# itemp ef0 efcb'
|
||||
DO itemp=1, nstemp
|
||||
WRITE(iufilibtev_sup,'(i8,2E22.12)') itemp, ef0(itemp), efcb(itemp)
|
||||
ENDDO
|
||||
WRITE(iufilibtev_sup,'(a)') '# ik ibnd velocity (x,y,z) eig weight '
|
||||
DO ik = 1, nkqtotf/2
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
WRITE(iufilibtev_sup,'(i8,i6,5E22.12)') ik, ibnd, vkk_all(:,ibnd,ik), etf_all(ibnd, ik), wkf_all(ik)
|
||||
ENDDO
|
||||
ENDDO
|
||||
CLOSE(iufilibtev_sup)
|
||||
!
|
||||
ENDIF ! master
|
||||
!
|
||||
! Now print the carrier density for checking
|
||||
DO itemp=1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
carrier_density = 0.0
|
||||
!
|
||||
DO ik = 1, nkf
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
! This selects only valence bands for hole conduction
|
||||
IF (etf_all (ibnd, ik+lower_bnd-1 ) < ef0(itemp) ) THEN
|
||||
! energy at k (relative to Ef)
|
||||
ekk = etf_all (ibnd, ik+lower_bnd-1 ) - ef0(itemp)
|
||||
fnk = wgauss( -ekk / etemp, -99)
|
||||
! The wkf(ikk) already include a factor 2
|
||||
carrier_density = carrier_density + wkf_all(ik+lower_bnd-1 ) * (1.0d0 - fnk )
|
||||
ENDIF
|
||||
ENDDO
|
||||
ENDDO
|
||||
CALL mp_sum( carrier_density, world_comm )
|
||||
carrier_density = carrier_density * inv_cell * ( bohr2ang * ang2cm)**(-3)
|
||||
WRITE(stdout,'(5x, 1f8.3, 1f12.4, 1E19.6)') etemp *ryd2ev/kelvin2eV, &
|
||||
ef0(itemp)*ryd2ev, carrier_density
|
||||
ENDDO
|
||||
!
|
||||
ENDIF ! iqq
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
END SUBROUTINE print_ibte
|
||||
!-----------------------------------------------------------------------
|
|
@ -34,6 +34,7 @@
|
|||
USE mp_global, ONLY : inter_pool_comm
|
||||
USE mp_world, ONLY : mpime
|
||||
USE io_global, ONLY : ionode_id
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
|
@ -248,10 +249,10 @@
|
|||
!
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE print_serta( F_SERTA, BZtoIBZ, s_BZtoIBZ, vkk_all, etf_all, wkf_all, ef0)
|
||||
SUBROUTINE print_serta_sym( F_SERTA, BZtoIBZ, s_BZtoIBZ, vkk_all, etf_all, wkf_all, ef0)
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! This subroutine prints the mobility
|
||||
!! This subroutine prints the SERTA mobility using k-point symmetry.
|
||||
!!
|
||||
!-----------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP
|
||||
|
@ -348,7 +349,6 @@
|
|||
!! Compute the approximate theta function. Here computes Fermi-Dirac
|
||||
REAL(KIND=DP), EXTERNAL :: w0gauss
|
||||
!! The derivative of wgauss: an approximation to the delta function
|
||||
|
||||
!
|
||||
inv_cell = 1.0d0/omega
|
||||
!
|
||||
|
@ -579,16 +579,272 @@
|
|||
!
|
||||
ENDIF
|
||||
|
||||
RETURN
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
END SUBROUTINE print_serta_sym
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE print_serta( F_SERTA, vkk_all, etf_all, wkf_all, ef0)
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! This subroutine prints the SERTA mobility
|
||||
!!
|
||||
!-----------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
USE cell_base, ONLY : at, omega, bg
|
||||
USE epwcom, ONLY : int_mob, ncarrier, nstemp, &
|
||||
nkf1, nkf2, nkf3
|
||||
USE elph2, ONLY : nkf, ibndmax, ibndmin, nkqtotf
|
||||
USE transportcom, ONLY : lower_bnd, transp_temp
|
||||
USE constants_epw, ONLY : zero, two, pi, kelvin2eV, ryd2ev, eps10, &
|
||||
electron_SI, bohr2ang, ang2cm, hbarJ
|
||||
USE noncollin_module, ONLY : noncolin
|
||||
USE mp_global, ONLY : world_comm, my_pool_id
|
||||
USE mp, ONLY : mp_sum
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
REAL(kind=DP), INTENT(in) :: F_SERTA(3, ibndmax-ibndmin+1, nkqtotf/2, nstemp)
|
||||
!! SERTA solution
|
||||
REAL(KIND=DP), INTENT(IN) :: vkk_all(3,ibndmax-ibndmin+1,nkqtotf/2)
|
||||
!! Velocity
|
||||
REAL(KIND=DP), INTENT(IN) :: etf_all(ibndmax-ibndmin+1,nkqtotf/2)
|
||||
!! Eigenenergies of k
|
||||
REAL(KIND=DP), INTENT(IN) :: wkf_all(nkqtotf/2)
|
||||
!! Weight of k
|
||||
REAL(KIND=DP), INTENT(IN) :: ef0(nstemp)
|
||||
!! The Fermi level
|
||||
|
||||
! Local variables
|
||||
INTEGER :: itemp
|
||||
!! temperature index
|
||||
INTEGER :: ik
|
||||
!! k-point index
|
||||
INTEGER :: ibnd
|
||||
!! band index
|
||||
INTEGER :: ij
|
||||
!! Combined x,y,z index
|
||||
INTEGER :: i,j
|
||||
!! Cartesian index
|
||||
!
|
||||
REAL(KIND=DP) :: etemp
|
||||
!! Temperature in Ry (this includes division by kb)
|
||||
REAL(KIND=DP) :: tdf_sigma(9)
|
||||
!! Transport distribution function
|
||||
REAL(KIND=DP) :: Sigma(9,nstemp)
|
||||
!! Electrical conductivity
|
||||
REAL(KIND=DP) :: ekk
|
||||
!! Energy relative to Fermi level: $$\varepsilon_{n\mathbf{k}}-\varepsilon_F$$
|
||||
REAL(KIND=DP) :: dfnk
|
||||
!! Derivative Fermi distribution $$-df_{nk}/dE_{nk}$$
|
||||
REAL(KIND=DP) :: carrier_density
|
||||
!! Carrier density [nb of carrier per unit cell]
|
||||
REAL(KIND=DP) :: fnk
|
||||
!! Fermi-Dirac occupation function
|
||||
REAL(KIND=DP) :: mobility
|
||||
!! Sum of the diagonalized mobilities [cm^2/Vs]
|
||||
REAL(KIND=DP) :: mobility_xx
|
||||
!! Mobility along the xx axis after diagonalization [cm^2/Vs]
|
||||
REAL(KIND=DP) :: mobility_yy
|
||||
!! Mobility along the yy axis after diagonalization [cm^2/Vs]
|
||||
REAL(KIND=DP) :: mobility_zz
|
||||
!! Mobility along the zz axis after diagonalization [cm^2/Vs]
|
||||
REAL(KIND=DP) :: sigma_up(3,3)
|
||||
!! Conductivity matrix in upper-triangle
|
||||
REAL(KIND=DP) :: sigma_eig(3)
|
||||
!! Eigenvalues from the diagonalized conductivity matrix
|
||||
REAL(KIND=DP) :: sigma_vect(3,3)
|
||||
!! Eigenvectors from the diagonalized conductivity matrix
|
||||
REAL(KIND=DP) :: inv_cell
|
||||
!! Inverse of the volume in [Bohr^{-3}]
|
||||
REAL(KIND=DP), EXTERNAL :: wgauss
|
||||
!! Compute the approximate theta function. Here computes Fermi-Dirac
|
||||
REAL(KIND=DP), EXTERNAL :: w0gauss
|
||||
!! The derivative of wgauss: an approximation to the delta function
|
||||
|
||||
!
|
||||
inv_cell = 1.0d0/omega
|
||||
!
|
||||
! Hole
|
||||
IF (ncarrier < -1E5) THEN
|
||||
Sigma(:,:) = zero
|
||||
!
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]")')
|
||||
WRITE(stdout,'(5x,a/)') repeat('=',67)
|
||||
DO itemp=1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
DO ik=1, nkqtotf/2
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
IF (etf_all (ibnd, ik) < ef0(itemp) ) THEN
|
||||
tdf_sigma(:) = zero
|
||||
!
|
||||
ij = 0
|
||||
DO j = 1, 3
|
||||
DO i = 1, 3
|
||||
ij = ij + 1
|
||||
tdf_sigma(ij) = vkk_all(i, ibnd, ik) * F_SERTA(j, ibnd, ik, itemp) * wkf_all(ik)
|
||||
ENDDO
|
||||
ENDDO
|
||||
!
|
||||
! energy at k (relative to Ef)
|
||||
ekk = etf_all (ibnd, ik ) - ef0(itemp)
|
||||
!
|
||||
! derivative Fermi distribution
|
||||
! (-df_nk/dE_nk) = (f_nk)*(1-f_nk)/ (k_B T)
|
||||
dfnk = w0gauss( ekk / etemp, -99 ) / etemp
|
||||
!
|
||||
! electrical conductivity
|
||||
Sigma(:,itemp) = Sigma(:,itemp) + dfnk * tdf_sigma(:)
|
||||
!
|
||||
ENDIF ! if below Fermi level
|
||||
ENDDO ! ibnd
|
||||
ENDDO ! ik
|
||||
ENDDO ! itemp
|
||||
!
|
||||
DO itemp=1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
carrier_density = 0.0
|
||||
!
|
||||
DO ik = 1, nkqtotf/2
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
! This selects only valence bands for hole conduction
|
||||
IF (etf_all (ibnd, ik ) < ef0(itemp) ) THEN
|
||||
! energy at k (relative to Ef)
|
||||
ekk = etf_all (ibnd, ik ) - ef0(itemp)
|
||||
fnk = wgauss( -ekk / etemp, -99)
|
||||
! The wkf(ikk) already include a factor 2
|
||||
carrier_density = carrier_density + wkf_all(ik ) * (1.0d0 - fnk )
|
||||
ENDIF
|
||||
ENDDO
|
||||
ENDDO
|
||||
!
|
||||
sigma_up(:,:) = zero
|
||||
sigma_up(1,1) = Sigma(1,itemp)
|
||||
sigma_up(1,2) = Sigma(2,itemp)
|
||||
sigma_up(1,3) = Sigma(3,itemp)
|
||||
sigma_up(2,1) = Sigma(4,itemp)
|
||||
sigma_up(2,2) = Sigma(5,itemp)
|
||||
sigma_up(2,3) = Sigma(6,itemp)
|
||||
sigma_up(3,1) = Sigma(7,itemp)
|
||||
sigma_up(3,2) = Sigma(8,itemp)
|
||||
sigma_up(3,3) = Sigma(9,itemp)
|
||||
!
|
||||
! Diagonalize the conductivity matrix
|
||||
CALL rdiagh(3,sigma_up,3,sigma_eig,sigma_vect)
|
||||
!
|
||||
mobility_xx = ( sigma_eig(1) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility_yy = ( sigma_eig(2) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility_zz = ( sigma_eig(3) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility = (mobility_xx+mobility_yy+mobility_zz)/3
|
||||
! carrier_density in cm^-1
|
||||
carrier_density = carrier_density * inv_cell * ( bohr2ang * ang2cm)**(-3)
|
||||
WRITE(stdout,'(5x, 1f8.3, 1f12.4, 1E19.6, 1E19.6, a)') etemp * ryd2ev/kelvin2eV, &
|
||||
ef0(itemp)*ryd2ev, carrier_density, mobility_xx, ' x-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility_yy, ' y-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility_zz, ' z-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility, ' avg'
|
||||
ENDDO
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
! Now electron mobility
|
||||
IF (ncarrier > 1E5) THEN
|
||||
! Needed because of residual values from the hole above
|
||||
Sigma(:,:) = zero
|
||||
!
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
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)
|
||||
DO ik=1, nkqtotf/2
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
IF (etf_all (ibnd, ik) > ef0(itemp) ) THEN
|
||||
tdf_sigma(:) = zero
|
||||
ij = 0
|
||||
DO j = 1, 3
|
||||
DO i = 1, 3
|
||||
ij = ij + 1
|
||||
tdf_sigma(ij) = vkk_all(i, ibnd, ik) * F_SERTA(j, ibnd, ik, itemp) * wkf_all(ik)
|
||||
ENDDO
|
||||
ENDDO
|
||||
!
|
||||
! energy at k (relative to Ef)
|
||||
ekk = etf_all (ibnd, ik) - ef0(itemp)
|
||||
!
|
||||
! derivative Fermi distribution
|
||||
! (-df_nk/dE_nk) = (f_nk)*(1-f_nk)/ (k_B T)
|
||||
dfnk = w0gauss( ekk / etemp, -99 ) / etemp
|
||||
!
|
||||
! electrical conductivity
|
||||
Sigma(:,itemp) = Sigma(:,itemp) + dfnk * tdf_sigma(:)
|
||||
!
|
||||
ENDIF ! if below Fermi level
|
||||
ENDDO ! ibnd
|
||||
ENDDO ! ik
|
||||
ENDDO ! itemp
|
||||
!CALL mp_sum( Sigma(:,:), world_comm )
|
||||
DO itemp=1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
carrier_density = 0.0
|
||||
!
|
||||
DO ik = 1, nkqtotf/2
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
! This selects only valence bands for electron conduction
|
||||
IF (etf_all (ibnd, ik) > ef0(itemp) ) THEN
|
||||
! energy at k (relative to Ef)
|
||||
ekk = etf_all (ibnd, ik) - ef0(itemp)
|
||||
fnk = wgauss( -ekk / etemp, -99)
|
||||
! The wkf(ikk) already include a factor 2
|
||||
carrier_density = carrier_density + wkf_all(ik) * fnk
|
||||
ENDIF
|
||||
ENDDO
|
||||
ENDDO
|
||||
!CALL mp_sum( carrier_density, world_comm )
|
||||
!
|
||||
sigma_up(:,:) = zero
|
||||
sigma_up(1,1) = Sigma(1,itemp)
|
||||
sigma_up(1,2) = Sigma(2,itemp)
|
||||
sigma_up(1,3) = Sigma(3,itemp)
|
||||
sigma_up(2,1) = Sigma(4,itemp)
|
||||
sigma_up(2,2) = Sigma(5,itemp)
|
||||
sigma_up(2,3) = Sigma(6,itemp)
|
||||
sigma_up(3,1) = Sigma(7,itemp)
|
||||
sigma_up(3,2) = Sigma(8,itemp)
|
||||
sigma_up(3,3) = Sigma(9,itemp)
|
||||
!
|
||||
! Diagonalize the conductivity matrix
|
||||
CALL rdiagh(3,sigma_up,3,sigma_eig,sigma_vect)
|
||||
!
|
||||
mobility_xx = ( sigma_eig(1) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility_yy = ( sigma_eig(2) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility_zz = ( sigma_eig(3) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility = (mobility_xx+mobility_yy+mobility_zz)/3
|
||||
! carrier_density in cm^-1
|
||||
carrier_density = carrier_density * inv_cell * ( bohr2ang * ang2cm)**(-3)
|
||||
WRITE(stdout,'(5x, 1f8.3, 1f12.4, 1E19.6, 1E19.6, a)') etemp * ryd2ev/kelvin2eV, &
|
||||
ef0(itemp)*ryd2ev, carrier_density, mobility_xx, ' x-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility_yy, ' y-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility_zz, ' z-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility, ' avg'
|
||||
ENDDO
|
||||
!
|
||||
ENDIF
|
||||
|
||||
RETURN
|
||||
!
|
||||
END SUBROUTINE print_serta
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE print_mob( F_out, BZtoIBZ, s_BZtoIBZ, vkk_all, etf_all, wkf_all, ef0, av_mob)
|
||||
SUBROUTINE print_mob_sym( F_out, BZtoIBZ, s_BZtoIBZ, vkk_all, etf_all, wkf_all, ef0, av_mob)
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! This subroutine prints the mobility ( electron or hole )
|
||||
!! This subroutine prints the mobility using k-point symmetry ( electron or hole )
|
||||
!!
|
||||
!-----------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP
|
||||
|
@ -912,6 +1168,265 @@
|
|||
!
|
||||
RETURN
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
END SUBROUTINE print_mob_sym
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE print_mob( F_out, vkk_all, etf_all, wkf_all, ef0, av_mob)
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! This subroutine prints the mobility ( electron or hole )
|
||||
!!
|
||||
!-----------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
USE cell_base, ONLY : at, omega, bg
|
||||
USE epwcom, ONLY : int_mob, ncarrier, nstemp, &
|
||||
nkf1, nkf2, nkf3
|
||||
USE elph2, ONLY : nkf, ibndmax, ibndmin, nkqtotf
|
||||
USE transportcom, ONLY : lower_bnd, transp_temp
|
||||
USE constants_epw, ONLY : zero, two, pi, kelvin2eV, ryd2ev, eps10, &
|
||||
electron_SI, bohr2ang, ang2cm, hbarJ
|
||||
USE noncollin_module, ONLY : noncolin
|
||||
USE mp_global, ONLY : world_comm
|
||||
USE mp, ONLY : mp_sum
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
REAL(kind=DP), INTENT(IN) :: F_out(3, ibndmax-ibndmin+1, nkqtotf/2, nstemp)
|
||||
!! SERTA solution
|
||||
REAL(KIND=DP), INTENT(IN) :: vkk_all(3,ibndmax-ibndmin+1,nkqtotf/2)
|
||||
!! Velocity
|
||||
REAL(KIND=DP), INTENT(IN) :: etf_all(ibndmax-ibndmin+1,nkqtotf/2)
|
||||
!! Eigenenergies of k
|
||||
REAL(KIND=DP), INTENT(IN) :: wkf_all(nkqtotf/2)
|
||||
!! Weight of k
|
||||
REAL(KIND=DP), INTENT(IN) :: ef0(nstemp)
|
||||
!! The Fermi level
|
||||
REAL(KIND=DP), INTENT(INOUT) :: av_mob(nstemp)
|
||||
!! Maximum error for all temperature
|
||||
|
||||
! Local variables
|
||||
INTEGER :: itemp
|
||||
!! temperature index
|
||||
INTEGER :: ik
|
||||
!! k-point index
|
||||
INTEGER :: ibnd
|
||||
!! band index
|
||||
INTEGER :: nb
|
||||
!! Number of points equivalent by sym from BZ to IBTZ
|
||||
INTEGER :: ij
|
||||
!! Combined x,y,z index
|
||||
INTEGER :: i,j
|
||||
!! Cartesian index
|
||||
!
|
||||
REAL(KIND=DP) :: etemp
|
||||
!! Temperature in Ry (this includes division by kb)
|
||||
REAL(KIND=DP) :: tdf_sigma(9)
|
||||
!! Transport distribution function
|
||||
REAL(KIND=DP) :: Sigma(9,nstemp)
|
||||
!! Electrical conductivity
|
||||
REAL(KIND=DP) :: ekk
|
||||
!! Energy relative to Fermi level: $$\varepsilon_{n\mathbf{k}}-\varepsilon_F$$
|
||||
REAL(KIND=DP) :: dfnk
|
||||
!! Derivative Fermi distribution $$-df_{nk}/dE_{nk}$$
|
||||
REAL(KIND=DP) :: carrier_density
|
||||
!! Carrier density [nb of carrier per unit cell]
|
||||
REAL(KIND=DP) :: fnk
|
||||
!! Fermi-Dirac occupation function
|
||||
REAL(KIND=DP) :: mobility
|
||||
!! Sum of the diagonalized mobilities [cm^2/Vs]
|
||||
REAL(KIND=DP) :: mobility_xx
|
||||
!! Mobility along the xx axis after diagonalization [cm^2/Vs]
|
||||
REAL(KIND=DP) :: mobility_yy
|
||||
!! Mobility along the yy axis after diagonalization [cm^2/Vs]
|
||||
REAL(KIND=DP) :: mobility_zz
|
||||
!! Mobility along the zz axis after diagonalization [cm^2/Vs]
|
||||
REAL(KIND=DP) :: sigma_up(3,3)
|
||||
!! Conductivity matrix in upper-triangle
|
||||
REAL(KIND=DP) :: sigma_eig(3)
|
||||
!! Eigenvalues from the diagonalized conductivity matrix
|
||||
REAL(KIND=DP) :: sigma_vect(3,3)
|
||||
!! Eigenvectors from the diagonalized conductivity matrix
|
||||
REAL(KIND=DP) :: inv_cell
|
||||
!! Inverse of the volume in [Bohr^{-3}]
|
||||
REAL(KIND=DP), EXTERNAL :: wgauss
|
||||
!! Compute the approximate theta function. Here computes Fermi-Dirac
|
||||
REAL(KIND=DP), EXTERNAL :: w0gauss
|
||||
!! The derivative of wgauss: an approximation to the delta function
|
||||
|
||||
!
|
||||
inv_cell = 1.0d0/omega
|
||||
!
|
||||
IF (ncarrier < -1E5) THEN ! If true print hole
|
||||
Sigma(:,:) = zero
|
||||
!
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]")')
|
||||
WRITE(stdout,'(5x,a/)') repeat('=',67)
|
||||
DO itemp=1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
DO ik=1, nkqtotf/2
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
IF (etf_all (ibnd, ik) < ef0(itemp) ) THEN
|
||||
tdf_sigma(:) = zero
|
||||
ij = 0
|
||||
DO j = 1, 3
|
||||
DO i = 1, 3
|
||||
ij = ij + 1
|
||||
tdf_sigma(ij) = vkk_all(i, ibnd, ik) * F_out(j, ibnd, ik, itemp) * wkf_all(ik)
|
||||
ENDDO
|
||||
ENDDO
|
||||
!
|
||||
! energy at k (relative to Ef)
|
||||
ekk = etf_all (ibnd, ik) - ef0(itemp)
|
||||
!
|
||||
! derivative Fermi distribution
|
||||
! (-df_nk/dE_nk) = (f_nk)*(1-f_nk)/ (k_B T)
|
||||
dfnk = w0gauss( ekk / etemp, -99 ) / etemp
|
||||
!
|
||||
! electrical conductivity
|
||||
Sigma(:,itemp) = Sigma(:,itemp) + dfnk * tdf_sigma(:)
|
||||
!
|
||||
ENDIF ! if below Fermi level
|
||||
ENDDO ! ibnd
|
||||
ENDDO ! ik
|
||||
ENDDO ! itemp
|
||||
!
|
||||
DO itemp=1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
carrier_density = 0.0
|
||||
!
|
||||
DO ik = 1, nkqtotf/2
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
! This selects only valence bands for hole conduction
|
||||
IF (etf_all (ibnd, ik) < ef0(itemp) ) THEN
|
||||
! energy at k (relative to Ef)
|
||||
ekk = etf_all (ibnd, ik) - ef0(itemp)
|
||||
fnk = wgauss( -ekk / etemp, -99)
|
||||
! The wkf(ikk) already include a factor 2
|
||||
carrier_density = carrier_density + wkf_all(ik) * (1.0d0 - fnk )
|
||||
ENDIF
|
||||
ENDDO
|
||||
ENDDO
|
||||
!
|
||||
sigma_up(:,:) = zero
|
||||
sigma_up(1,1) = Sigma(1,itemp)
|
||||
sigma_up(1,2) = Sigma(2,itemp)
|
||||
sigma_up(1,3) = Sigma(3,itemp)
|
||||
sigma_up(2,1) = Sigma(4,itemp)
|
||||
sigma_up(2,2) = Sigma(5,itemp)
|
||||
sigma_up(2,3) = Sigma(6,itemp)
|
||||
sigma_up(3,1) = Sigma(7,itemp)
|
||||
sigma_up(3,2) = Sigma(8,itemp)
|
||||
sigma_up(3,3) = Sigma(9,itemp)
|
||||
!
|
||||
! Diagonalize the conductivity matrix
|
||||
CALL rdiagh(3,sigma_up,3,sigma_eig,sigma_vect)
|
||||
!
|
||||
mobility_xx = ( sigma_eig(1) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility_yy = ( sigma_eig(2) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility_zz = ( sigma_eig(3) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility = (mobility_xx+mobility_yy+mobility_zz)/3
|
||||
! carrier_density in cm^-1
|
||||
carrier_density = carrier_density * inv_cell * ( bohr2ang * ang2cm)**(-3)
|
||||
WRITE(stdout,'(5x, 1f8.3, 1f12.4, 1E19.6, 1E19.6, a)') etemp * ryd2ev/kelvin2eV, &
|
||||
ef0(itemp)*ryd2ev, carrier_density, mobility_xx, ' x-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility_yy, ' y-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility_zz, ' z-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility, ' avg'
|
||||
av_mob(itemp) = mobility
|
||||
ENDDO
|
||||
!
|
||||
! Now electron mobility
|
||||
ENDIF
|
||||
IF (ncarrier > 1E5 ) THEN
|
||||
! Needed because of residual values from the hole above
|
||||
Sigma(:,:) = zero
|
||||
!
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
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)
|
||||
DO ik=1, nkqtotf/2
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
IF (etf_all (ibnd, ik) > ef0(itemp) ) THEN
|
||||
tdf_sigma(:) = zero
|
||||
ij = 0
|
||||
DO j = 1, 3
|
||||
DO i = 1, 3
|
||||
ij = ij + 1
|
||||
tdf_sigma(ij) = vkk_all(i, ibnd, ik) * F_out(j, ibnd, ik, itemp) * wkf_all(ik)
|
||||
ENDDO
|
||||
ENDDO
|
||||
!
|
||||
! energy at k (relative to Ef)
|
||||
ekk = etf_all (ibnd, ik) - ef0(itemp)
|
||||
!
|
||||
! derivative Fermi distribution
|
||||
! (-df_nk/dE_nk) = (f_nk)*(1-f_nk)/ (k_B T)
|
||||
dfnk = w0gauss( ekk / etemp, -99 ) / etemp
|
||||
!
|
||||
! electrical conductivity
|
||||
Sigma(:,itemp) = Sigma(:,itemp) + dfnk * tdf_sigma(:)
|
||||
!
|
||||
ENDIF ! if below Fermi level
|
||||
ENDDO ! ibnd
|
||||
ENDDO ! ik
|
||||
ENDDO ! itemp
|
||||
!
|
||||
DO itemp=1, nstemp
|
||||
etemp = transp_temp(itemp)
|
||||
carrier_density = 0.0
|
||||
!
|
||||
DO ik = 1, nkqtotf/2
|
||||
DO ibnd = 1, ibndmax-ibndmin+1
|
||||
! This selects only valence bands for electron conduction
|
||||
IF (etf_all (ibnd, ik) > ef0(itemp) ) THEN
|
||||
! energy at k (relative to Ef)
|
||||
ekk = etf_all (ibnd, ik) - ef0(itemp)
|
||||
fnk = wgauss( -ekk / etemp, -99)
|
||||
! The wkf(ikk) already include a factor 2
|
||||
carrier_density = carrier_density + wkf_all(ik) * fnk
|
||||
ENDIF
|
||||
ENDDO
|
||||
ENDDO
|
||||
!
|
||||
sigma_up(:,:) = zero
|
||||
sigma_up(1,1) = Sigma(1,itemp)
|
||||
sigma_up(1,2) = Sigma(2,itemp)
|
||||
sigma_up(1,3) = Sigma(3,itemp)
|
||||
sigma_up(2,1) = Sigma(4,itemp)
|
||||
sigma_up(2,2) = Sigma(5,itemp)
|
||||
sigma_up(2,3) = Sigma(6,itemp)
|
||||
sigma_up(3,1) = Sigma(7,itemp)
|
||||
sigma_up(3,2) = Sigma(8,itemp)
|
||||
sigma_up(3,3) = Sigma(9,itemp)
|
||||
!
|
||||
! Diagonalize the conductivity matrix
|
||||
CALL rdiagh(3,sigma_up,3,sigma_eig,sigma_vect)
|
||||
!
|
||||
mobility_xx = ( sigma_eig(1) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility_yy = ( sigma_eig(2) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility_zz = ( sigma_eig(3) * electron_SI * ( bohr2ang * ang2cm)**2) /( carrier_density * hbarJ)
|
||||
mobility = (mobility_xx+mobility_yy+mobility_zz)/3
|
||||
! carrier_density in cm^-1
|
||||
carrier_density = carrier_density * inv_cell * ( bohr2ang * ang2cm)**(-3)
|
||||
WRITE(stdout,'(5x, 1f8.3, 1f12.4, 1E19.6, 1E19.6, a)') etemp * ryd2ev/kelvin2eV, &
|
||||
ef0(itemp)*ryd2ev, carrier_density, mobility_xx, ' x-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility_yy, ' y-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility_zz, ' z-axis'
|
||||
WRITE(stdout,'(45x, 1E18.6, a)') mobility, ' avg'
|
||||
av_mob(itemp) = mobility
|
||||
ENDDO
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
END SUBROUTINE print_mob
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE selfen_elec_q ( iq, first_cycle )
|
||||
SUBROUTINE selfen_elec_q ( iqq, iq, totq, first_cycle )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! Compute the imaginary part of the electron self energy due to electron-
|
||||
|
@ -22,7 +22,7 @@
|
|||
!!
|
||||
!! This subroutine computes the contribution from phonon iq to all k-points
|
||||
!! The outer loop in ephwann_shuffle.f90 will loop over all iq points
|
||||
!! The contribution from each iq is summed at the end of this subroutine for iq=nqtotf
|
||||
!! The contribution from each iq is summed at the end of this subroutine for iqq=totq
|
||||
!! to recover the per-ik electron self energy
|
||||
!!
|
||||
!! RM 24/02/2014
|
||||
|
@ -39,7 +39,7 @@
|
|||
restart, restart_freq
|
||||
USE pwcom, ONLY : ef !, nelec, isk
|
||||
USE elph2, ONLY : etf, ibndmin, ibndmax, nkqf, xqf, &
|
||||
nkf, epf17, nqtotf, wf, wqf, xkf, nkqtotf, &
|
||||
nkf, epf17, wf, wqf, xkf, nkqtotf, &
|
||||
sigmar_all, sigmai_all, sigmai_mode, zi_all, efnew
|
||||
USE transportcom, ONLY : lower_bnd
|
||||
USE control_flags, ONLY : iverbosity
|
||||
|
@ -54,8 +54,12 @@
|
|||
!
|
||||
LOGICAL, INTENT (INOUT) :: first_cycle
|
||||
!! Use to determine weather this is the first cycle after restart
|
||||
INTEGER, INTENT(IN) :: iqq
|
||||
!! Q-point index from selecq.fmt window
|
||||
INTEGER, INTENT(IN) :: iq
|
||||
!! Q-point inde
|
||||
!! Q-point index from full grid
|
||||
INTEGER, INTENT(IN) :: totq
|
||||
!! Total number of q-points from the selecq.fmt grid.
|
||||
!
|
||||
! Local variables
|
||||
!
|
||||
|
@ -334,7 +338,7 @@
|
|||
CALL mp_sum(fermicount, inter_pool_comm)
|
||||
CALL mp_barrier(inter_pool_comm)
|
||||
!
|
||||
CALL electron_write(iq,nqtotf,nksqtotf,sigmar_all,sigmai_all,zi_all)
|
||||
CALL electron_write(iq,totq,nksqtotf,sigmar_all,sigmai_all,zi_all)
|
||||
!
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
@ -342,7 +346,7 @@
|
|||
!
|
||||
! The k points are distributed among pools: here we collect them
|
||||
!
|
||||
IF ( iq .eq. nqtotf ) THEN
|
||||
IF ( iqq == totq ) THEN
|
||||
!
|
||||
ALLOCATE ( xkf_all ( 3, nkqtotf ), &
|
||||
etf_all ( nbndsub, nkqtotf ) )
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE selfen_phon_q (iq )
|
||||
SUBROUTINE selfen_phon_q ( iqq, iq, totq )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! compute the imaginary part of the phonon self energy due to electron-
|
||||
|
@ -29,15 +29,13 @@
|
|||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
use phcom, ONLY : nmodes
|
||||
use epwcom, ONLY : nbndsub, fsthick, &
|
||||
use epwcom, ONLY : nbndsub, fsthick, efermi_read, fermi_energy, &
|
||||
eptemp, ngaussw, degaussw, shortrange, &
|
||||
nsmear, delta_smear, eps_acustic, specfun_ph, &
|
||||
efermi_read, fermi_energy, delta_approx, vme
|
||||
delta_approx, vme
|
||||
use pwcom, ONLY : nelec, ef, isk
|
||||
use elph2, ONLY : epf17, ibndmax, ibndmin, etf, &
|
||||
wkf, xqf, wqf, nkqf, nqtotf, &
|
||||
nkf, wf, nkqtotf, xqf, &
|
||||
lambda_all, lambda_v_all, &
|
||||
use elph2, ONLY : epf17, ibndmax, ibndmin, etf, wkf, xqf, wqf, nkqf, &
|
||||
nkf, wf, nkqtotf, xqf, lambda_all, lambda_v_all, &
|
||||
dmef, vmef, gamma_all,gamma_v_all, efnew
|
||||
USE constants_epw, ONLY : ryd2mev, ryd2ev, two, zero, pi, eps4, eps6
|
||||
use mp, ONLY : mp_barrier, mp_sum
|
||||
|
@ -45,8 +43,12 @@
|
|||
!
|
||||
implicit none
|
||||
!
|
||||
INTEGER, INTENT (in) :: iqq
|
||||
!! Current q-point index from the selecq
|
||||
INTEGER, INTENT (in) :: iq
|
||||
!! Current q-point index
|
||||
INTEGER, INTENT (in) :: totq
|
||||
!! Total number of q-points in selecq.fmt
|
||||
!
|
||||
! Local variables
|
||||
!
|
||||
|
@ -154,7 +156,7 @@
|
|||
REAL(kind=DP), PARAMETER :: eps2 = 0.01/ryd2mev
|
||||
!! Tolerence
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iq == 1 ) THEN
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Phonon (Imaginary) Self-Energy in the Migdal Approximation")')
|
||||
WRITE(stdout,'(5x,a/)') repeat('=',67)
|
||||
|
@ -165,12 +167,12 @@
|
|||
WRITE(stdout, '(/5x,a,f10.6,a)' ) &
|
||||
'Golden Rule strictly enforced with T = ',eptemp * ryd2ev, ' eV'
|
||||
!
|
||||
IF ( .not. ALLOCATED (lambda_all) ) ALLOCATE( lambda_all (nmodes, nqtotf, nsmear) )
|
||||
IF ( .not. ALLOCATED (lambda_v_all) ) ALLOCATE( lambda_v_all(nmodes, nqtotf, nsmear) )
|
||||
IF ( .not. ALLOCATED (lambda_all) ) ALLOCATE( lambda_all (nmodes, totq, nsmear) )
|
||||
IF ( .not. ALLOCATED (lambda_v_all) ) ALLOCATE( lambda_v_all(nmodes, totq, nsmear) )
|
||||
lambda_all(:,:,:) = zero
|
||||
lambda_v_all(:,:,:) = zero
|
||||
IF ( .not. ALLOCATED (gamma_all) ) ALLOCATE( gamma_all (nmodes,nqtotf,nsmear) )
|
||||
IF ( .not. ALLOCATED (gamma_v_all) ) ALLOCATE( gamma_v_all(nmodes,nqtotf,nsmear) )
|
||||
IF ( .not. ALLOCATED (gamma_all) ) ALLOCATE( gamma_all (nmodes, totq, nsmear) )
|
||||
IF ( .not. ALLOCATED (gamma_v_all) ) ALLOCATE( gamma_v_all(nmodes, totq, nsmear) )
|
||||
gamma_all(:,:,:) = zero
|
||||
gamma_v_all(:,:,:) = zero
|
||||
!
|
||||
|
@ -207,7 +209,7 @@
|
|||
! N(Ef) in the equation for lambda is the DOS per spin
|
||||
dosef = dosef / two
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iq == 1 ) THEN
|
||||
WRITE (stdout, 100) degaussw0 * ryd2ev, ngaussw
|
||||
WRITE (stdout, 101) dosef / ryd2ev, ef0 * ryd2ev
|
||||
!WRITE (stdout, 101) dosef / ryd2ev, ef * ryd2ev
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE selfen_pl_q ( iq )
|
||||
SUBROUTINE selfen_pl_q ( iqq, iq, totq )
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
! Compute the imaginary part of the electron self energy due to electron-
|
||||
|
@ -28,22 +28,30 @@
|
|||
USE kinds, ONLY : DP
|
||||
USE io_global, ONLY : stdout
|
||||
USE io_epw, ONLY : linewidth_elself
|
||||
USE epwcom, ONLY : nbndsub, fsthick, eptemp, ngaussw, degaussw, &
|
||||
efermi_read, fermi_energy, &
|
||||
USE epwcom, ONLY : nbndsub, fsthick, eptemp, ngaussw, &
|
||||
efermi_read, fermi_energy, degaussw,&
|
||||
nel, meff, epsiHEG
|
||||
USE pwcom, ONLY : ef
|
||||
USE elph2, ONLY : etf, ibndmin, ibndmax, nkqf, &
|
||||
nkf, nqtotf, wqf, xkf, nkqtotf, &
|
||||
sigmar_all, sigmai_all, sigmai_mode, zi_all, efnew, &
|
||||
xqf, dmef
|
||||
USE elph2, ONLY : etf, ibndmin, ibndmax, nkqf, xqf, dmef, &
|
||||
nkf, wqf, xkf, nkqtotf, efnew, &
|
||||
sigmar_all, sigmai_all, sigmai_mode, zi_all
|
||||
USE constants_epw, ONLY : ryd2mev, one, ryd2ev, two, zero, pi, ci, eps6
|
||||
USE mp, ONLY : mp_barrier, mp_sum
|
||||
USE mp_global, ONLY : inter_pool_comm
|
||||
use cell_base, ONLY : omega, alat, bg
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
INTEGER :: ik, ikk, ikq, ibnd, jbnd, iq, fermicount
|
||||
INTEGER, INTENT (IN) :: iqq
|
||||
!! Q-index from the selected q
|
||||
INTEGER, INTENT (IN) :: iq
|
||||
!! Q-index from the global q
|
||||
INTEGER, INTENT (IN) :: totq
|
||||
!! Number of q-points in selecq window
|
||||
!
|
||||
! Local varialbes
|
||||
INTEGER :: ik, ikk, ikq, ibnd, jbnd, fermicount
|
||||
INTEGER :: nksqtotf, lower_bnd, upper_bnd
|
||||
INTEGER :: n
|
||||
!! Integer for the degenerate average over eigenstates
|
||||
|
@ -79,7 +87,7 @@
|
|||
inv_eptemp0 = 1.0/eptemp
|
||||
inv_degaussw = 1.0/degaussw
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
!
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Electron-plasmon Self-Energy in the Migdal Approximation")')
|
||||
|
@ -107,7 +115,7 @@
|
|||
!
|
||||
ENDIF
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
WRITE (stdout, 100) degaussw * ryd2ev, ngaussw
|
||||
WRITE (stdout,'(a)') ' '
|
||||
ENDIF
|
||||
|
@ -154,7 +162,7 @@
|
|||
CALL get_eps_mahan (qin,rs,kF,eps0) ! qin should be in atomic units for Mahan formula
|
||||
deltaeps = -(1.d0/(epsiHEG+eps0-1.d0)-1.d0/epsiHEG)
|
||||
!
|
||||
IF (iq .EQ. 1) THEN
|
||||
IF (iqq == 1) THEN
|
||||
WRITE(stdout,'(12x," nel = ", E15.10)') nel
|
||||
WRITE(stdout,'(12x," meff = ", E15.10)') meff
|
||||
WRITE(stdout,'(12x," rs = ", E15.10)') rs
|
||||
|
@ -337,7 +345,7 @@
|
|||
!
|
||||
! The k points are distributed among pools: here we collect them
|
||||
!
|
||||
IF ( iq .eq. nqtotf ) THEN
|
||||
IF ( iqq == totq ) THEN
|
||||
!
|
||||
ALLOCATE ( xkf_all ( 3, nkqtotf ), &
|
||||
etf_all ( nbndsub, nkqtotf ) )
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE spectral_func_q ( iq )
|
||||
SUBROUTINE spectral_func_q ( iqq, iq, totq )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! Compute the electron spectral function including the electron-
|
||||
|
@ -32,16 +32,21 @@
|
|||
efermi_read, fermi_energy
|
||||
USE pwcom, ONLY : nelec, ef, isk
|
||||
USE elph2, ONLY : etf, ibndmin, ibndmax, nkqf, xqf, &
|
||||
epf17, wkf, nkf, nqtotf, wf, wqf, xkf, nkqtotf,&
|
||||
epf17, wkf, nkf, wf, wqf, xkf, nkqtotf,&
|
||||
esigmar_all, esigmai_all, a_all
|
||||
USE constants_epw, ONLY : ryd2mev, one, ryd2ev, two, zero, pi, ci
|
||||
USE mp, ONLY : mp_barrier, mp_sum
|
||||
USE mp_global, ONLY : me_pool, inter_pool_comm
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
INTEGER, INTENT (in) :: iqq
|
||||
!! Current q-point index in selecq
|
||||
INTEGER, INTENT (in) :: iq
|
||||
!! Current q-point index
|
||||
INTEGER, INTENT (in) :: totq
|
||||
!! Total number of q-point in window
|
||||
!
|
||||
! Local variables
|
||||
!
|
||||
|
@ -118,7 +123,7 @@
|
|||
!
|
||||
dw = ( wmax_specfun - wmin_specfun ) / dble (nw_specfun-1)
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
!
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Electron Spectral Function in the Migdal Approximation")')
|
||||
|
@ -145,7 +150,7 @@
|
|||
!
|
||||
ENDIF
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iq == 1 ) THEN
|
||||
WRITE (stdout, 100) degaussw * ryd2ev, ngaussw
|
||||
WRITE (stdout,'(a)') ' '
|
||||
ENDIF
|
||||
|
@ -157,7 +162,7 @@
|
|||
! find the bounds of k-dependent arrays in the parallel case in each pool
|
||||
CALL fkbounds( nksqtotf, lower_bnd, upper_bnd )
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iq == 1 ) THEN
|
||||
IF ( .not. ALLOCATED(esigmar_all) ) ALLOCATE( esigmar_all(ibndmax-ibndmin+1, nksqtotf, nw_specfun) )
|
||||
IF ( .not. ALLOCATED(esigmai_all) ) ALLOCATE( esigmai_all(ibndmax-ibndmin+1, nksqtotf, nw_specfun) )
|
||||
esigmar_all(:,:,:) = zero
|
||||
|
@ -165,7 +170,7 @@
|
|||
ENDIF
|
||||
!
|
||||
! SP: Sum rule added to conserve the number of electron.
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iq == 1 ) THEN
|
||||
WRITE (stdout,'(5x,a)') 'The sum rule to conserve the number of electron is enforced.'
|
||||
WRITE (stdout,'(5x,a)') 'The self energy is rescaled so that its real part is zero at the Fermi level.'
|
||||
WRITE (stdout,'(5x,a)') 'The sum rule replace the explicit calculation of the Debye-Waller term.'
|
||||
|
@ -263,7 +268,7 @@
|
|||
!
|
||||
! The k points are distributed among pools: here we collect them
|
||||
!
|
||||
IF ( iq .eq. nqtotf ) THEN
|
||||
IF ( iqq == totq ) THEN
|
||||
!
|
||||
ALLOCATE ( xkf_all ( 3, nkqtotf ), &
|
||||
etf_all ( nbndsub, nkqtotf ) )
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE spectral_func_ph (iq )
|
||||
SUBROUTINE spectral_func_ph ( iqq, iq, totq )
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
! Compute the imaginary part of the phonon self energy due to electron-
|
||||
|
@ -33,7 +33,7 @@
|
|||
wmax_specfun, nw_specfun
|
||||
USE pwcom, ONLY : nelec, ef, isk
|
||||
USE elph2, ONLY : epf17, ibndmax, ibndmin, etf, &
|
||||
wkf, xqf, nkqf, nqtotf, &
|
||||
wkf, xqf, nkqf, &
|
||||
nkf, wf, a_all, &
|
||||
gammai_all,gammar_all, efnew
|
||||
USE constants_epw, ONLY : ryd2mev, ryd2ev, two, zero, pi, cone, ci
|
||||
|
@ -43,8 +43,12 @@
|
|||
!
|
||||
implicit none
|
||||
!
|
||||
INTEGER, INTENT (in) :: iqq
|
||||
!! Current q-point index from selecq
|
||||
INTEGER, INTENT (in) :: iq
|
||||
!! Current q-point index
|
||||
INTEGER, INTENT (in) :: totq
|
||||
!! Total q-points in selecq window
|
||||
!
|
||||
INTEGER :: ik
|
||||
!! Counter on the k-point index
|
||||
|
@ -123,7 +127,7 @@
|
|||
!qsquared = (xqf(1,iq)**2 + xqf(2,iq)**2 + xqf(3,iq)**2) * tpiba2
|
||||
!epsTF = (qTF**2 + qsquared) / (qTF**2/eps0 * sin (sqrt(qsquared)*RTF)/(sqrt(qsquared)*RTF)+qsquared)
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Phonon Spectral Function Self-Energy in the Migdal Approximation (on the fly)")')
|
||||
WRITE(stdout,'(5x,a/)') repeat('=',67)
|
||||
|
@ -134,8 +138,8 @@
|
|||
WRITE(stdout, '(/5x,a,f10.6,a)' ) &
|
||||
'Golden Rule strictly enforced with T = ',eptemp * ryd2ev, ' eV'
|
||||
!
|
||||
IF ( .not. ALLOCATED (gammai_all) ) ALLOCATE( gammai_all (nmodes,nqtotf,nw_specfun) )
|
||||
IF ( .not. ALLOCATED (gammar_all) ) ALLOCATE( gammar_all (nmodes,nqtotf,nw_specfun) )
|
||||
IF ( .not. ALLOCATED (gammai_all) ) ALLOCATE( gammai_all (nmodes, totq, nw_specfun) )
|
||||
IF ( .not. ALLOCATED (gammar_all) ) ALLOCATE( gammar_all (nmodes, totq, nw_specfun) )
|
||||
gammar_all(:,:,:) = zero
|
||||
gammai_all(:,:,:) = zero
|
||||
!
|
||||
|
@ -294,10 +298,10 @@
|
|||
#endif
|
||||
!
|
||||
WRITE(stdout,'(5x,a)')
|
||||
IF (.not. ALLOCATED (a_all)) ALLOCATE ( a_all(nw_specfun,nqtotf) )
|
||||
IF (.not. ALLOCATED (a_all)) ALLOCATE ( a_all(nw_specfun, totq) )
|
||||
a_all(:,:) = zero
|
||||
!
|
||||
IF (iq == 1 ) THEN
|
||||
IF (iqq == 1 ) THEN
|
||||
IF (mpime.eq.ionode_id) THEN
|
||||
OPEN(unit=iospectral,file='specfun.phon')
|
||||
OPEN(unit=iospectral_sup,file='specfun_sup.phon')
|
||||
|
@ -318,7 +322,7 @@
|
|||
WRITE(stdout,105) imode, ryd2ev * wq, ryd2mev * gammar_all(imode,iq,1), ryd2mev * gammai_all(imode,iq,1)
|
||||
ENDDO
|
||||
WRITE( stdout, '(5x,a,i8,a,i8)' ) &
|
||||
'Number of (k,k+q) pairs on the Fermi surface: ',fermicount, ' out of ', nqtotf
|
||||
'Number of (k,k+q) pairs on the Fermi surface: ',fermicount, ' out of ', totq
|
||||
|
||||
!
|
||||
! Write to support files
|
||||
|
@ -351,8 +355,8 @@
|
|||
!
|
||||
ENDDO
|
||||
!
|
||||
IF (iq == nqtotf ) THEN
|
||||
IF (mpime.eq.ionode_id) THEN
|
||||
IF (iqq == totq ) THEN
|
||||
IF (mpime == ionode_id) THEN
|
||||
CLOSE(iospectral)
|
||||
CLOSE(iospectral_sup)
|
||||
ENDIF
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
! present distribution, or http://www.gnu.org/copyleft.gpl.txt .
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE spectral_func_pl_q ( iq )
|
||||
SUBROUTINE spectral_func_pl_q ( iqq, iq, totq )
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
! Compute the electron spectral function including the electron-
|
||||
|
@ -32,20 +32,29 @@
|
|||
nel, meff, epsiHEG
|
||||
USE pwcom, ONLY : nelec, ef, isk
|
||||
USE elph2, ONLY : etf, ibndmin, ibndmax, nkqf, &
|
||||
wkf, nkf, nqtotf, wqf, xkf, nkqtotf,&
|
||||
wkf, nkf, wqf, xkf, nkqtotf,&
|
||||
esigmar_all, esigmai_all, a_all,&
|
||||
xqf, dmef
|
||||
USE constants_epw, ONLY : ryd2mev, one, ryd2ev, two, zero, pi, ci
|
||||
USE mp, ONLY : mp_barrier, mp_sum
|
||||
USE mp_global, ONLY : me_pool, inter_pool_comm
|
||||
USE cell_base, ONLY : omega, alat, bg
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
implicit none
|
||||
!
|
||||
INTEGER, INTENT(IN) :: iqq
|
||||
!! Q-point index in selecq
|
||||
INTEGER, INTENT(IN) :: iq
|
||||
!! Q-point index
|
||||
INTEGER, INTENT(IN) :: totq
|
||||
!! Total number of q-points in fsthick window
|
||||
|
||||
!
|
||||
! variables for collecting data from all pools in parallel case
|
||||
!
|
||||
integer :: iw, ik, ikk, ikq, ibnd, jbnd, iq, fermicount
|
||||
integer :: nksqtotf, lower_bnd, upper_bnd
|
||||
INTEGER :: iw, ik, ikk, ikq, ibnd, jbnd, fermicount
|
||||
INTEGER :: nksqtotf, lower_bnd, upper_bnd
|
||||
REAL(kind=DP), external :: efermig, dos_ef, wgauss
|
||||
REAL(kind=DP) :: g2, ekk, ekq, wq, ef0, wgq, wgkq, ww, dw, weight
|
||||
REAL(kind=DP) :: specfun_sum, esigmar0, tpiba_new
|
||||
|
@ -62,7 +71,7 @@
|
|||
!
|
||||
dw = ( wmax_specfun - wmin_specfun ) / dble (nw_specfun-1)
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
!
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Electron Spectral Function in the Migdal Approximation")')
|
||||
|
@ -89,7 +98,7 @@
|
|||
!
|
||||
ENDIF
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
WRITE (stdout, 100) degaussw * ryd2ev, ngaussw
|
||||
WRITE (stdout,'(a)') ' '
|
||||
ENDIF
|
||||
|
@ -101,7 +110,7 @@
|
|||
! find the bounds of k-dependent arrays in the parallel case in each pool
|
||||
CALL fkbounds( nksqtotf, lower_bnd, upper_bnd )
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
IF ( .not. ALLOCATED(esigmar_all) ) ALLOCATE( esigmar_all(ibndmax-ibndmin+1, nksqtotf, nw_specfun) )
|
||||
IF ( .not. ALLOCATED(esigmai_all) ) ALLOCATE( esigmai_all(ibndmax-ibndmin+1, nksqtotf, nw_specfun) )
|
||||
esigmar_all(:,:,:) = zero
|
||||
|
@ -109,7 +118,7 @@
|
|||
ENDIF
|
||||
!
|
||||
! SP: Sum rule added to conserve the number of electron.
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
WRITE (stdout,'(5x,a)') 'The sum rule to conserve the number of electron is enforced.'
|
||||
WRITE (stdout,'(5x,a)') 'The self energy is rescaled so that its real part is zero at the Fermi level.'
|
||||
WRITE (stdout,'(5x,a)') 'The sum rule replace the explicit calculation of the Debye-Waller term.'
|
||||
|
@ -246,7 +255,7 @@
|
|||
!
|
||||
! The k points are distributed among pools: here we collect them
|
||||
!
|
||||
IF ( iq .eq. nqtotf ) THEN
|
||||
IF ( iqq == totq ) THEN
|
||||
!
|
||||
ALLOCATE ( xkf_all ( 3, nkqtotf ), &
|
||||
etf_all ( nbndsub, nkqtotf ) )
|
||||
|
|
|
@ -514,6 +514,7 @@
|
|||
USE eliashbergcom, ONLY : nkfs, nbndfs, nsiw, nqfs, limag_fly, memlt_pool
|
||||
USE mp_global, ONLY : inter_pool_comm, my_pool_id
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -568,7 +569,7 @@
|
|||
! collect contributions from all pools
|
||||
CALL mp_sum( memlt_pool, inter_pool_comm )
|
||||
CALL mp_barrier(inter_pool_comm)
|
||||
|
||||
!
|
||||
ENDIF
|
||||
!
|
||||
IF ( limag_fly ) THEN
|
||||
|
@ -596,6 +597,7 @@
|
|||
USE eliashbergcom, ONLY : nkfs, nbndfs, nqfs, lacon_fly, memlt_pool
|
||||
USE mp_global, ONLY : inter_pool_comm, my_pool_id
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
|
|
@ -260,6 +260,7 @@
|
|||
USE mp_world, ONLY : mpime
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE io_eliashberg, ONLY : eliashberg_write_iaxis
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -520,6 +521,7 @@
|
|||
USE mp_world, ONLY : mpime
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE io_eliashberg, ONLY : eliashberg_write_raxis
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -801,6 +803,7 @@
|
|||
USE mp_world, ONLY : mpime
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE io_eliashberg, ONLY : eliashberg_write_raxis
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -964,6 +967,7 @@
|
|||
USE epwcom, ONLY : fsthick
|
||||
USE eliashbergcom, ONLY : nkfs, nbndfs, nsiw, estemp, AKeri, ekfs, ef0, ixkqf, ixqfs, nqfs
|
||||
USE constants_epw, ONLY : pi, zero
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -1133,6 +1137,7 @@
|
|||
USE superconductivity, ONLY : mem_size_eliashberg
|
||||
USE constants_epw, ONLY : zero
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -1339,6 +1344,7 @@
|
|||
USE eliashbergcom, ONLY : nkfs, nbndfs, g2, a2fij, ixkqf, ixqfs, nqfs, ekfs, ef0, &
|
||||
dosef, wsph
|
||||
USE constants_epw, ONLY : zero
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -1422,6 +1428,7 @@
|
|||
USE mp_global, ONLY : inter_pool_comm, my_pool_id, npool
|
||||
USE mp_world, ONLY : mpime
|
||||
USE mp, ONLY : mp_bcast, mp_barrier, mp_sum
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
|
|
@ -17,7 +17,171 @@
|
|||
CONTAINS
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE scattering_rate_q( iq, ef0, efcb, first_cycle )
|
||||
SUBROUTINE qwindow(exst, nrr_k, dims, totq, selecq, irvec_r, ndegen_k, cufkk, cufkq)
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! This subroutine pre-computes the q-points that falls within the fstichk
|
||||
!!
|
||||
!-----------------------------------------------------------------------
|
||||
USE kinds, ONLY : DP
|
||||
USE elph2, ONLY : nqf, xqf, xkf, chw, etf, nkf
|
||||
USE mp_world, ONLY : mpime, world_comm
|
||||
USE mp_global, ONLY : my_pool_id
|
||||
USE io_global, ONLY : ionode_id, stdout
|
||||
USE io_epw, ONLY : iunselecq
|
||||
USE mp_global, ONLY : npool
|
||||
USE mp, ONLY : mp_sum, mp_bcast
|
||||
USE constants_epw, ONLY : twopi, ci
|
||||
USE epwcom, ONLY : nbndsub, fsthick, use_ws
|
||||
USE pwcom, ONLY : ef
|
||||
USE wan2bloch, ONLY : hamwan2bloch
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
LOGICAL, INTENT(in) :: exst
|
||||
!! If the file exist
|
||||
INTEGER, INTENT(IN) :: nrr_k
|
||||
!! Number of WS points for electrons
|
||||
INTEGER, INTENT(IN) :: dims
|
||||
!! Dims is either nat if use_ws or 1 if not
|
||||
INTEGER, INTENT(INOUT) :: totq
|
||||
!! Total number of q-points inside fsthick
|
||||
INTEGER, ALLOCATABLE, INTENT(OUT) :: selecq(:)
|
||||
!! List of selected q-points
|
||||
INTEGER, INTENT(IN) :: ndegen_k(nrr_k, dims, dims)
|
||||
!! Wigner-Seitz number of degenerescence (weights) for the electrons grid
|
||||
REAL(kind=DP), INTENT(IN) :: irvec_r(3, nrr_k)
|
||||
!! Wigner-Size supercell vectors, store in real instead of integer
|
||||
COMPLEX(kind=DP), INTENT(OUT) :: cufkk (nbndsub, nbndsub)
|
||||
!! Rotation matrix, fine mesh, points k
|
||||
COMPLEX(kind=DP), INTENT(OUT) :: cufkq (nbndsub, nbndsub)
|
||||
!! the same, for points k+q
|
||||
!
|
||||
! Local variable
|
||||
INTEGER :: ios
|
||||
!! integer variable for I/O control
|
||||
INTEGER :: iq
|
||||
!! Counter on coarse q-point grid
|
||||
INTEGER :: ik, ikk, ikq
|
||||
!! Counter on coarse k-point grid
|
||||
INTEGER :: found(npool)
|
||||
!! Indicate if a q-point was found within the window
|
||||
INTEGER :: iw
|
||||
!! Counter on bands when use_ws == .true.
|
||||
INTEGER :: iw2
|
||||
!! Counter on bands when use_ws == .true.
|
||||
INTEGER :: ir
|
||||
!! Counter for WS loop
|
||||
INTEGER :: nqtot
|
||||
!! Total number of q-point for verifications
|
||||
!
|
||||
REAL(kind=DP) :: xxq(3)
|
||||
!! Current q-point
|
||||
REAL(kind=DP) :: xkk(3)
|
||||
!! Current k-point on the fine grid
|
||||
REAL(kind=DP) :: xkq(3)
|
||||
!! Current k-point on the fine grid
|
||||
REAL(kind=DP) :: rdotk(nrr_k)
|
||||
!! $r\cdot k$
|
||||
REAL(kind=DP) :: rdotk2(nrr_k)
|
||||
!! $r\cdot k$
|
||||
!
|
||||
COMPLEX(kind=DP) :: cfac(nrr_k, dims, dims)
|
||||
!! Used to store $e^{2\pi r \cdot k}$ exponential
|
||||
COMPLEX(kind=DP) :: cfacq(nrr_k, dims, dims)
|
||||
!! Used to store $e^{2\pi r \cdot k+q}$ exponential
|
||||
!
|
||||
!selecq(:) = 0
|
||||
rdotk(:) = 0
|
||||
rdotk2(:) = 0
|
||||
!
|
||||
IF (exst) THEN
|
||||
IF (mpime == ionode_id) THEN
|
||||
OPEN(unit=iunselecq, file='selecq.fmt', status='old', iostat=ios)
|
||||
READ (iunselecq,*) totq
|
||||
ALLOCATE(selecq(totq))
|
||||
selecq(:) = 0
|
||||
READ (iunselecq,*) nqtot
|
||||
READ (iunselecq,*) selecq(:)
|
||||
CLOSE(iunselecq)
|
||||
ENDIF
|
||||
CALL mp_bcast(totq , ionode_id, world_comm )
|
||||
CALL mp_bcast(selecq, ionode_id, world_comm )
|
||||
IF (nqtot /= nqf) THEN
|
||||
CALL errore( 'qwindow', 'Cannot read from selecq.fmt, the q-point grid or &
|
||||
fsthick window are different from read one. Remove the selecq.fmt file and restart. ',1 )
|
||||
ENDIF
|
||||
!
|
||||
ELSE
|
||||
ALLOCATE(selecq(nqf))
|
||||
selecq(:) = 0
|
||||
!
|
||||
DO iq=1, nqf
|
||||
xxq = xqf (:, iq)
|
||||
!
|
||||
found(:) = 0
|
||||
DO ik = 1, nkf
|
||||
ikk = 2 * ik - 1
|
||||
ikq = ikk + 1
|
||||
!
|
||||
xkk = xkf(:, ikk)
|
||||
xkq = xkk + xxq
|
||||
!
|
||||
CALL dgemv('t', 3, nrr_k, twopi, irvec_r, 3, xkk, 1, 0.0_DP, rdotk, 1 )
|
||||
CALL dgemv('t', 3, nrr_k, twopi, irvec_r, 3, xkq, 1, 0.0_DP, rdotk2, 1 )
|
||||
IF (use_ws) THEN
|
||||
DO iw=1, dims
|
||||
DO iw2=1, dims
|
||||
DO ir = 1, nrr_k
|
||||
IF (ndegen_k(ir,iw2,iw) > 0) THEN
|
||||
cfac(ir,iw2,iw) = exp( ci*rdotk(ir) ) / ndegen_k(ir,iw2,iw)
|
||||
cfacq(ir,iw2,iw) = exp( ci*rdotk2(ir) ) / ndegen_k(ir,iw2,iw)
|
||||
ENDIF
|
||||
ENDDO
|
||||
ENDDO
|
||||
ENDDO
|
||||
ELSE
|
||||
cfac(:,1,1) = exp( ci*rdotk(:) ) / ndegen_k(:,1,1)
|
||||
cfacq(:,1,1) = exp( ci*rdotk2(:) ) / ndegen_k(:,1,1)
|
||||
ENDIF
|
||||
!
|
||||
CALL hamwan2bloch ( nbndsub, nrr_k, cufkk, etf(:, ikk), chw, cfac, dims)
|
||||
CALL hamwan2bloch ( nbndsub, nrr_k, cufkq, etf(:, ikq), chw, cfacq, dims)
|
||||
!
|
||||
IF ( (( minval ( abs(etf(:, ikk) - ef) ) < fsthick ) .and. &
|
||||
( minval ( abs(etf(:, ikq) - ef) ) < fsthick )) ) THEN
|
||||
found(my_pool_id+1) = 1
|
||||
EXIT ! exit the loop
|
||||
ENDIF
|
||||
ENDDO ! k-loop
|
||||
! If found on any k-point from the pools
|
||||
CALL mp_sum(found, world_comm)
|
||||
!
|
||||
IF (SUM(found) > 0) THEN
|
||||
totq = totq + 1
|
||||
selecq(totq) = iq
|
||||
!
|
||||
IF (MOD(totq,500) == 0) THEN
|
||||
WRITE(stdout,'(5x,a,i8,i8)')'Number selected, total',totq,iq
|
||||
ENDIF
|
||||
ENDIF
|
||||
!
|
||||
ENDDO
|
||||
IF (mpime == ionode_id) THEN
|
||||
OPEN(unit=iunselecq, file='selecq.fmt')
|
||||
WRITE (iunselecq,*) totq ! Selected number of q-points
|
||||
WRITE (iunselecq,*) nqf ! Total number of q-points
|
||||
WRITE (iunselecq,*) selecq(1:totq)
|
||||
CLOSE(iunselecq)
|
||||
ENDIF
|
||||
!
|
||||
ENDIF ! exst
|
||||
!-----------------------------------------------------------------------
|
||||
END SUBROUTINE qwindow
|
||||
!-----------------------------------------------------------------------
|
||||
!
|
||||
!-----------------------------------------------------------------------
|
||||
SUBROUTINE scattering_rate_q(iqq, iq, totq, ef0, efcb, first_cycle )
|
||||
!-----------------------------------------------------------------------
|
||||
!!
|
||||
!! This subroutine computes the scattering rate (inv_tau)
|
||||
|
@ -44,8 +208,12 @@
|
|||
!
|
||||
LOGICAL, INTENT (INOUT) :: first_cycle
|
||||
!! Use to determine weather this is the first cycle after restart
|
||||
INTEGER, INTENT(IN) :: iqq
|
||||
!! Q-point index from the selected q
|
||||
INTEGER, INTENT(IN) :: iq
|
||||
!! Q-point inde
|
||||
!! Q-point index
|
||||
INTEGER, INTENT(IN) :: totq
|
||||
!! Total number of q-points within the fstichk window
|
||||
REAL(KIND=DP), INTENT(IN) :: ef0(nstemp)
|
||||
!! Fermi level for the temperature itemp
|
||||
REAL(KIND=DP), INTENT(IN) :: efcb(nstemp)
|
||||
|
@ -138,7 +306,7 @@
|
|||
!
|
||||
CALL start_clock ( 'SCAT' )
|
||||
!
|
||||
IF ( iq .eq. 1 ) THEN
|
||||
IF ( iqq == 1 ) THEN
|
||||
!
|
||||
WRITE(stdout,'(/5x,a)') repeat('=',67)
|
||||
WRITE(stdout,'(5x,"Scattering rate")')
|
||||
|
@ -396,7 +564,7 @@
|
|||
!
|
||||
! Creation of a restart point
|
||||
IF (restart) THEN
|
||||
IF (MOD(iq,restart_freq) == 0 ) THEN
|
||||
IF (MOD(iqq,restart_freq) == 0 ) THEN
|
||||
WRITE(stdout, '(a)' ) ' Creation of a restart point'
|
||||
!
|
||||
! The mp_sum will aggreage the results on each k-points.
|
||||
|
@ -411,9 +579,9 @@
|
|||
ENDIF
|
||||
!
|
||||
IF ( ABS(efcb(1)) > eps ) THEN
|
||||
CALL tau_write(iq,nqtotf,nkqtotf/2,.TRUE.)
|
||||
CALL tau_write(iqq,totq,nkqtotf/2,.TRUE.)
|
||||
ELSE
|
||||
CALL tau_write(iq,nqtotf,nkqtotf/2,.FALSE.)
|
||||
CALL tau_write(iqq,totq,nkqtotf/2,.FALSE.)
|
||||
ENDIF
|
||||
!
|
||||
! Now show intermediate mobility with that amount of q-points
|
||||
|
@ -427,7 +595,7 @@
|
|||
!
|
||||
! The k points are distributed among pools: here we collect them
|
||||
!
|
||||
IF ( iq .eq. nqtotf ) THEN
|
||||
IF ( iqq == totq ) THEN
|
||||
!
|
||||
! The total number of k points
|
||||
!
|
||||
|
@ -464,13 +632,13 @@
|
|||
!
|
||||
CALL merge_read( nkqtotf/2, nqtotf_new, inv_tau_all_new )
|
||||
!
|
||||
inv_tau_all(:,:,:) = ( inv_tau_all(:,:,:) * nqtotf &
|
||||
+ inv_tau_all_new(:,:,:) * nqtotf_new ) / (nqtotf+nqtotf_new)
|
||||
inv_tau_all(:,:,:) = ( inv_tau_all(:,:,:) * totq &
|
||||
+ inv_tau_all_new(:,:,:) * nqtotf_new ) / (totq+nqtotf_new)
|
||||
!
|
||||
WRITE(stdout, '(a)' ) ' '
|
||||
WRITE(stdout, '(a,i10,a)' ) ' Merge scattering for a total of ',nqtotf+nqtotf_new,' q-points'
|
||||
WRITE(stdout, '(a,i10,a)' ) ' Merge scattering for a total of ',totq+nqtotf_new,' q-points'
|
||||
!
|
||||
CALL tau_write(iq+nqtotf_new,nqtotf+nqtotf_new,nkqtotf/2, .FALSE.)
|
||||
CALL tau_write(iqq+nqtotf_new,totq+nqtotf_new,nkqtotf/2, .FALSE.)
|
||||
WRITE(stdout, '(a)' ) ' Write to restart file the sum'
|
||||
WRITE(stdout, '(a)' ) ' '
|
||||
!
|
||||
|
@ -552,18 +720,18 @@
|
|||
WRITE(stdout, '(a)' ) ' Creation of the final restart point'
|
||||
!
|
||||
IF ( ABS(efcb(1)) > eps ) THEN
|
||||
CALL tau_write(iq,nqtotf,nkqtotf/2,.TRUE.)
|
||||
CALL tau_write(iqq,totq,nkqtotf/2,.TRUE.)
|
||||
ELSE
|
||||
CALL tau_write(iq,nqtotf,nkqtotf/2,.FALSE.)
|
||||
CALL tau_write(iqq,totq,nkqtotf/2,.FALSE.)
|
||||
ENDIF
|
||||
!
|
||||
ENDIF ! restart
|
||||
!
|
||||
ENDIF ! iq
|
||||
ENDIF ! iqq
|
||||
!
|
||||
CALL stop_clock ( 'SCAT' )
|
||||
! DBSP
|
||||
!write(stdout,*),'iq ',iq
|
||||
!write(stdout,*),'iqq ',iqq
|
||||
!print*,shape(inv_tau_all)
|
||||
!write(stdout,*),'inv_tau_all(1,5:8,21) ',SUM(inv_tau_all(3,5:8,1))
|
||||
!write(stdout,*),'inv_tau_all(1,5:8,:) ',SUM(inv_tau_all(3,5:8,:))
|
||||
|
@ -597,13 +765,12 @@
|
|||
iterative_bte, vme
|
||||
USE pwcom, ONLY : ef
|
||||
USE elph2, ONLY : ibndmax, ibndmin, etf, nkf, wkf, dmef, vmef, &
|
||||
inv_tau_all, nkqtotf, Fi_all, inv_tau_allcb, &
|
||||
zi_allvb, zi_allcb, Fi_allcb, BZtoIBZ, &
|
||||
s_BZtoIBZ, map_rebal
|
||||
inv_tau_all, nkqtotf, inv_tau_allcb, &
|
||||
zi_allvb, zi_allcb, map_rebal
|
||||
USE transportcom, ONLY : transp_temp
|
||||
USE constants_epw, ONLY : zero, one, bohr2ang, ryd2ev, electron_SI, &
|
||||
kelvin2eV, hbar, Ang2m, hbarJ, ang2cm, czero
|
||||
USE mp, ONLY : mp_sum
|
||||
USE mp, ONLY : mp_sum, mp_bcast
|
||||
USE mp_global, ONLY : world_comm
|
||||
USE mp_world, ONLY : mpime
|
||||
! SP - Uncomment to use symmetries on velocities
|
||||
|
@ -616,6 +783,7 @@
|
|||
USE constants_epw, ONLY : eps6
|
||||
USE noncollin_module, ONLY : noncolin
|
||||
USE io_scattering, ONLY : scattering_read
|
||||
USE division, ONLY : fkbounds
|
||||
!
|
||||
IMPLICIT NONE
|
||||
!
|
||||
|
@ -652,6 +820,10 @@
|
|||
!! Number of points in the BZ corresponding to a point in IBZ
|
||||
INTEGER :: BZtoIBZ_tmp(nkf1*nkf2*nkf3)
|
||||
!! Temporary mapping
|
||||
INTEGER :: BZtoIBZ(nkf1*nkf2*nkf3)
|
||||
!! BZ to IBZ mapping
|
||||
INTEGER :: s_BZtoIBZ(3,3,nkf1*nkf2*nkf3)
|
||||
!! symmetry
|
||||
!
|
||||
REAL(KIND=DP) :: ekk
|
||||
!! Energy relative to Fermi level: $$\varepsilon_{n\mathbf{k}}-\varepsilon_F$$
|
||||
|
@ -1549,7 +1721,9 @@
|
|||
!
|
||||
ENDDO ! nstemp
|
||||
WRITE(stdout,'(5x)')
|
||||
WRITE(stdout,'(5x,"Note: Mobility are sorted by ascending values and might not correspond to the expected (x,y,z) axis.")')
|
||||
WRITE(stdout,'(5x,"Note: Mobility are sorted by ascending values and might not correspond")')
|
||||
WRITE(stdout,'(5x," to the expected (x,y,z) axis.")')
|
||||
WRITE(stdout,'(5x)')
|
||||
!
|
||||
IF (mpime .eq. meta_ionode_id) CLOSE(iufilsigma)
|
||||
!
|
||||
|
@ -1563,38 +1737,6 @@
|
|||
CALL print_clock ('MOB')
|
||||
WRITE(stdout,'(5x)')
|
||||
!
|
||||
!! IF IBTE we want the SRTA solution to be the first iteration of IBTE
|
||||
!IF (iterative_bte) THEN
|
||||
! Fi_all(:,:,:,:) = zero
|
||||
! IF ( ABS(efcb(1)) > eps ) Fi_allcb(:,:,:,:) = zero
|
||||
! !
|
||||
! DO itemp = 1, nstemp
|
||||
! DO ik = 1, nkf
|
||||
! ikk = 2 * ik - 1
|
||||
! IF ( minval ( abs(etf (:, ikk) - ef) ) .lt. fsthick ) THEN
|
||||
! DO ibnd = 1, ibndmax-ibndmin+1
|
||||
! IF ( vme ) THEN
|
||||
! vkk(:,ibnd) = REAL (vmef (:, ibndmin-1+ibnd, ibndmin-1+ibnd, ikk))
|
||||
! ELSE
|
||||
! vkk(:,ibnd) = 2.0 * REAL (dmef (:, ibndmin-1+ibnd, ibndmin-1+ibnd, ikk))
|
||||
! ENDIF
|
||||
! tau = one / inv_tau_all(itemp,ibnd,ik+lower_bnd-1)
|
||||
! Fi_all(:,ibnd,ik+lower_bnd-1,itemp) = vkk(:,ibnd) * tau
|
||||
! IF ( ABS(efcb(itemp)) > eps ) THEN
|
||||
! tau = one / inv_tau_allcb(itemp,ibnd,ik+lower_bnd-1)
|
||||
! Fi_allcb(:,ibnd,ik+lower_bnd-1,itemp) = vkk(:,ibnd) * tau
|
||||
! ENDIF
|
||||
! !
|
||||
! ENDDO
|
||||
! ENDIF
|
||||
! ENDDO ! kpoints
|
||||
! !DBSP
|
||||
! print*,'itemp ',itemp,' ',sum(Fi_all(:,:,:,itemp)), sum(inv_tau_all)
|
||||
! print*,'itemp cb',itemp,' ',sum(Fi_allcb(:,:,:,itemp)), sum(inv_tau_allcb)
|
||||
! ENDDO ! itemp
|
||||
! CALL mp_sum( Fi_all, world_comm )
|
||||
! IF ( ABS(efcb(1)) > eps ) CALL mp_sum( Fi_allcb, world_comm )
|
||||
!ENDIF
|
||||
!
|
||||
RETURN
|
||||
!
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -18,9 +18,9 @@
|
|||
!! lower bound for the k-depend index among the mpi pools
|
||||
INTEGER :: upper_bnd
|
||||
!! lower bound for the k-depend index among the mpi pools
|
||||
INTEGER, ALLOCATABLE :: ixkqf_tr(:,:)
|
||||
INTEGER, ALLOCATABLE :: ixkqf_tr(:)
|
||||
!! Mapping matrix from k+q (where q is full BZ) to IBZ
|
||||
INTEGER, ALLOCATABLE :: s_BZtoIBZ_full(:,:,:,:)
|
||||
INTEGER, ALLOCATABLE :: s_BZtoIBZ_full(:,:,:)
|
||||
!! Rotation that brink that k-point from BZ to IBZ
|
||||
!
|
||||
REAL(kind=DP), ALLOCATABLE :: transp_temp(:), &
|
||||
|
|
|
@ -15,6 +15,7 @@ then
|
|||
KS_Solvers/Davidson KS_Solvers/Davidson_RCI KS_Solvers/CG KS_Solvers/PPCG \
|
||||
PW/src CPV/src PW/tools upftools PP/src PWCOND/src \
|
||||
PHonon/Gamma PHonon/PH PHonon/FD HP/src atomic/src \
|
||||
EPW/src \
|
||||
XSpectra/src ACFDT/src NEB/src TDDFPT/src \
|
||||
GWW/pw4gww GWW/gww GWW/head GWW/bse GWW/simple \
|
||||
GWW/simple_bse GWW/simple_ip"
|
||||
|
@ -78,6 +79,8 @@ for dir in $dirs; do
|
|||
DEPENDS="$DEPEND2 $LEVEL2/PW/src" ;;
|
||||
PHonon/FD | PHonon/PH | PHonon/Gamma | HP/src | TDDFPT/src | XSpectra/src | GIPAW/src )
|
||||
DEPENDS="$DEPEND2 $LEVEL2/PW/src $LEVEL2/LR_Modules" ;;
|
||||
EPW/src )
|
||||
DEPENDS="$DEPEND2 $LEVEL2/PW/src $LEVEL2/LR_Modules $LEVEL2/PHonon/PH $LEVEL2/Modules" ;;
|
||||
GWW/head )
|
||||
DEPENDS="$DEPEND2 $LEVEL2/PW/src $LEVEL2/PHonon/PH $LEVEL2/LR_Modules" ;;
|
||||
GWW/bse )
|
||||
|
|
|
@ -149,7 +149,8 @@ clean:
|
|||
epw_*/specfun.phon epw_*/specfun_sup.phon epw_*/*.tau_restart* \
|
||||
epw_*/*_elcond_* epw_*/fort.* epw_*/decay.* epw_*/scattering_rate* \
|
||||
epw_*/*.fc.* epw_*/*_band.dat epw_*/*F_restart* epw_*/*F_restart_CB* \
|
||||
epw_*/*.mmn
|
||||
epw_*/*.mmn epw_*/*.epmatkq* epw_*/*.epmatkqcb* epw_*/sparse* \
|
||||
epw_*/*.Fin_restart* epw_*/*.Fin_restartcb*
|
||||
# Special cases for EPW
|
||||
@rm -rf epw_base/save epw_super/save
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
phonselfen = .false.
|
||||
a2f = .false.
|
||||
|
||||
fsthick = 1.0 ! eV
|
||||
fsthick = 1.2 ! eV
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.01 ! eV
|
||||
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
restart = .true.
|
||||
restart_freq = 1000
|
||||
selecqread = .false.
|
||||
|
||||
lifc = .true.
|
||||
asr_typ = 'crystal'
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
|
||||
restart = .true.
|
||||
restart_freq = 1000
|
||||
selecqread = .true.
|
||||
|
||||
lifc = .true.
|
||||
asr_typ = 'crystal'
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
Comput. Phys. Commun. 209, 116 (2016)
|
||||
|
||||
|
||||
Program EPW v.5.0.0 starts on 11Oct2018 at 15:25:31
|
||||
Program EPW v.5.0.0 starts on 16Oct2018 at 14:25: 8
|
||||
|
||||
This program is part of the open-source Quantum ESPRESSO suite
|
||||
for quantum simulation of materials; please cite
|
||||
|
@ -328,9 +328,9 @@
|
|||
l(4) = 1
|
||||
l(5) = 2
|
||||
l(6) = 2
|
||||
EPW : 0.25s CPU 0.26s WALL
|
||||
EPW : 0.23s CPU 0.24s WALL
|
||||
|
||||
EPW : 0.33s CPU 0.34s WALL
|
||||
EPW : 0.31s CPU 0.32s WALL
|
||||
|
||||
No wavefunction gauge setting applied
|
||||
-------------------------------------------------------------------
|
||||
|
@ -818,7 +818,7 @@
|
|||
( 0.16574 0.16574 0.33426) : 2.12920
|
||||
|
||||
-------------------------------------------------------------------
|
||||
WANNIER : 9.89s CPU 10.13s WALL ( 1 calls)
|
||||
WANNIER : 9.52s CPU 9.58s WALL ( 1 calls)
|
||||
-------------------------------------------------------------------
|
||||
|
||||
Dipole matrix elements calculated
|
||||
|
@ -910,6 +910,7 @@
|
|||
Number of WS vectors for electrons 279
|
||||
Number of WS vectors for phonons 19
|
||||
Number of WS vectors for electron-phonon 19
|
||||
Maximum number of cores for efficient parallelization 114
|
||||
Results may improve by using use_ws == .true.
|
||||
|
||||
Writing Hamiltonian, Dynamical matrix and EP vertex in Wann rep to file
|
||||
|
@ -933,7 +934,7 @@
|
|||
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 57Mb
|
||||
VmPeak = 324Mb
|
||||
VmPeak = 325Mb
|
||||
===================================================================
|
||||
|
||||
Using q-mesh file: ./LGX.txt
|
||||
|
@ -955,39 +956,40 @@
|
|||
|
||||
|
||||
Number of ep-matrix elements per pool : 2400 ~= 18.75 Kb (@ 8 bytes/ DP)
|
||||
Progression iq (fine) = 50/ 100
|
||||
We only need to compute 100 q-points
|
||||
|
||||
Progression iq (fine) = 100/ 100
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 57Mb
|
||||
VmPeak = 324Mb
|
||||
VmPeak = 325Mb
|
||||
===================================================================
|
||||
|
||||
|
||||
Unfolding on the coarse grid
|
||||
elphon_wrap : 16.00s CPU 16.56s WALL ( 1 calls)
|
||||
elphon_wrap : 15.45s CPU 15.92s WALL ( 1 calls)
|
||||
|
||||
INITIALIZATION:
|
||||
|
||||
set_drhoc : 0.18s CPU 0.18s WALL ( 9 calls)
|
||||
set_drhoc : 0.17s CPU 0.17s WALL ( 9 calls)
|
||||
init_vloc : 0.01s CPU 0.01s WALL ( 10 calls)
|
||||
init_us_1 : 0.08s CPU 0.09s WALL ( 10 calls)
|
||||
init_us_1 : 0.08s CPU 0.08s WALL ( 10 calls)
|
||||
|
||||
|
||||
Electron-Phonon interpolation
|
||||
ephwann : 2.58s CPU 2.96s WALL ( 1 calls)
|
||||
ep-interp : 1.56s CPU 1.87s WALL ( 100 calls)
|
||||
ephwann : 2.59s CPU 2.97s WALL ( 1 calls)
|
||||
ep-interp : 1.50s CPU 1.82s WALL ( 100 calls)
|
||||
|
||||
Ham: step 1 : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
Ham: step 2 : 0.03s CPU 0.03s WALL ( 1 calls)
|
||||
ep: step 1 : 0.01s CPU 0.01s WALL ( 48 calls)
|
||||
ep: step 2 : 0.46s CPU 0.47s WALL ( 48 calls)
|
||||
DynW2B : 0.00s CPU 0.00s WALL ( 100 calls)
|
||||
HamW2B : 0.42s CPU 0.44s WALL ( 20200 calls)
|
||||
ephW2Bp : 0.29s CPU 0.55s WALL ( 100 calls)
|
||||
HamW2B : 0.45s CPU 0.46s WALL ( 21866 calls)
|
||||
ephW2Bp : 0.24s CPU 0.53s WALL ( 100 calls)
|
||||
|
||||
|
||||
Total program execution
|
||||
EPW : 28.79s CPU 29.99s WALL
|
||||
EPW : 27.88s CPU 28.78s WALL
|
||||
|
||||
|
||||
Please consider citing:
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
Comput. Phys. Commun. 209, 116 (2016)
|
||||
|
||||
|
||||
Program EPW v.5.0.0 starts on 11Oct2018 at 15:26: 1
|
||||
Program EPW v.5.0.0 starts on 16Oct2018 at 14:25:37
|
||||
|
||||
This program is part of the open-source Quantum ESPRESSO suite
|
||||
for quantum simulation of materials; please cite
|
||||
|
@ -110,6 +110,7 @@
|
|||
Number of WS vectors for electrons 279
|
||||
Number of WS vectors for phonons 19
|
||||
Number of WS vectors for electron-phonon 19
|
||||
Maximum number of cores for efficient parallelization 114
|
||||
Results may improve by using use_ws == .true.
|
||||
|
||||
Reading Hamiltonian, Dynamical matrix and EP vertex in Wann rep from file
|
||||
|
@ -153,12 +154,8 @@
|
|||
|
||||
Number of ep-matrix elements per pool : 100842 ~= 787.83 Kb (@ 8 bytes/ DP)
|
||||
|
||||
===================================================================
|
||||
Start solving iterative Boltzmann Transport Equation
|
||||
===================================================================
|
||||
|
||||
|
||||
Iteration number: 1
|
||||
A selecq.fmt file was found but re-created because selecqread == .false.
|
||||
We only need to compute 343 q-points
|
||||
|
||||
Applying a scissor shift of 0.70000 eV to the conduction states
|
||||
|
||||
|
@ -179,244 +176,26 @@
|
|||
Mobility CB Fermi level 6.872901 eV
|
||||
|
||||
===================================================================
|
||||
Scattering rate
|
||||
Scattering rate for IBTE
|
||||
===================================================================
|
||||
|
||||
restart and restart_freq inputs deactivated (restart point at every q-points).
|
||||
No intermediate mobility will be shown.
|
||||
|
||||
Fermi Surface thickness = 4.000000 eV
|
||||
This is computed with respect to the fine Fermi level 6.339674 eV
|
||||
Only states between 2.339674 eV and 10.339674 eV will be included
|
||||
|
||||
Progression iq (fine) = 50/ 343
|
||||
Creation of a restart point
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.999997E+13 0.119477E-01 x-axis
|
||||
0.208937E-01 y-axis
|
||||
0.385336E-01 z-axis
|
||||
0.237917E-01 avg
|
||||
500.000 7.0136 0.100000E+14 0.702667E-01 x-axis
|
||||
0.118372E+00 y-axis
|
||||
0.245302E+00 z-axis
|
||||
0.144647E+00 avg
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.999998E+13 0.184430E+03 x-axis
|
||||
0.222990E+03 y-axis
|
||||
0.380774E+03 z-axis
|
||||
0.262731E+03 avg
|
||||
500.000 6.8729 0.999997E+13 0.125303E+03 x-axis
|
||||
0.151762E+03 y-axis
|
||||
0.261435E+03 z-axis
|
||||
0.179500E+03 avg
|
||||
|
||||
Note: Mobility are sorted by ascending values and might not correspond to the expected (x,y,z) axis.
|
||||
Total time so far
|
||||
SCAT : 1.10s CPU 1.11s WALL ( 50 calls)
|
||||
MOB : 0.00s CPU 0.01s WALL ( 1 calls)
|
||||
|
||||
Progression iq (fine) = 100/ 343
|
||||
Creation of a restart point
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.999997E+13 0.845545E-02 x-axis
|
||||
0.145166E-01 y-axis
|
||||
0.309025E-01 z-axis
|
||||
0.179582E-01 avg
|
||||
500.000 7.0136 0.100000E+14 0.494488E-01 x-axis
|
||||
0.821013E-01 y-axis
|
||||
0.199056E+00 z-axis
|
||||
0.110202E+00 avg
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.999998E+13 0.128316E+03 x-axis
|
||||
0.164463E+03 y-axis
|
||||
0.359297E+03 z-axis
|
||||
0.217359E+03 avg
|
||||
500.000 6.8729 0.999997E+13 0.870608E+02 x-axis
|
||||
0.111699E+03 y-axis
|
||||
0.247386E+03 z-axis
|
||||
0.148715E+03 avg
|
||||
|
||||
Note: Mobility are sorted by ascending values and might not correspond to the expected (x,y,z) axis.
|
||||
Total time so far
|
||||
SCAT : 2.20s CPU 2.21s WALL ( 101 calls)
|
||||
MOB : 0.00s CPU 0.01s WALL ( 2 calls)
|
||||
|
||||
Progression iq (fine) = 150/ 343
|
||||
Creation of a restart point
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.999997E+13 0.819718E-02 x-axis
|
||||
0.139611E-01 y-axis
|
||||
0.303669E-01 z-axis
|
||||
0.175084E-01 avg
|
||||
500.000 7.0136 0.100000E+14 0.479056E-01 x-axis
|
||||
0.789545E-01 y-axis
|
||||
0.195876E+00 z-axis
|
||||
0.107579E+00 avg
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.999998E+13 0.128300E+03 x-axis
|
||||
0.164450E+03 y-axis
|
||||
0.359265E+03 z-axis
|
||||
0.217338E+03 avg
|
||||
500.000 6.8729 0.999997E+13 0.869792E+02 x-axis
|
||||
0.111634E+03 y-axis
|
||||
0.247258E+03 z-axis
|
||||
0.148624E+03 avg
|
||||
|
||||
Note: Mobility are sorted by ascending values and might not correspond to the expected (x,y,z) axis.
|
||||
Total time so far
|
||||
SCAT : 3.28s CPU 3.29s WALL ( 152 calls)
|
||||
MOB : 0.00s CPU 0.01s WALL ( 3 calls)
|
||||
|
||||
Progression iq (fine) = 200/ 343
|
||||
Creation of a restart point
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.999997E+13 0.812795E-02 x-axis
|
||||
0.139130E-01 y-axis
|
||||
0.160512E-01 z-axis
|
||||
0.126974E-01 avg
|
||||
500.000 7.0136 0.100000E+14 0.475174E-01 x-axis
|
||||
0.786928E-01 y-axis
|
||||
0.985153E-01 z-axis
|
||||
0.749085E-01 avg
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.999998E+13 0.602014E+02 x-axis
|
||||
0.655271E+02 y-axis
|
||||
0.104217E+03 z-axis
|
||||
0.766485E+02 avg
|
||||
500.000 6.8729 0.999997E+13 0.409034E+02 x-axis
|
||||
0.445521E+02 y-axis
|
||||
0.707818E+02 z-axis
|
||||
0.520791E+02 avg
|
||||
|
||||
Note: Mobility are sorted by ascending values and might not correspond to the expected (x,y,z) axis.
|
||||
Total time so far
|
||||
SCAT : 4.38s CPU 4.39s WALL ( 203 calls)
|
||||
MOB : 0.00s CPU 0.01s WALL ( 4 calls)
|
||||
|
||||
Progression iq (fine) = 250/ 343
|
||||
Creation of a restart point
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.999997E+13 0.760158E-02 x-axis
|
||||
0.947590E-02 y-axis
|
||||
0.133022E-01 z-axis
|
||||
0.101266E-01 avg
|
||||
500.000 7.0136 0.100000E+14 0.442582E-01 x-axis
|
||||
0.550498E-01 y-axis
|
||||
0.753436E-01 z-axis
|
||||
0.582172E-01 avg
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.999998E+13 0.439385E+02 x-axis
|
||||
0.525870E+02 y-axis
|
||||
0.814376E+02 z-axis
|
||||
0.593211E+02 avg
|
||||
500.000 6.8729 0.999997E+13 0.298568E+02 x-axis
|
||||
0.356770E+02 y-axis
|
||||
0.552253E+02 z-axis
|
||||
0.402530E+02 avg
|
||||
|
||||
Note: Mobility are sorted by ascending values and might not correspond to the expected (x,y,z) axis.
|
||||
Total time so far
|
||||
SCAT : 5.46s CPU 5.47s WALL ( 254 calls)
|
||||
MOB : 0.00s CPU 0.01s WALL ( 5 calls)
|
||||
|
||||
Progression iq (fine) = 300/ 343
|
||||
Creation of a restart point
|
||||
400.000 6.8619 0.999997E+13
|
||||
500.000 7.0136 0.100000E+14
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
epmatkqread automatically changed to .true. as all scattering have been computed.
|
||||
|
||||
400.000 6.8619 0.999997E+13 0.582870E-02 x-axis
|
||||
0.757065E-02 y-axis
|
||||
0.111759E-01 z-axis
|
||||
0.819175E-02 avg
|
||||
500.000 7.0136 0.100000E+14 0.334968E-01 x-axis
|
||||
0.437302E-01 y-axis
|
||||
0.634060E-01 z-axis
|
||||
0.468777E-01 avg
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.999998E+13 0.439368E+02 x-axis
|
||||
0.525845E+02 y-axis
|
||||
0.814358E+02 z-axis
|
||||
0.593190E+02 avg
|
||||
500.000 6.8729 0.999997E+13 0.298485E+02 x-axis
|
||||
0.356648E+02 y-axis
|
||||
0.552172E+02 z-axis
|
||||
0.402435E+02 avg
|
||||
|
||||
Note: Mobility are sorted by ascending values and might not correspond to the expected (x,y,z) axis.
|
||||
Total time so far
|
||||
SCAT : 6.54s CPU 6.55s WALL ( 305 calls)
|
||||
MOB : 0.00s CPU 0.01s WALL ( 6 calls)
|
||||
|
||||
Temperature 400.000 K
|
||||
Number of elements per core 15116
|
||||
Average over degenerate eigenstates is performed
|
||||
Average over degenerate eigenstates in CB is performed
|
||||
|
||||
Writing scattering rate to file
|
||||
|
||||
Temperature 500.000 K
|
||||
Average over degenerate eigenstates is performed
|
||||
Average over degenerate eigenstates in CB is performed
|
||||
|
||||
Writing scattering rate to file
|
||||
|
||||
Creation of the final restart point
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.999997E+13 0.465971E-02 x-axis
|
||||
0.568930E-02 y-axis
|
||||
0.878282E-02 z-axis
|
||||
0.637728E-02 avg
|
||||
500.000 7.0136 0.100000E+14 0.267397E-01 x-axis
|
||||
0.328128E-01 y-axis
|
||||
0.498193E-01 z-axis
|
||||
0.364573E-01 avg
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
|
@ -431,59 +210,13 @@
|
|||
0.462060E+02 z-axis
|
||||
0.341906E+02 avg
|
||||
|
||||
Note: Mobility are sorted by ascending values and might not correspond to the expected (x,y,z) axis.
|
||||
Total time so far
|
||||
SCAT : 7.48s CPU 7.50s WALL ( 349 calls)
|
||||
MOB : 0.00s CPU 0.01s WALL ( 7 calls)
|
||||
|
||||
|
||||
Iteration number: 2
|
||||
|
||||
Applying a scissor shift of 0.70000 eV to the conduction states
|
||||
|
||||
Temperature 400.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 6.861901 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 7.030498 eV
|
||||
|
||||
Temperature 500.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 7.013557 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 6.872901 eV
|
||||
Progression iq (fine) = 50/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 100/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 150/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 200/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 250/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 300/ 343
|
||||
Creation of a restart point
|
||||
Creation of a restart point
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
Start solving iterative Boltzmann Transport Equation
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.999997E+13 0.508748E-02 x-axis
|
||||
0.677962E-02 y-axis
|
||||
0.912891E-02 z-axis
|
||||
0.699867E-02 avg
|
||||
0.6999E-02 Err
|
||||
500.000 7.0136 0.100000E+14 0.292498E-01 x-axis
|
||||
0.391414E-01 y-axis
|
||||
0.522029E-01 z-axis
|
||||
0.401980E-01 avg
|
||||
0.4020E-01 Err
|
||||
|
||||
Iteration number: 1
|
||||
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
|
@ -493,63 +226,15 @@
|
|||
0.363357E+02 y-axis
|
||||
0.547466E+02 z-axis
|
||||
0.424727E+02 avg
|
||||
0.4247E+02 Err
|
||||
500.000 6.8729 0.999997E+13 0.247699E+02 x-axis
|
||||
0.247699E+02 y-axis
|
||||
0.372317E+02 z-axis
|
||||
0.289238E+02 avg
|
||||
0.2892E+02 Err
|
||||
Total time so far
|
||||
MOBITER : 28.17s CPU 29.57s WALL ( 1 calls)
|
||||
|
||||
0.424727E+02 Err
|
||||
|
||||
Iteration number: 3
|
||||
Iteration number: 2
|
||||
|
||||
Applying a scissor shift of 0.70000 eV to the conduction states
|
||||
|
||||
Temperature 400.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 6.861901 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 7.030498 eV
|
||||
|
||||
Temperature 500.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 7.013557 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 6.872901 eV
|
||||
Progression iq (fine) = 50/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 100/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 150/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 200/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 250/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 300/ 343
|
||||
Creation of a restart point
|
||||
Creation of a restart point
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.999997E+13 0.517573E-02 x-axis
|
||||
0.702124E-02 y-axis
|
||||
0.933232E-02 z-axis
|
||||
0.717643E-02 avg
|
||||
0.1778E-03 Err
|
||||
500.000 7.0136 0.100000E+14 0.297767E-01 x-axis
|
||||
0.405594E-01 y-axis
|
||||
0.535011E-01 z-axis
|
||||
0.412791E-01 avg
|
||||
0.1081E-02 Err
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
|
@ -559,15 +244,30 @@
|
|||
0.369723E+02 y-axis
|
||||
0.573447E+02 z-axis
|
||||
0.437631E+02 avg
|
||||
0.1290E+01 Err
|
||||
500.000 6.8729 0.999997E+13 0.251833E+02 x-axis
|
||||
0.251833E+02 y-axis
|
||||
0.389751E+02 z-axis
|
||||
0.297806E+02 avg
|
||||
0.8567E+00 Err
|
||||
Total time so far
|
||||
MOBITER : 57.00s CPU 59.83s WALL ( 2 calls)
|
||||
|
||||
0.129044E+01 Err
|
||||
|
||||
Iteration number: 3
|
||||
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.999998E+13 0.368935E+02 x-axis
|
||||
0.368935E+02 y-axis
|
||||
0.568370E+02 z-axis
|
||||
0.435413E+02 avg
|
||||
500.000 6.8729 0.999997E+13 0.251333E+02 x-axis
|
||||
0.251333E+02 y-axis
|
||||
0.386364E+02 z-axis
|
||||
0.296343E+02 avg
|
||||
|
||||
0.221811E+00 Err
|
||||
|
||||
Iteration number: 4
|
||||
|
||||
|
@ -575,11 +275,6 @@
|
|||
The iteration reached the maximum but did not converge.
|
||||
===================================================================
|
||||
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 23Mb
|
||||
VmPeak = 300Mb
|
||||
===================================================================
|
||||
|
||||
|
||||
Unfolding on the coarse grid
|
||||
elphon_wrap : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
|
@ -589,16 +284,16 @@
|
|||
|
||||
|
||||
Electron-Phonon interpolation
|
||||
ephwann : 85.50s CPU 89.77s WALL ( 1 calls)
|
||||
ep-interp : 85.29s CPU 89.55s WALL ( 1029 calls)
|
||||
ephwann : 27.61s CPU 28.99s WALL ( 1 calls)
|
||||
ep-interp : 27.38s CPU 28.76s WALL ( 343 calls)
|
||||
|
||||
DynW2B : 0.03s CPU 0.03s WALL ( 1029 calls)
|
||||
HamW2B : 15.77s CPU 16.12s WALL ( 706580 calls)
|
||||
ephW2Bp : 2.45s CPU 5.50s WALL ( 1029 calls)
|
||||
DynW2B : 0.01s CPU 0.01s WALL ( 343 calls)
|
||||
HamW2B : 5.03s CPU 5.11s WALL ( 236670 calls)
|
||||
ephW2Bp : 0.79s CPU 1.83s WALL ( 343 calls)
|
||||
|
||||
|
||||
Total program execution
|
||||
EPW : 1m25.50s CPU 1m29.78s WALL
|
||||
EPW : 27.61s CPU 28.99s WALL
|
||||
|
||||
|
||||
Please consider citing:
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
Comput. Phys. Commun. 209, 116 (2016)
|
||||
|
||||
|
||||
Program EPW v.5.0.0 starts on 11Oct2018 at 15:27:31
|
||||
Program EPW v.5.0.0 starts on 16Oct2018 at 14:26: 6
|
||||
|
||||
This program is part of the open-source Quantum ESPRESSO suite
|
||||
for quantum simulation of materials; please cite
|
||||
|
@ -110,6 +110,7 @@
|
|||
Number of WS vectors for electrons 279
|
||||
Number of WS vectors for phonons 19
|
||||
Number of WS vectors for electron-phonon 19
|
||||
Maximum number of cores for efficient parallelization 114
|
||||
Results may improve by using use_ws == .true.
|
||||
|
||||
Reading Hamiltonian, Dynamical matrix and EP vertex in Wann rep from file
|
||||
|
@ -152,33 +153,47 @@
|
|||
|
||||
|
||||
Number of ep-matrix elements per pool : 100842 ~= 787.83 Kb (@ 8 bytes/ DP)
|
||||
Restart from tau_CB: 343/ 343
|
||||
Restart from tau: 343/ 343
|
||||
Restart from iter: 3 and iq: 343/ 343
|
||||
Number of elements per core 12956
|
||||
Average over degenerate eigenstates is performed
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.999997E+13 0.465971E-02 x-axis
|
||||
0.568930E-02 y-axis
|
||||
0.878282E-02 z-axis
|
||||
0.637728E-02 avg
|
||||
500.000 7.0136 0.100000E+14 0.267397E-01 x-axis
|
||||
0.328128E-01 y-axis
|
||||
0.498193E-01 z-axis
|
||||
0.364573E-01 avg
|
||||
|
||||
===================================================================
|
||||
Start solving iterative Boltzmann Transport Equation
|
||||
===================================================================
|
||||
|
||||
|
||||
Iteration number: 3
|
||||
Iteration number: 1
|
||||
|
||||
|
||||
Temperature 400.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 6.861901 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 7.030498 eV
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.999997E+13 0.508748E-02 x-axis
|
||||
0.677962E-02 y-axis
|
||||
0.912891E-02 z-axis
|
||||
0.699867E-02 avg
|
||||
500.000 7.0136 0.100000E+14 0.292498E-01 x-axis
|
||||
0.391414E-01 y-axis
|
||||
0.522029E-01 z-axis
|
||||
0.401980E-01 avg
|
||||
|
||||
0.401980E-01 Err
|
||||
|
||||
Iteration number: 2
|
||||
|
||||
Temperature 500.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 7.013557 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 6.872901 eV
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
|
@ -188,64 +203,16 @@
|
|||
0.702124E-02 y-axis
|
||||
0.933232E-02 z-axis
|
||||
0.717643E-02 avg
|
||||
0.1778E-03 Err
|
||||
500.000 7.0136 0.100000E+14 0.297767E-01 x-axis
|
||||
0.405594E-01 y-axis
|
||||
0.535011E-01 z-axis
|
||||
0.412791E-01 avg
|
||||
0.1081E-02 Err
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
0.108106E-02 Err
|
||||
|
||||
400.000 7.0305 0.999998E+13 0.369723E+02 x-axis
|
||||
0.369723E+02 y-axis
|
||||
0.573447E+02 z-axis
|
||||
0.437631E+02 avg
|
||||
0.1290E+01 Err
|
||||
500.000 6.8729 0.999997E+13 0.251833E+02 x-axis
|
||||
0.251833E+02 y-axis
|
||||
0.389751E+02 z-axis
|
||||
0.297806E+02 avg
|
||||
0.8567E+00 Err
|
||||
Total time so far
|
||||
MOBITER : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
Iteration number: 3
|
||||
|
||||
|
||||
Iteration number: 4
|
||||
|
||||
Applying a scissor shift of 0.70000 eV to the conduction states
|
||||
|
||||
Temperature 400.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 6.861901 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 7.030498 eV
|
||||
|
||||
Temperature 500.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 7.013557 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 6.872901 eV
|
||||
Progression iq (fine) = 50/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 100/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 150/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 200/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 250/ 343
|
||||
Creation of a restart point
|
||||
Progression iq (fine) = 300/ 343
|
||||
Creation of a restart point
|
||||
Creation of a restart point
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
@ -254,30 +221,30 @@
|
|||
0.706249E-02 y-axis
|
||||
0.936655E-02 z-axis
|
||||
0.720779E-02 avg
|
||||
0.3137E-04 Err
|
||||
500.000 7.0136 0.100000E+14 0.298890E-01 x-axis
|
||||
0.408072E-01 y-axis
|
||||
0.537310E-01 z-axis
|
||||
0.414757E-01 avg
|
||||
0.1967E-03 Err
|
||||
|
||||
0.196654E-03 Err
|
||||
|
||||
Iteration number: 4
|
||||
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.999998E+13 0.368935E+02 x-axis
|
||||
0.368935E+02 y-axis
|
||||
0.568370E+02 z-axis
|
||||
0.435413E+02 avg
|
||||
0.2218E+00 Err
|
||||
500.000 6.8729 0.999997E+13 0.251333E+02 x-axis
|
||||
0.251333E+02 y-axis
|
||||
0.386364E+02 z-axis
|
||||
0.296343E+02 avg
|
||||
0.1463E+00 Err
|
||||
Total time so far
|
||||
MOBITER : 28.63s CPU 30.12s WALL ( 2 calls)
|
||||
400.000 6.8619 0.999997E+13 0.519833E-02 x-axis
|
||||
0.707076E-02 y-axis
|
||||
0.938236E-02 z-axis
|
||||
0.721715E-02 avg
|
||||
500.000 7.0136 0.100000E+14 0.299135E-01 x-axis
|
||||
0.408575E-01 y-axis
|
||||
0.538368E-01 z-axis
|
||||
0.415360E-01 avg
|
||||
|
||||
0.602225E-04 Err
|
||||
|
||||
Iteration number: 5
|
||||
|
||||
|
@ -285,11 +252,6 @@
|
|||
The iteration reached the maximum but did not converge.
|
||||
===================================================================
|
||||
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 23Mb
|
||||
VmPeak = 301Mb
|
||||
===================================================================
|
||||
|
||||
|
||||
Unfolding on the coarse grid
|
||||
elphon_wrap : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
|
@ -299,16 +261,13 @@
|
|||
|
||||
|
||||
Electron-Phonon interpolation
|
||||
ephwann : 28.99s CPU 30.50s WALL ( 1 calls)
|
||||
ep-interp : 28.78s CPU 30.27s WALL ( 344 calls)
|
||||
ephwann : 0.22s CPU 0.22s WALL ( 1 calls)
|
||||
|
||||
DynW2B : 0.01s CPU 0.01s WALL ( 344 calls)
|
||||
HamW2B : 5.33s CPU 5.46s WALL ( 236670 calls)
|
||||
ephW2Bp : 0.82s CPU 1.86s WALL ( 344 calls)
|
||||
HamW2B : 0.01s CPU 0.01s WALL ( 686 calls)
|
||||
|
||||
|
||||
Total program execution
|
||||
EPW : 28.99s CPU 30.50s WALL
|
||||
EPW : 0.22s CPU 0.22s WALL
|
||||
|
||||
|
||||
Please consider citing:
|
||||
|
|
|
@ -1,567 +0,0 @@
|
|||
|
||||
``:oss/
|
||||
`.+s+. .+ys--yh+ `./ss+.
|
||||
-sh//yy+` +yy +yy -+h+-oyy
|
||||
-yh- .oyy/.-sh. .syo-.:sy- /yh
|
||||
`.-.` `yh+ -oyyyo. `/syys: oys `.`
|
||||
`/+ssys+-` `sh+ ` oys` .:osyo`
|
||||
-yh- ./syyooyo` .sys+/oyo--yh/
|
||||
`yy+ .-:-. `-/+/:` -sh-
|
||||
/yh. oys
|
||||
``..---hho---------` .---------..` `.-----.` -hd+---.
|
||||
`./osmNMMMMMMMMMMMMMMMs. +NNMMMMMMMMNNmh+. yNMMMMMNm- oNMMMMMNmo++:`
|
||||
+sy--/sdMMMhyyyyyyyNMMh- .oyNMMmyyyyyhNMMm+` -yMMMdyyo:` .oyyNMMNhs+syy`
|
||||
-yy/ /MMM+.`-+/``mMMy- `mMMh:`````.dMMN:` `MMMy-`-dhhy```mMMy:``+hs
|
||||
-yy+` /MMMo:-mMM+`-oo/. mMMh: `dMMN/` dMMm:`dMMMMy..MMMo-.+yo`
|
||||
.sys`/MMMMNNMMMs- mMMmyooooymMMNo: oMMM/sMMMMMM++MMN//oh:
|
||||
`sh+/MMMhyyMMMs- `-` mMMMMMMMMMNmy+-` -MMMhMMMsmMMmdMMd/yy+
|
||||
`-/+++oyy-/MMM+.`/hh/.`mNm:` mMMd+/////:-.` NMMMMMd/:NMMMMMy:/yyo/:.`
|
||||
+os+//:-..-oMMMo:--:::-/MMMo. .-mMMd+---` hMMMMN+. oMMMMMo. `-+osyso:`
|
||||
syo `mNMMMMMNNNNNNNNMMMo.oNNMMMMMNNNN:` +MMMMs:` dMMMN/` ``:syo
|
||||
/yh` :syyyyyyyyyyyyyyyy+.`+syyyyyyyyo:` .oyys:` .oyys:` +yh
|
||||
-yh- ```````````````` ````````` `` `` oys
|
||||
-+h/------------------------::::::::://////++++++++++++++++++++++///////::::/yd:
|
||||
shdddddddddddddddddddddddddddddhhhhhhhhyyyyyssssssssssssssssyyyyyyyhhhhhhhddddh`
|
||||
|
||||
S. Ponce, E. R. Margine, C. Verdi, and F. Giustino,
|
||||
Comput. Phys. Commun. 209, 116 (2016)
|
||||
|
||||
|
||||
Program EPW v.5.0.0 starts on 11Oct2018 at 15:28: 2
|
||||
|
||||
This program is part of the open-source Quantum ESPRESSO suite
|
||||
for quantum simulation of materials; please cite
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 21 395502 (2009);
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 29 465901 (2017);
|
||||
URL http://www.quantum-espresso.org",
|
||||
in publications or presentations arising from this work. More details at
|
||||
http://www.quantum-espresso.org/quote
|
||||
|
||||
Parallel version (MPI), running on 1 processors
|
||||
|
||||
MPI processes distributed on 1 nodes
|
||||
|
||||
------------------------------------------------------------------------
|
||||
RESTART - RESTART - RESTART - RESTART
|
||||
Restart is done without reading PWSCF save file.
|
||||
Be aware that some consistency checks are therefore not done.
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
--
|
||||
|
||||
bravais-lattice index = 0
|
||||
lattice parameter (a_0) = 0.0000 a.u.
|
||||
unit-cell volume = 0.0000 (a.u.)^3
|
||||
number of atoms/cell = 0
|
||||
number of atomic types = 0
|
||||
kinetic-energy cut-off = 0.0000 Ry
|
||||
charge density cut-off = 0.0000 Ry
|
||||
convergence threshold = 0.0E+00
|
||||
beta = 0.0000
|
||||
number of iterations used = 0
|
||||
Exchange-correlation = not set (-1 -1 -1 -1-1-1)
|
||||
|
||||
|
||||
celldm(1)= 0.00000 celldm(2)= 0.00000 celldm(3)= 0.00000
|
||||
celldm(4)= 0.00000 celldm(5)= 0.00000 celldm(6)= 0.00000
|
||||
|
||||
crystal axes: (cart. coord. in units of a_0)
|
||||
a(1) = ( 0.0000 0.0000 0.0000 )
|
||||
a(2) = ( 0.0000 0.0000 0.0000 )
|
||||
a(3) = ( 0.0000 0.0000 0.0000 )
|
||||
|
||||
reciprocal axes: (cart. coord. in units 2 pi/a_0)
|
||||
b(1) = ( 0.0000 0.0000 0.0000 )
|
||||
b(2) = ( 0.0000 0.0000 0.0000 )
|
||||
b(3) = ( 0.0000 0.0000 0.0000 )
|
||||
|
||||
|
||||
Atoms inside the unit cell:
|
||||
|
||||
Cartesian axes
|
||||
|
||||
site n. atom mass positions (a_0 units)
|
||||
|
||||
|
||||
No symmetry!
|
||||
|
||||
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.00s WALL
|
||||
|
||||
EPW : 0.00s CPU 0.00s WALL
|
||||
|
||||
No wavefunction gauge setting applied
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Using si.ukk from disk
|
||||
-------------------------------------------------------------------
|
||||
|
||||
|
||||
Using kmap and kgmap from disk
|
||||
|
||||
Do not need to read .epb files; read .fmt files
|
||||
|
||||
|
||||
Band disentanglement is used: nbndsub = 8
|
||||
Use zone-centred Wigner-Seitz cells
|
||||
Number of WS vectors for electrons 279
|
||||
Number of WS vectors for phonons 19
|
||||
Number of WS vectors for electron-phonon 19
|
||||
Results may improve by using use_ws == .true.
|
||||
|
||||
Reading Hamiltonian, Dynamical matrix and EP vertex in Wann rep from file
|
||||
|
||||
|
||||
Reading interatomic force constants
|
||||
|
||||
Read Z* and epsilon
|
||||
IFC last -0.0026126
|
||||
Norm of the difference between old and new effective charges: 0.0000000
|
||||
Norm of the difference between old and new force-constants: 0.0000020
|
||||
Imposed crystal ASR
|
||||
|
||||
Finished reading ifcs
|
||||
|
||||
|
||||
Finished reading Wann rep data from file
|
||||
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 12Mb
|
||||
VmPeak = 273Mb
|
||||
===================================================================
|
||||
|
||||
Using uniform q-mesh: 7 7 7
|
||||
Size of q point mesh for interpolation: 343
|
||||
Using uniform MP k-mesh: 7 7 7
|
||||
Size of k point mesh for interpolation: 40
|
||||
Max number of k points per pool: 40
|
||||
|
||||
Fermi energy coarse grid = 0.000000 eV
|
||||
|
||||
Fermi energy is calculated from the fine k-mesh: Ef = 6.339674 eV
|
||||
|
||||
Warning: check if difference with Fermi level fine grid makes sense
|
||||
|
||||
===================================================================
|
||||
|
||||
ibndmin = 2 ebndmin = 0.190
|
||||
ibndmax = 8 ebndmax = 0.760
|
||||
|
||||
|
||||
Number of ep-matrix elements per pool : 5880 ~= 45.94 Kb (@ 8 bytes/ DP)
|
||||
|
||||
===================================================================
|
||||
Start solving iterative Boltzmann Transport Equation
|
||||
===================================================================
|
||||
|
||||
|
||||
Iteration number: 1
|
||||
|
||||
Applying a scissor shift of 0.70000 eV to the conduction states
|
||||
|
||||
Temperature 400.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 6.861901 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 7.030498 eV
|
||||
|
||||
Temperature 500.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 7.013560 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 6.872905 eV
|
||||
|
||||
===================================================================
|
||||
Scattering rate
|
||||
===================================================================
|
||||
|
||||
|
||||
Fermi Surface thickness = 4.000000 eV
|
||||
This is computed with respect to the fine Fermi level 6.339674 eV
|
||||
Only states between 2.339674 eV and 10.339674 eV will be included
|
||||
|
||||
Progression iq (fine) = 50/ 343
|
||||
Progression iq (fine) = 100/ 343
|
||||
Progression iq (fine) = 150/ 343
|
||||
Progression iq (fine) = 200/ 343
|
||||
Progression iq (fine) = 250/ 343
|
||||
Progression iq (fine) = 300/ 343
|
||||
Temperature 400.000 K
|
||||
Average over degenerate eigenstates is performed
|
||||
Average over degenerate eigenstates in CB is performed
|
||||
|
||||
Writing scattering rate to file
|
||||
|
||||
Temperature 500.000 K
|
||||
Average over degenerate eigenstates is performed
|
||||
Average over degenerate eigenstates in CB is performed
|
||||
|
||||
Writing scattering rate to file
|
||||
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.100000E+14 0.478637E-02 x-axis
|
||||
0.478658E-02 y-axis
|
||||
0.115242E-01 z-axis
|
||||
0.703239E-02 avg
|
||||
500.000 7.0136 0.100000E+14 0.274743E-01 x-axis
|
||||
0.274758E-01 y-axis
|
||||
0.637071E-01 z-axis
|
||||
0.395524E-01 avg
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.100001E+14 0.340694E+02 x-axis
|
||||
0.584587E+02 y-axis
|
||||
0.584588E+02 z-axis
|
||||
0.503290E+02 avg
|
||||
500.000 6.8729 0.100000E+14 0.231476E+02 x-axis
|
||||
0.397038E+02 y-axis
|
||||
0.397039E+02 z-axis
|
||||
0.341851E+02 avg
|
||||
|
||||
Note: Mobility are sorted by ascending values and might not correspond to the expected (x,y,z) axis.
|
||||
Total time so far
|
||||
SCAT : 0.43s CPU 0.43s WALL ( 343 calls)
|
||||
MOB : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
|
||||
|
||||
Iteration number: 2
|
||||
|
||||
Applying a scissor shift of 0.70000 eV to the conduction states
|
||||
|
||||
Temperature 400.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 6.861901 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 7.030498 eV
|
||||
|
||||
Temperature 500.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 7.013560 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 6.872905 eV
|
||||
Progression iq (fine) = 50/ 343
|
||||
Progression iq (fine) = 100/ 343
|
||||
Progression iq (fine) = 150/ 343
|
||||
Progression iq (fine) = 200/ 343
|
||||
Progression iq (fine) = 250/ 343
|
||||
Progression iq (fine) = 300/ 343
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.100000E+14 0.590051E-02 x-axis
|
||||
0.590248E-02 y-axis
|
||||
0.116036E-01 z-axis
|
||||
0.780221E-02 avg
|
||||
0.7802E-02 Err
|
||||
500.000 7.0136 0.100000E+14 0.339718E-01 x-axis
|
||||
0.339864E-01 y-axis
|
||||
0.644797E-01 z-axis
|
||||
0.441460E-01 avg
|
||||
0.4415E-01 Err
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.100001E+14 0.306606E+02 x-axis
|
||||
0.484285E+02 y-axis
|
||||
0.484296E+02 z-axis
|
||||
0.425062E+02 avg
|
||||
0.4251E+02 Err
|
||||
500.000 6.8729 0.100000E+14 0.209085E+02 x-axis
|
||||
0.329592E+02 y-axis
|
||||
0.329615E+02 z-axis
|
||||
0.289430E+02 avg
|
||||
0.2894E+02 Err
|
||||
Total time so far
|
||||
MOBITER : 3.15s CPU 4.22s WALL ( 1 calls)
|
||||
|
||||
|
||||
Iteration number: 3
|
||||
|
||||
Applying a scissor shift of 0.70000 eV to the conduction states
|
||||
|
||||
Temperature 400.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 6.861901 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 7.030498 eV
|
||||
|
||||
Temperature 500.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 7.013560 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 6.872905 eV
|
||||
Progression iq (fine) = 50/ 343
|
||||
Progression iq (fine) = 100/ 343
|
||||
Progression iq (fine) = 150/ 343
|
||||
Progression iq (fine) = 200/ 343
|
||||
Progression iq (fine) = 250/ 343
|
||||
Progression iq (fine) = 300/ 343
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.100000E+14 0.644417E-02 x-axis
|
||||
0.644751E-02 y-axis
|
||||
0.118128E-01 z-axis
|
||||
0.823483E-02 avg
|
||||
0.4326E-03 Err
|
||||
500.000 7.0136 0.100000E+14 0.371091E-01 x-axis
|
||||
0.371345E-01 y-axis
|
||||
0.657224E-01 z-axis
|
||||
0.466553E-01 avg
|
||||
0.2509E-02 Err
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.100001E+14 0.310017E+02 x-axis
|
||||
0.501495E+02 y-axis
|
||||
0.501503E+02 z-axis
|
||||
0.437672E+02 avg
|
||||
0.1261E+01 Err
|
||||
500.000 6.8729 0.100000E+14 0.211251E+02 x-axis
|
||||
0.341053E+02 y-axis
|
||||
0.341071E+02 z-axis
|
||||
0.297792E+02 avg
|
||||
0.8362E+00 Err
|
||||
Total time so far
|
||||
MOBITER : 6.21s CPU 8.45s WALL ( 2 calls)
|
||||
|
||||
|
||||
Iteration number: 4
|
||||
|
||||
Applying a scissor shift of 0.70000 eV to the conduction states
|
||||
|
||||
Temperature 400.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 6.861901 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 7.030498 eV
|
||||
|
||||
Temperature 500.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 7.013560 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 6.872905 eV
|
||||
Progression iq (fine) = 50/ 343
|
||||
Progression iq (fine) = 100/ 343
|
||||
Progression iq (fine) = 150/ 343
|
||||
Progression iq (fine) = 200/ 343
|
||||
Progression iq (fine) = 250/ 343
|
||||
Progression iq (fine) = 300/ 343
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.100000E+14 0.660118E-02 x-axis
|
||||
0.660483E-02 y-axis
|
||||
0.118134E-01 z-axis
|
||||
0.833980E-02 avg
|
||||
0.1050E-03 Err
|
||||
500.000 7.0136 0.100000E+14 0.380423E-01 x-axis
|
||||
0.380701E-01 y-axis
|
||||
0.657563E-01 z-axis
|
||||
0.472896E-01 avg
|
||||
0.6342E-03 Err
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.100001E+14 0.309675E+02 x-axis
|
||||
0.498542E+02 y-axis
|
||||
0.498551E+02 z-axis
|
||||
0.435590E+02 avg
|
||||
0.2082E+00 Err
|
||||
500.000 6.8729 0.100000E+14 0.211041E+02 x-axis
|
||||
0.339105E+02 y-axis
|
||||
0.339125E+02 z-axis
|
||||
0.296424E+02 avg
|
||||
0.1368E+00 Err
|
||||
Total time so far
|
||||
MOBITER : 9.26s CPU 12.65s WALL ( 3 calls)
|
||||
|
||||
|
||||
Iteration number: 5
|
||||
|
||||
Applying a scissor shift of 0.70000 eV to the conduction states
|
||||
|
||||
Temperature 400.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 6.861901 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 7.030498 eV
|
||||
|
||||
Temperature 500.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 7.013560 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 6.872905 eV
|
||||
Progression iq (fine) = 50/ 343
|
||||
Progression iq (fine) = 100/ 343
|
||||
Progression iq (fine) = 150/ 343
|
||||
Progression iq (fine) = 200/ 343
|
||||
Progression iq (fine) = 250/ 343
|
||||
Progression iq (fine) = 300/ 343
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.100000E+14 0.666450E-02 x-axis
|
||||
0.666825E-02 y-axis
|
||||
0.118240E-01 z-axis
|
||||
0.838558E-02 avg
|
||||
0.4578E-04 Err
|
||||
500.000 7.0136 0.100000E+14 0.384180E-01 x-axis
|
||||
0.384467E-01 y-axis
|
||||
0.658280E-01 z-axis
|
||||
0.475642E-01 avg
|
||||
0.2746E-03 Err
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.100001E+14 0.309709E+02 x-axis
|
||||
0.499049E+02 y-axis
|
||||
0.499058E+02 z-axis
|
||||
0.435939E+02 avg
|
||||
0.3491E-01 Err
|
||||
500.000 6.8729 0.100000E+14 0.211062E+02 x-axis
|
||||
0.339436E+02 y-axis
|
||||
0.339456E+02 z-axis
|
||||
0.296651E+02 avg
|
||||
0.2274E-01 Err
|
||||
Total time so far
|
||||
MOBITER : 12.35s CPU 16.89s WALL ( 4 calls)
|
||||
|
||||
|
||||
Iteration number: 6
|
||||
|
||||
Applying a scissor shift of 0.70000 eV to the conduction states
|
||||
|
||||
Temperature 400.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 6.861901 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 7.030498 eV
|
||||
|
||||
Temperature 500.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 7.013560 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 6.872905 eV
|
||||
Progression iq (fine) = 50/ 343
|
||||
Progression iq (fine) = 100/ 343
|
||||
Progression iq (fine) = 150/ 343
|
||||
Progression iq (fine) = 200/ 343
|
||||
Progression iq (fine) = 250/ 343
|
||||
Progression iq (fine) = 300/ 343
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.100000E+14 0.668478E-02 x-axis
|
||||
0.668856E-02 y-axis
|
||||
0.118253E-01 z-axis
|
||||
0.839956E-02 avg
|
||||
0.1398E-04 Err
|
||||
500.000 7.0136 0.100000E+14 0.385409E-01 x-axis
|
||||
0.385698E-01 y-axis
|
||||
0.658391E-01 z-axis
|
||||
0.476499E-01 avg
|
||||
0.8572E-04 Err
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.100001E+14 0.309706E+02 x-axis
|
||||
0.498962E+02 y-axis
|
||||
0.498971E+02 z-axis
|
||||
0.435880E+02 avg
|
||||
0.5909E-02 Err
|
||||
500.000 6.8729 0.100000E+14 0.211060E+02 x-axis
|
||||
0.339380E+02 y-axis
|
||||
0.339399E+02 z-axis
|
||||
0.296613E+02 avg
|
||||
0.3816E-02 Err
|
||||
Total time so far
|
||||
MOBITER : 15.43s CPU 21.13s WALL ( 5 calls)
|
||||
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 20Mb
|
||||
VmPeak = 297Mb
|
||||
===================================================================
|
||||
|
||||
|
||||
Unfolding on the coarse grid
|
||||
elphon_wrap : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
|
||||
INITIALIZATION:
|
||||
|
||||
|
||||
|
||||
Electron-Phonon interpolation
|
||||
ephwann : 18.05s CPU 24.91s WALL ( 1 calls)
|
||||
ep-interp : 17.87s CPU 24.73s WALL ( 2058 calls)
|
||||
|
||||
DynW2B : 0.04s CPU 0.04s WALL ( 2058 calls)
|
||||
HamW2B : 1.66s CPU 2.01s WALL ( 82360 calls)
|
||||
ephW2Bp : 5.40s CPU 10.95s WALL ( 2058 calls)
|
||||
|
||||
|
||||
Total program execution
|
||||
EPW : 18.05s CPU 24.91s WALL
|
||||
|
||||
|
||||
Please consider citing:
|
||||
S. Ponce, E. R. Margine, C. Verdi and F. Giustino, Comput. Phys. Commun. 209, 116 (2016)
|
||||
|
||||
In addition, if you used anisotropic Eliashberg superconductivity please cite:
|
||||
E. R. Margine and F. Giustino, Phys. Rev. B 87, 024505 (2013)
|
||||
if you used transport properties (scattering rates, mobility) please cite:
|
||||
S. Ponce, E. R. Margine and F. Giustino, Phys. Rev. B 97, 121201 (2018)
|
|
@ -20,6 +20,7 @@
|
|||
ncarrier = 1E13
|
||||
mp_mesh_k = .false.
|
||||
iterative_bte = .true.
|
||||
epmatkqread = .false.
|
||||
mob_maxiter = 3
|
||||
broyden_beta= 1.0
|
||||
|
||||
|
@ -32,6 +33,7 @@
|
|||
|
||||
restart = .true.
|
||||
restart_freq = 50
|
||||
selecqread = .false.
|
||||
|
||||
lifc = .true.
|
||||
asr_typ = 'crystal'
|
||||
|
@ -62,7 +64,6 @@
|
|||
wdata(13) = 'write_hr = .true.'
|
||||
wdata(14) = 'write_rmn = .true.'
|
||||
|
||||
|
||||
elecselfen = .false.
|
||||
phonselfen = .false.
|
||||
a2f = .false.
|
||||
|
|
|
@ -17,9 +17,10 @@
|
|||
scattering_serta = .true.
|
||||
int_mob = .true.
|
||||
carrier = .true.
|
||||
ncarrier = 1E13
|
||||
ncarrier = -1E13
|
||||
mp_mesh_k = .false.
|
||||
iterative_bte = .true.
|
||||
epmatkqread = .true.
|
||||
mob_maxiter = 4
|
||||
broyden_beta= 1.0
|
||||
|
||||
|
|
|
@ -0,0 +1,101 @@
|
|||
100 crystal
|
||||
0.5 0.5 0.5 0.01
|
||||
0.49 0.49 0.49 0.01
|
||||
0.48 0.48 0.48 0.01
|
||||
0.47 0.47 0.47 0.01
|
||||
0.46 0.46 0.46 0.01
|
||||
0.45 0.45 0.45 0.01
|
||||
0.44 0.44 0.44 0.01
|
||||
0.43 0.43 0.43 0.01
|
||||
0.42 0.42 0.42 0.01
|
||||
0.41 0.41 0.41 0.01
|
||||
0.4 0.4 0.4 0.01
|
||||
0.39 0.39 0.39 0.01
|
||||
0.38 0.38 0.38 0.01
|
||||
0.37 0.37 0.37 0.01
|
||||
0.36 0.36 0.36 0.01
|
||||
0.35 0.35 0.35 0.01
|
||||
0.34 0.34 0.34 0.01
|
||||
0.33 0.33 0.33 0.01
|
||||
0.32 0.32 0.32 0.01
|
||||
0.31 0.31 0.31 0.01
|
||||
0.3 0.3 0.3 0.01
|
||||
0.29 0.29 0.29 0.01
|
||||
0.28 0.28 0.28 0.01
|
||||
0.27 0.27 0.27 0.01
|
||||
0.26 0.26 0.26 0.01
|
||||
0.25 0.25 0.25 0.01
|
||||
0.24 0.24 0.24 0.01
|
||||
0.23 0.23 0.23 0.01
|
||||
0.22 0.22 0.22 0.01
|
||||
0.21 0.21 0.21 0.01
|
||||
0.2 0.2 0.2 0.01
|
||||
0.19 0.19 0.19 0.01
|
||||
0.18 0.18 0.18 0.01
|
||||
0.17 0.17 0.17 0.01
|
||||
0.16 0.16 0.16 0.01
|
||||
0.15 0.15 0.15 0.01
|
||||
0.14 0.14 0.14 0.01
|
||||
0.13 0.13 0.13 0.01
|
||||
0.12 0.12 0.12 0.01
|
||||
0.11 0.11 0.11 0.01
|
||||
0.1 0.1 0.1 0.01
|
||||
0.09 0.09 0.09 0.01
|
||||
0.08 0.08 0.08 0.01
|
||||
0.07 0.07 0.07 0.01
|
||||
0.06 0.06 0.06 0.01
|
||||
0.05 0.05 0.05 0.01
|
||||
0.04 0.04 0.04 0.01
|
||||
0.03 0.03 0.03 0.01
|
||||
0.02 0.02 0.02 0.01
|
||||
0.01 0.01 0.01 0.01
|
||||
0.0 0.0 0.0 0.01
|
||||
0.0 0.01 0.01 0.01
|
||||
0.0 0.02 0.02 0.01
|
||||
0.0 0.03 0.03 0.01
|
||||
0.0 0.04 0.04 0.01
|
||||
0.0 0.05 0.05 0.01
|
||||
0.0 0.06 0.06 0.01
|
||||
0.0 0.07 0.07 0.01
|
||||
0.0 0.08 0.08 0.01
|
||||
0.0 0.09 0.09 0.01
|
||||
0.0 0.1 0.1 0.01
|
||||
0.0 0.11 0.11 0.01
|
||||
0.0 0.12 0.12 0.01
|
||||
0.0 0.13 0.13 0.01
|
||||
0.0 0.14 0.14 0.01
|
||||
0.0 0.15 0.15 0.01
|
||||
0.0 0.16 0.16 0.01
|
||||
0.0 0.17 0.17 0.01
|
||||
0.0 0.18 0.18 0.01
|
||||
0.0 0.19 0.19 0.01
|
||||
0.0 0.2 0.2 0.01
|
||||
0.0 0.21 0.21 0.01
|
||||
0.0 0.22 0.22 0.01
|
||||
0.0 0.23 0.23 0.01
|
||||
0.0 0.24 0.24 0.01
|
||||
0.0 0.25 0.25 0.01
|
||||
0.0 0.26 0.26 0.01
|
||||
0.0 0.27 0.27 0.01
|
||||
0.0 0.28 0.28 0.01
|
||||
0.0 0.29 0.29 0.01
|
||||
0.0 0.3 0.3 0.01
|
||||
0.0 0.31 0.31 0.01
|
||||
0.0 0.32 0.32 0.01
|
||||
0.0 0.33 0.33 0.01
|
||||
0.0 0.34 0.34 0.01
|
||||
0.0 0.35 0.35 0.01
|
||||
0.0 0.36 0.36 0.01
|
||||
0.0 0.37 0.37 0.01
|
||||
0.0 0.38 0.38 0.01
|
||||
0.0 0.39 0.39 0.01
|
||||
0.0 0.4 0.4 0.01
|
||||
0.0 0.41 0.41 0.01
|
||||
0.0 0.42 0.42 0.01
|
||||
0.0 0.43 0.43 0.01
|
||||
0.0 0.44 0.44 0.01
|
||||
0.0 0.45 0.45 0.01
|
||||
0.0 0.46 0.46 0.01
|
||||
0.0 0.47 0.47 0.01
|
||||
0.0 0.48 0.48 0.01
|
||||
0.0 0.49 0.49 0.01
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,305 @@
|
|||
|
||||
``:oss/
|
||||
`.+s+. .+ys--yh+ `./ss+.
|
||||
-sh//yy+` +yy +yy -+h+-oyy
|
||||
-yh- .oyy/.-sh. .syo-.:sy- /yh
|
||||
`.-.` `yh+ -oyyyo. `/syys: oys `.`
|
||||
`/+ssys+-` `sh+ ` oys` .:osyo`
|
||||
-yh- ./syyooyo` .sys+/oyo--yh/
|
||||
`yy+ .-:-. `-/+/:` -sh-
|
||||
/yh. oys
|
||||
``..---hho---------` .---------..` `.-----.` -hd+---.
|
||||
`./osmNMMMMMMMMMMMMMMMs. +NNMMMMMMMMNNmh+. yNMMMMMNm- oNMMMMMNmo++:`
|
||||
+sy--/sdMMMhyyyyyyyNMMh- .oyNMMmyyyyyhNMMm+` -yMMMdyyo:` .oyyNMMNhs+syy`
|
||||
-yy/ /MMM+.`-+/``mMMy- `mMMh:`````.dMMN:` `MMMy-`-dhhy```mMMy:``+hs
|
||||
-yy+` /MMMo:-mMM+`-oo/. mMMh: `dMMN/` dMMm:`dMMMMy..MMMo-.+yo`
|
||||
.sys`/MMMMNNMMMs- mMMmyooooymMMNo: oMMM/sMMMMMM++MMN//oh:
|
||||
`sh+/MMMhyyMMMs- `-` mMMMMMMMMMNmy+-` -MMMhMMMsmMMmdMMd/yy+
|
||||
`-/+++oyy-/MMM+.`/hh/.`mNm:` mMMd+/////:-.` NMMMMMd/:NMMMMMy:/yyo/:.`
|
||||
+os+//:-..-oMMMo:--:::-/MMMo. .-mMMd+---` hMMMMN+. oMMMMMo. `-+osyso:`
|
||||
syo `mNMMMMMNNNNNNNNMMMo.oNNMMMMMNNNN:` +MMMMs:` dMMMN/` ``:syo
|
||||
/yh` :syyyyyyyyyyyyyyyy+.`+syyyyyyyyo:` .oyys:` .oyys:` +yh
|
||||
-yh- ```````````````` ````````` `` `` oys
|
||||
-+h/------------------------::::::::://////++++++++++++++++++++++///////::::/yd:
|
||||
shdddddddddddddddddddddddddddddhhhhhhhhyyyyyssssssssssssssssyyyyyyyhhhhhhhddddh`
|
||||
|
||||
S. Ponce, E. R. Margine, C. Verdi, and F. Giustino,
|
||||
Comput. Phys. Commun. 209, 116 (2016)
|
||||
|
||||
|
||||
Program EPW v.5.0.0 starts on 16Oct2018 at 16: 5:21
|
||||
|
||||
This program is part of the open-source Quantum ESPRESSO suite
|
||||
for quantum simulation of materials; please cite
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 21 395502 (2009);
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 29 465901 (2017);
|
||||
URL http://www.quantum-espresso.org",
|
||||
in publications or presentations arising from this work. More details at
|
||||
http://www.quantum-espresso.org/quote
|
||||
|
||||
Parallel version (MPI), running on 1 processors
|
||||
|
||||
MPI processes distributed on 1 nodes
|
||||
|
||||
------------------------------------------------------------------------
|
||||
RESTART - RESTART - RESTART - RESTART
|
||||
Restart is done without reading PWSCF save file.
|
||||
Be aware that some consistency checks are therefore not done.
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
--
|
||||
|
||||
bravais-lattice index = 0
|
||||
lattice parameter (a_0) = 0.0000 a.u.
|
||||
unit-cell volume = 0.0000 (a.u.)^3
|
||||
number of atoms/cell = 0
|
||||
number of atomic types = 0
|
||||
kinetic-energy cut-off = 0.0000 Ry
|
||||
charge density cut-off = 0.0000 Ry
|
||||
convergence threshold = 0.0E+00
|
||||
beta = 0.0000
|
||||
number of iterations used = 0
|
||||
Exchange-correlation = not set (-1 -1 -1 -1-1-1)
|
||||
|
||||
|
||||
celldm(1)= 0.00000 celldm(2)= 0.00000 celldm(3)= 0.00000
|
||||
celldm(4)= 0.00000 celldm(5)= 0.00000 celldm(6)= 0.00000
|
||||
|
||||
crystal axes: (cart. coord. in units of a_0)
|
||||
a(1) = ( 0.0000 0.0000 0.0000 )
|
||||
a(2) = ( 0.0000 0.0000 0.0000 )
|
||||
a(3) = ( 0.0000 0.0000 0.0000 )
|
||||
|
||||
reciprocal axes: (cart. coord. in units 2 pi/a_0)
|
||||
b(1) = ( 0.0000 0.0000 0.0000 )
|
||||
b(2) = ( 0.0000 0.0000 0.0000 )
|
||||
b(3) = ( 0.0000 0.0000 0.0000 )
|
||||
|
||||
|
||||
Atoms inside the unit cell:
|
||||
|
||||
Cartesian axes
|
||||
|
||||
site n. atom mass positions (a_0 units)
|
||||
|
||||
|
||||
No symmetry!
|
||||
|
||||
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.00s WALL
|
||||
|
||||
EPW : 0.00s CPU 0.00s WALL
|
||||
|
||||
No wavefunction gauge setting applied
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Using si.ukk from disk
|
||||
-------------------------------------------------------------------
|
||||
|
||||
|
||||
Using kmap and kgmap from disk
|
||||
|
||||
Do not need to read .epb files; read .fmt files
|
||||
|
||||
|
||||
Band disentanglement is used: nbndsub = 8
|
||||
Use zone-centred Wigner-Seitz cells
|
||||
Number of WS vectors for electrons 279
|
||||
Number of WS vectors for phonons 19
|
||||
Number of WS vectors for electron-phonon 19
|
||||
Maximum number of cores for efficient parallelization 114
|
||||
Results may improve by using use_ws == .true.
|
||||
|
||||
Reading Hamiltonian, Dynamical matrix and EP vertex in Wann rep from file
|
||||
|
||||
|
||||
Reading interatomic force constants
|
||||
|
||||
Read Z* and epsilon
|
||||
IFC last -0.0026126
|
||||
Norm of the difference between old and new effective charges: 0.0000000
|
||||
Norm of the difference between old and new force-constants: 0.0000020
|
||||
Imposed crystal ASR
|
||||
|
||||
Finished reading ifcs
|
||||
|
||||
|
||||
Finished reading Wann rep data from file
|
||||
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 12Mb
|
||||
VmPeak = 273Mb
|
||||
===================================================================
|
||||
|
||||
Using uniform q-mesh: 7 7 7
|
||||
Size of q point mesh for interpolation: 343
|
||||
Using uniform MP k-mesh: 7 7 7
|
||||
Size of k point mesh for interpolation: 40
|
||||
Max number of k points per pool: 40
|
||||
|
||||
Fermi energy coarse grid = 0.000000 eV
|
||||
|
||||
Fermi energy is calculated from the fine k-mesh: Ef = 6.339674 eV
|
||||
|
||||
Warning: check if difference with Fermi level fine grid makes sense
|
||||
|
||||
===================================================================
|
||||
|
||||
ibndmin = 2 ebndmin = 0.190
|
||||
ibndmax = 8 ebndmax = 0.760
|
||||
|
||||
|
||||
Number of ep-matrix elements per pool : 5880 ~= 45.94 Kb (@ 8 bytes/ DP)
|
||||
|
||||
A selecq.fmt file was found but re-created because selecqread == .false.
|
||||
We only need to compute 343 q-points
|
||||
|
||||
Applying a scissor shift of 0.70000 eV to the conduction states
|
||||
|
||||
Temperature 400.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 6.861901 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 7.030498 eV
|
||||
|
||||
Temperature 500.000 K
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility VB Fermi level 7.013560 eV
|
||||
Valence band maximum = 6.255486 eV
|
||||
Conduction band minimum = 7.660802 eV
|
||||
Mobility CB Fermi level 6.872905 eV
|
||||
|
||||
===================================================================
|
||||
Scattering rate for IBTE
|
||||
===================================================================
|
||||
|
||||
restart and restart_freq inputs deactivated (restart point at every q-points).
|
||||
No intermediate mobility will be shown.
|
||||
|
||||
Fermi Surface thickness = 4.000000 eV
|
||||
This is computed with respect to the fine Fermi level 6.339674 eV
|
||||
Only states between 2.339674 eV and 10.339674 eV will be included
|
||||
|
||||
Progression iq (fine) = 100/ 343
|
||||
Progression iq (fine) = 200/ 343
|
||||
Progression iq (fine) = 300/ 343
|
||||
400.000 6.8619 0.100000E+14
|
||||
500.000 7.0136 0.100000E+14
|
||||
|
||||
epmatkqread automatically changed to .true. as all scattering have been computed.
|
||||
|
||||
Number of elements per core 1846
|
||||
Average over degenerate eigenstates is performed
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.100001E+14 0.340694E+02 x-axis
|
||||
0.584587E+02 y-axis
|
||||
0.584588E+02 z-axis
|
||||
0.503290E+02 avg
|
||||
500.000 6.8729 0.100000E+14 0.231476E+02 x-axis
|
||||
0.397038E+02 y-axis
|
||||
0.397039E+02 z-axis
|
||||
0.341851E+02 avg
|
||||
|
||||
===================================================================
|
||||
Start solving iterative Boltzmann Transport Equation
|
||||
===================================================================
|
||||
|
||||
|
||||
Iteration number: 1
|
||||
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.100001E+14 0.306606E+02 x-axis
|
||||
0.484285E+02 y-axis
|
||||
0.484296E+02 z-axis
|
||||
0.425062E+02 avg
|
||||
500.000 6.8729 0.100000E+14 0.209085E+02 x-axis
|
||||
0.329592E+02 y-axis
|
||||
0.329615E+02 z-axis
|
||||
0.289430E+02 avg
|
||||
|
||||
0.425062E+02 Err
|
||||
|
||||
Iteration number: 2
|
||||
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.100001E+14 0.310017E+02 x-axis
|
||||
0.501495E+02 y-axis
|
||||
0.501503E+02 z-axis
|
||||
0.437672E+02 avg
|
||||
500.000 6.8729 0.100000E+14 0.211251E+02 x-axis
|
||||
0.341053E+02 y-axis
|
||||
0.341071E+02 z-axis
|
||||
0.297792E+02 avg
|
||||
|
||||
0.126093E+01 Err
|
||||
|
||||
Iteration number: 3
|
||||
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Elec density [cm^-3] Elec mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 7.0305 0.100001E+14 0.309675E+02 x-axis
|
||||
0.498542E+02 y-axis
|
||||
0.498551E+02 z-axis
|
||||
0.435590E+02 avg
|
||||
500.000 6.8729 0.100000E+14 0.211041E+02 x-axis
|
||||
0.339105E+02 y-axis
|
||||
0.339125E+02 z-axis
|
||||
0.296424E+02 avg
|
||||
|
||||
0.208215E+00 Err
|
||||
|
||||
Iteration number: 4
|
||||
|
||||
===================================================================
|
||||
The iteration reached the maximum but did not converge.
|
||||
===================================================================
|
||||
|
||||
|
||||
Unfolding on the coarse grid
|
||||
elphon_wrap : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
|
||||
INITIALIZATION:
|
||||
|
||||
|
||||
|
||||
Electron-Phonon interpolation
|
||||
ephwann : 2.58s CPU 3.78s WALL ( 1 calls)
|
||||
ep-interp : 2.37s CPU 3.57s WALL ( 343 calls)
|
||||
|
||||
DynW2B : 0.01s CPU 0.01s WALL ( 343 calls)
|
||||
HamW2B : 0.27s CPU 0.33s WALL ( 14446 calls)
|
||||
ephW2Bp : 0.92s CPU 1.89s WALL ( 343 calls)
|
||||
|
||||
|
||||
Total program execution
|
||||
EPW : 2.58s CPU 3.78s WALL
|
||||
|
||||
|
||||
Please consider citing:
|
||||
S. Ponce, E. R. Margine, C. Verdi and F. Giustino, Comput. Phys. Commun. 209, 116 (2016)
|
||||
|
||||
In addition, if you used anisotropic Eliashberg superconductivity please cite:
|
||||
E. R. Margine and F. Giustino, Phys. Rev. B 87, 024505 (2013)
|
||||
if you used transport properties (scattering rates, mobility) please cite:
|
||||
S. Ponce, E. R. Margine and F. Giustino, Phys. Rev. B 97, 121201 (2018)
|
|
@ -0,0 +1,279 @@
|
|||
|
||||
``:oss/
|
||||
`.+s+. .+ys--yh+ `./ss+.
|
||||
-sh//yy+` +yy +yy -+h+-oyy
|
||||
-yh- .oyy/.-sh. .syo-.:sy- /yh
|
||||
`.-.` `yh+ -oyyyo. `/syys: oys `.`
|
||||
`/+ssys+-` `sh+ ` oys` .:osyo`
|
||||
-yh- ./syyooyo` .sys+/oyo--yh/
|
||||
`yy+ .-:-. `-/+/:` -sh-
|
||||
/yh. oys
|
||||
``..---hho---------` .---------..` `.-----.` -hd+---.
|
||||
`./osmNMMMMMMMMMMMMMMMs. +NNMMMMMMMMNNmh+. yNMMMMMNm- oNMMMMMNmo++:`
|
||||
+sy--/sdMMMhyyyyyyyNMMh- .oyNMMmyyyyyhNMMm+` -yMMMdyyo:` .oyyNMMNhs+syy`
|
||||
-yy/ /MMM+.`-+/``mMMy- `mMMh:`````.dMMN:` `MMMy-`-dhhy```mMMy:``+hs
|
||||
-yy+` /MMMo:-mMM+`-oo/. mMMh: `dMMN/` dMMm:`dMMMMy..MMMo-.+yo`
|
||||
.sys`/MMMMNNMMMs- mMMmyooooymMMNo: oMMM/sMMMMMM++MMN//oh:
|
||||
`sh+/MMMhyyMMMs- `-` mMMMMMMMMMNmy+-` -MMMhMMMsmMMmdMMd/yy+
|
||||
`-/+++oyy-/MMM+.`/hh/.`mNm:` mMMd+/////:-.` NMMMMMd/:NMMMMMy:/yyo/:.`
|
||||
+os+//:-..-oMMMo:--:::-/MMMo. .-mMMd+---` hMMMMN+. oMMMMMo. `-+osyso:`
|
||||
syo `mNMMMMMNNNNNNNNMMMo.oNNMMMMMNNNN:` +MMMMs:` dMMMN/` ``:syo
|
||||
/yh` :syyyyyyyyyyyyyyyy+.`+syyyyyyyyo:` .oyys:` .oyys:` +yh
|
||||
-yh- ```````````````` ````````` `` `` oys
|
||||
-+h/------------------------::::::::://////++++++++++++++++++++++///////::::/yd:
|
||||
shdddddddddddddddddddddddddddddhhhhhhhhyyyyyssssssssssssssssyyyyyyyhhhhhhhddddh`
|
||||
|
||||
S. Ponce, E. R. Margine, C. Verdi, and F. Giustino,
|
||||
Comput. Phys. Commun. 209, 116 (2016)
|
||||
|
||||
|
||||
Program EPW v.5.0.0 starts on 16Oct2018 at 16: 5:25
|
||||
|
||||
This program is part of the open-source Quantum ESPRESSO suite
|
||||
for quantum simulation of materials; please cite
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 21 395502 (2009);
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 29 465901 (2017);
|
||||
URL http://www.quantum-espresso.org",
|
||||
in publications or presentations arising from this work. More details at
|
||||
http://www.quantum-espresso.org/quote
|
||||
|
||||
Parallel version (MPI), running on 1 processors
|
||||
|
||||
MPI processes distributed on 1 nodes
|
||||
|
||||
------------------------------------------------------------------------
|
||||
RESTART - RESTART - RESTART - RESTART
|
||||
Restart is done without reading PWSCF save file.
|
||||
Be aware that some consistency checks are therefore not done.
|
||||
------------------------------------------------------------------------
|
||||
|
||||
|
||||
--
|
||||
|
||||
bravais-lattice index = 0
|
||||
lattice parameter (a_0) = 0.0000 a.u.
|
||||
unit-cell volume = 0.0000 (a.u.)^3
|
||||
number of atoms/cell = 0
|
||||
number of atomic types = 0
|
||||
kinetic-energy cut-off = 0.0000 Ry
|
||||
charge density cut-off = 0.0000 Ry
|
||||
convergence threshold = 0.0E+00
|
||||
beta = 0.0000
|
||||
number of iterations used = 0
|
||||
Exchange-correlation = not set (-1 -1 -1 -1-1-1)
|
||||
|
||||
|
||||
celldm(1)= 0.00000 celldm(2)= 0.00000 celldm(3)= 0.00000
|
||||
celldm(4)= 0.00000 celldm(5)= 0.00000 celldm(6)= 0.00000
|
||||
|
||||
crystal axes: (cart. coord. in units of a_0)
|
||||
a(1) = ( 0.0000 0.0000 0.0000 )
|
||||
a(2) = ( 0.0000 0.0000 0.0000 )
|
||||
a(3) = ( 0.0000 0.0000 0.0000 )
|
||||
|
||||
reciprocal axes: (cart. coord. in units 2 pi/a_0)
|
||||
b(1) = ( 0.0000 0.0000 0.0000 )
|
||||
b(2) = ( 0.0000 0.0000 0.0000 )
|
||||
b(3) = ( 0.0000 0.0000 0.0000 )
|
||||
|
||||
|
||||
Atoms inside the unit cell:
|
||||
|
||||
Cartesian axes
|
||||
|
||||
site n. atom mass positions (a_0 units)
|
||||
|
||||
|
||||
No symmetry!
|
||||
|
||||
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.00s WALL
|
||||
|
||||
EPW : 0.00s CPU 0.00s WALL
|
||||
|
||||
No wavefunction gauge setting applied
|
||||
|
||||
-------------------------------------------------------------------
|
||||
Using si.ukk from disk
|
||||
-------------------------------------------------------------------
|
||||
|
||||
|
||||
Using kmap and kgmap from disk
|
||||
|
||||
Do not need to read .epb files; read .fmt files
|
||||
|
||||
|
||||
Band disentanglement is used: nbndsub = 8
|
||||
Use zone-centred Wigner-Seitz cells
|
||||
Number of WS vectors for electrons 279
|
||||
Number of WS vectors for phonons 19
|
||||
Number of WS vectors for electron-phonon 19
|
||||
Maximum number of cores for efficient parallelization 114
|
||||
Results may improve by using use_ws == .true.
|
||||
|
||||
Reading Hamiltonian, Dynamical matrix and EP vertex in Wann rep from file
|
||||
|
||||
|
||||
Reading interatomic force constants
|
||||
|
||||
Read Z* and epsilon
|
||||
IFC last -0.0026126
|
||||
Norm of the difference between old and new effective charges: 0.0000000
|
||||
Norm of the difference between old and new force-constants: 0.0000020
|
||||
Imposed crystal ASR
|
||||
|
||||
Finished reading ifcs
|
||||
|
||||
|
||||
Finished reading Wann rep data from file
|
||||
|
||||
===================================================================
|
||||
Memory usage: VmHWM = 12Mb
|
||||
VmPeak = 273Mb
|
||||
===================================================================
|
||||
|
||||
Using uniform q-mesh: 7 7 7
|
||||
Size of q point mesh for interpolation: 343
|
||||
Using uniform MP k-mesh: 7 7 7
|
||||
Size of k point mesh for interpolation: 40
|
||||
Max number of k points per pool: 40
|
||||
|
||||
Fermi energy coarse grid = 0.000000 eV
|
||||
|
||||
Fermi energy is calculated from the fine k-mesh: Ef = 6.339674 eV
|
||||
|
||||
Warning: check if difference with Fermi level fine grid makes sense
|
||||
|
||||
===================================================================
|
||||
|
||||
ibndmin = 2 ebndmin = 0.190
|
||||
ibndmax = 8 ebndmax = 0.760
|
||||
|
||||
|
||||
Number of ep-matrix elements per pool : 5880 ~= 45.94 Kb (@ 8 bytes/ DP)
|
||||
Number of elements per core 1528
|
||||
Average over degenerate eigenstates is performed
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.100000E+14 0.478637E-02 x-axis
|
||||
0.478658E-02 y-axis
|
||||
0.115242E-01 z-axis
|
||||
0.703239E-02 avg
|
||||
500.000 7.0136 0.100000E+14 0.274743E-01 x-axis
|
||||
0.274758E-01 y-axis
|
||||
0.637071E-01 z-axis
|
||||
0.395524E-01 avg
|
||||
|
||||
===================================================================
|
||||
Start solving iterative Boltzmann Transport Equation
|
||||
===================================================================
|
||||
|
||||
|
||||
Iteration number: 1
|
||||
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.100000E+14 0.590051E-02 x-axis
|
||||
0.590248E-02 y-axis
|
||||
0.116036E-01 z-axis
|
||||
0.780221E-02 avg
|
||||
500.000 7.0136 0.100000E+14 0.339718E-01 x-axis
|
||||
0.339864E-01 y-axis
|
||||
0.644797E-01 z-axis
|
||||
0.441460E-01 avg
|
||||
|
||||
0.441460E-01 Err
|
||||
|
||||
Iteration number: 2
|
||||
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.100000E+14 0.644417E-02 x-axis
|
||||
0.644751E-02 y-axis
|
||||
0.118128E-01 z-axis
|
||||
0.823483E-02 avg
|
||||
500.000 7.0136 0.100000E+14 0.371091E-01 x-axis
|
||||
0.371345E-01 y-axis
|
||||
0.657224E-01 z-axis
|
||||
0.466553E-01 avg
|
||||
|
||||
0.250937E-02 Err
|
||||
|
||||
Iteration number: 3
|
||||
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.100000E+14 0.660118E-02 x-axis
|
||||
0.660483E-02 y-axis
|
||||
0.118134E-01 z-axis
|
||||
0.833980E-02 avg
|
||||
500.000 7.0136 0.100000E+14 0.380423E-01 x-axis
|
||||
0.380701E-01 y-axis
|
||||
0.657563E-01 z-axis
|
||||
0.472896E-01 avg
|
||||
|
||||
0.634249E-03 Err
|
||||
|
||||
Iteration number: 4
|
||||
|
||||
|
||||
===================================================================
|
||||
Temp [K] Fermi [eV] Hole density [cm^-3] Hole mobility [cm^2/Vs]
|
||||
===================================================================
|
||||
|
||||
400.000 6.8619 0.100000E+14 0.666450E-02 x-axis
|
||||
0.666825E-02 y-axis
|
||||
0.118240E-01 z-axis
|
||||
0.838558E-02 avg
|
||||
500.000 7.0136 0.100000E+14 0.384180E-01 x-axis
|
||||
0.384467E-01 y-axis
|
||||
0.658280E-01 z-axis
|
||||
0.475642E-01 avg
|
||||
|
||||
0.274620E-03 Err
|
||||
|
||||
Iteration number: 5
|
||||
|
||||
===================================================================
|
||||
The iteration reached the maximum but did not converge.
|
||||
===================================================================
|
||||
|
||||
|
||||
Unfolding on the coarse grid
|
||||
elphon_wrap : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
|
||||
INITIALIZATION:
|
||||
|
||||
|
||||
|
||||
Electron-Phonon interpolation
|
||||
ephwann : 0.19s CPU 0.19s WALL ( 1 calls)
|
||||
|
||||
HamW2B : 0.00s CPU 0.00s WALL ( 40 calls)
|
||||
|
||||
|
||||
Total program execution
|
||||
EPW : 0.19s CPU 0.19s WALL
|
||||
|
||||
|
||||
Please consider citing:
|
||||
S. Ponce, E. R. Margine, C. Verdi and F. Giustino, Comput. Phys. Commun. 209, 116 (2016)
|
||||
|
||||
In addition, if you used anisotropic Eliashberg superconductivity please cite:
|
||||
E. R. Margine and F. Giustino, Phys. Rev. B 87, 024505 (2013)
|
||||
if you used transport properties (scattering rates, mobility) please cite:
|
||||
S. Ponce, E. R. Margine and F. Giustino, Phys. Rev. B 97, 121201 (2018)
|
|
@ -0,0 +1,163 @@
|
|||
|
||||
Program PWSCF v.6.3 starts on 29Aug2018 at 11:16:59
|
||||
|
||||
This program is part of the open-source Quantum ESPRESSO suite
|
||||
for quantum simulation of materials; please cite
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 21 395502 (2009);
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 29 465901 (2017);
|
||||
URL http://www.quantum-espresso.org",
|
||||
in publications or presentations arising from this work. More details at
|
||||
http://www.quantum-espresso.org/quote
|
||||
|
||||
Parallel version (MPI), running on 1 processors
|
||||
|
||||
MPI processes distributed on 1 nodes
|
||||
Waiting for input...
|
||||
Reading input from standard input
|
||||
|
||||
Current dimensions of program PWSCF are:
|
||||
Max number of different atomic species (ntypx) = 10
|
||||
Max number of k-points (npk) = 40000
|
||||
Max angular momentum in pseudopotentials (lmaxx) = 3
|
||||
|
||||
Atomic positions and unit cell read from directory:
|
||||
./si.save/
|
||||
|
||||
|
||||
Subspace diagonalization in iterative solution of the eigenvalue problem:
|
||||
a serial algorithm will be used
|
||||
|
||||
|
||||
G-vector sticks info
|
||||
--------------------
|
||||
sticks: dense smooth PW G-vecs: dense smooth PW
|
||||
Sum 151 151 61 1139 1139 331
|
||||
|
||||
|
||||
|
||||
bravais-lattice index = 2
|
||||
lattice parameter (alat) = 10.2620 a.u.
|
||||
unit-cell volume = 270.1693 (a.u.)^3
|
||||
number of atoms/cell = 2
|
||||
number of atomic types = 1
|
||||
number of electrons = 8.00
|
||||
number of Kohn-Sham states= 10
|
||||
kinetic-energy cutoff = 10.0000 Ry
|
||||
charge density cutoff = 40.0000 Ry
|
||||
Exchange-correlation = PBE ( 1 4 3 4 0 0)
|
||||
|
||||
celldm(1)= 10.262000 celldm(2)= 0.000000 celldm(3)= 0.000000
|
||||
celldm(4)= 0.000000 celldm(5)= 0.000000 celldm(6)= 0.000000
|
||||
|
||||
crystal axes: (cart. coord. in units of alat)
|
||||
a(1) = ( -0.500000 0.000000 0.500000 )
|
||||
a(2) = ( 0.000000 0.500000 0.500000 )
|
||||
a(3) = ( -0.500000 0.500000 0.000000 )
|
||||
|
||||
reciprocal axes: (cart. coord. in units 2 pi/alat)
|
||||
b(1) = ( -1.000000 -1.000000 1.000000 )
|
||||
b(2) = ( 1.000000 1.000000 1.000000 )
|
||||
b(3) = ( -1.000000 1.000000 -1.000000 )
|
||||
|
||||
|
||||
PseudoPot. # 1 for Si read from file:
|
||||
./Si_r.upf
|
||||
MD5 check sum: c84abb4b0aac9c93a8e9f74896432a0a
|
||||
Pseudo is Norm-conserving + core correction, Zval = 4.0
|
||||
Generated using ONCVPSP code by D. R. Hamann
|
||||
Using radial grid of 1528 points, 6 beta functions with:
|
||||
l(1) = 0
|
||||
l(2) = 0
|
||||
l(3) = 1
|
||||
l(4) = 1
|
||||
l(5) = 2
|
||||
l(6) = 2
|
||||
|
||||
atomic species valence mass pseudopotential
|
||||
Si 4.00 28.08550 Si( 1.00)
|
||||
|
||||
48 Sym. Ops., with inversion, found (24 have fractional translation)
|
||||
|
||||
|
||||
|
||||
Cartesian axes
|
||||
|
||||
site n. atom positions (alat units)
|
||||
1 Si tau( 1) = ( 0.0000000 0.0000000 0.0000000 )
|
||||
2 Si tau( 2) = ( 0.2500000 0.2500000 0.2500000 )
|
||||
|
||||
number of k points= 216
|
||||
|
||||
Number of k-points >= 100: set verbosity='high' to print them.
|
||||
|
||||
Dense grid: 1139 G-vectors FFT dimensions: ( 16, 16, 16)
|
||||
|
||||
Estimated max dynamical RAM per process > 1.41 MB
|
||||
|
||||
The potential is recalculated from file :
|
||||
./si.save/charge-density
|
||||
|
||||
Starting wfcs are 8 randomized atomic wfcs + 2 random wfcs
|
||||
|
||||
Band Structure Calculation
|
||||
CG style diagonalization
|
||||
|
||||
ethr = 1.25E-15, avg # of iterations = 35.1
|
||||
|
||||
total cpu time spent up to now is 6.7 secs
|
||||
|
||||
End of band structure calculation
|
||||
|
||||
Number of k-points >= 100: set verbosity='high' to print the bands.
|
||||
|
||||
highest occupied, lowest unoccupied level (ev): 6.2555 7.1119
|
||||
|
||||
Writing output data file si.save/
|
||||
|
||||
init_run : 0.03s CPU 0.03s WALL ( 1 calls)
|
||||
electrons : 11.22s CPU 6.51s WALL ( 1 calls)
|
||||
|
||||
Called by init_run:
|
||||
wfcinit : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
potinit : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
hinit0 : 0.02s CPU 0.03s WALL ( 1 calls)
|
||||
|
||||
Called by electrons:
|
||||
c_bands : 11.22s CPU 6.51s WALL ( 1 calls)
|
||||
v_of_rho : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
|
||||
Called by c_bands:
|
||||
init_us_2 : 0.02s CPU 0.01s WALL ( 216 calls)
|
||||
ccgdiagg : 10.41s CPU 6.04s WALL ( 632 calls)
|
||||
wfcrot : 0.76s CPU 0.44s WALL ( 632 calls)
|
||||
|
||||
Called by sum_band:
|
||||
|
||||
Called by *cgdiagg:
|
||||
h_psi : 8.97s CPU 5.14s WALL ( 70431 calls)
|
||||
cdiaghg : 0.16s CPU 0.10s WALL ( 632 calls)
|
||||
|
||||
Called by h_psi:
|
||||
h_psi:pot : 8.82s CPU 5.05s WALL ( 70431 calls)
|
||||
h_psi:calbec : 0.93s CPU 0.65s WALL ( 70431 calls)
|
||||
vloc_psi : 6.13s CPU 3.43s WALL ( 70431 calls)
|
||||
add_vuspsi : 1.47s CPU 0.83s WALL ( 70431 calls)
|
||||
hs_1psi : 8.82s CPU 5.06s WALL ( 69799 calls)
|
||||
s_1psi : 0.83s CPU 0.55s WALL ( 69799 calls)
|
||||
|
||||
General routines
|
||||
calbec : 1.32s CPU 0.96s WALL ( 140230 calls)
|
||||
fft : 0.00s CPU 0.00s WALL ( 11 calls)
|
||||
fftw : 5.16s CPU 2.89s WALL ( 152238 calls)
|
||||
davcio : 0.01s CPU 0.01s WALL ( 432 calls)
|
||||
|
||||
Parallel routines
|
||||
|
||||
PWSCF : 11.49s CPU 6.73s WALL
|
||||
|
||||
|
||||
This run was terminated on: 11:17: 6 29Aug2018
|
||||
|
||||
=------------------------------------------------------------------------------=
|
||||
JOB DONE.
|
||||
=------------------------------------------------------------------------------=
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,56 @@
|
|||
|
||||
Program Q2R v.6.3 starts on 29Aug2018 at 11:16:58
|
||||
|
||||
This program is part of the open-source Quantum ESPRESSO suite
|
||||
for quantum simulation of materials; please cite
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 21 395502 (2009);
|
||||
"P. Giannozzi et al., J. Phys.:Condens. Matter 29 465901 (2017);
|
||||
URL http://www.quantum-espresso.org",
|
||||
in publications or presentations arising from this work. More details at
|
||||
http://www.quantum-espresso.org/quote
|
||||
|
||||
Parallel version (MPI), running on 1 processors
|
||||
|
||||
MPI processes distributed on 1 nodes
|
||||
|
||||
reading grid info from file si.dyn0
|
||||
reading force constants from file si.dyn1
|
||||
macroscopic fields = T
|
||||
13.98349 -0.00000 0.00000
|
||||
-0.00000 13.98349 0.00000
|
||||
-0.00000 -0.00000 13.98349
|
||||
na= 1
|
||||
-0.23421 -0.00000 0.00000
|
||||
-0.00000 -0.23421 0.00000
|
||||
0.00000 -0.00000 -0.23421
|
||||
na= 2
|
||||
-0.23421 -0.00000 0.00000
|
||||
-0.00000 -0.23421 0.00000
|
||||
0.00000 0.00000 -0.23421
|
||||
Norm of the difference between old and new effective charges: 0.57369636801879420052
|
||||
nqs= 1
|
||||
q= 0.00000000 0.00000000 0.00000000
|
||||
reading force constants from file si.dyn2
|
||||
nqs= 4
|
||||
q= 0.50000000 -0.50000000 0.50000000
|
||||
q= 0.50000000 0.50000000 -0.50000000
|
||||
q= -0.50000000 -0.50000000 -0.50000000
|
||||
q= 0.50000000 -0.50000000 -0.50000000
|
||||
reading force constants from file si.dyn3
|
||||
nqs= 3
|
||||
q= 0.00000000 -1.00000000 0.00000000
|
||||
q= -1.00000000 0.00000000 0.00000000
|
||||
q= 0.00000000 0.00000000 1.00000000
|
||||
|
||||
q-space grid ok, #points = 8
|
||||
|
||||
fft-check success (sum of imaginary terms < 10^-12)
|
||||
|
||||
Q2R : 0.00s CPU 0.00s WALL
|
||||
|
||||
|
||||
This run was terminated on: 11:16:58 29Aug2018
|
||||
|
||||
=------------------------------------------------------------------------------=
|
||||
JOB DONE.
|
||||
=------------------------------------------------------------------------------=
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,69 @@
|
|||
--
|
||||
&inputepw
|
||||
prefix = 'si'
|
||||
amass(1) = 28.0855
|
||||
outdir = './'
|
||||
|
||||
iverbosity = 0
|
||||
|
||||
elph = .true.
|
||||
kmaps = .false.
|
||||
epbwrite = .true.
|
||||
epbread = .false.
|
||||
epwwrite = .true.
|
||||
epwread = .false.
|
||||
|
||||
etf_mem = 1
|
||||
vme = .false.
|
||||
|
||||
lifc = .true.
|
||||
asr_typ = 'crystal'
|
||||
|
||||
nbndsub = 8
|
||||
nbndskip = 0
|
||||
|
||||
wannierize = .true.
|
||||
num_iter = 1500
|
||||
iprint = 2
|
||||
dis_win_max = 18
|
||||
dis_froz_max= 8.5
|
||||
proj(1) = 'Si : sp3'
|
||||
wdata(1) = 'bands_plot = .true.'
|
||||
wdata(2) = 'begin kpoint_path'
|
||||
wdata(3) = 'L 0.50 0.00 0.00 G 0.00 0.00 0.00'
|
||||
wdata(4) = 'G 0.00 0.00 0.00 X 0.50 0.50 0.00'
|
||||
wdata(5) = 'end kpoint_path'
|
||||
wdata(6) = 'bands_plot_format = gnuplot'
|
||||
wdata(7) = 'guiding_centres = .true.'
|
||||
wdata(8) = 'dis_num_iter = 500'
|
||||
wdata(9) = 'num_print_cycles = 10'
|
||||
wdata(10) = 'dis_mix_ratio = 1.0'
|
||||
wdata(11) = 'conv_tol = 1E-9'
|
||||
wdata(12) = 'conv_window = 4'
|
||||
|
||||
elecselfen = .false.
|
||||
phonselfen = .false.
|
||||
a2f = .false.
|
||||
|
||||
fsthick = 2.0 ! eV
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
||||
band_plot = .true.
|
||||
filkf = './LGX.txt'
|
||||
filqf = './LGX.txt'
|
||||
|
||||
nk1 = 6
|
||||
nk2 = 6
|
||||
nk3 = 6
|
||||
|
||||
nq1 = 2
|
||||
nq2 = 2
|
||||
nq3 = 2
|
||||
/
|
||||
3 cartesian
|
||||
0.000000000 0.000000000 0.000000000
|
||||
0.500000000 -0.500000000 0.500000000
|
||||
0.000000000 -1.000000000 0.000000000
|
|
@ -0,0 +1,96 @@
|
|||
--
|
||||
&inputepw
|
||||
prefix = 'si'
|
||||
amass(1) = 28.0855
|
||||
outdir = './'
|
||||
|
||||
iverbosity = 0
|
||||
|
||||
elph = .true.
|
||||
kmaps = .true.
|
||||
epbwrite = .false.
|
||||
epbread = .false.
|
||||
epwwrite = .false.
|
||||
epwread = .true.
|
||||
|
||||
scattering = .true.
|
||||
scattering_serta = .true.
|
||||
int_mob = .true.
|
||||
carrier = .true.
|
||||
ncarrier = 1E13
|
||||
mp_mesh_k = .true.
|
||||
iterative_bte = .true.
|
||||
epmatkqread = .false.
|
||||
mob_maxiter = 3
|
||||
broyden_beta= 1.0
|
||||
|
||||
vme = .false.
|
||||
|
||||
scissor = 0.7
|
||||
nstemp = 2
|
||||
tempsmin = 400
|
||||
tempsmax = 500
|
||||
|
||||
restart = .true.
|
||||
restart_freq = 50
|
||||
selecqread = .false.
|
||||
|
||||
lifc = .true.
|
||||
asr_typ = 'crystal'
|
||||
|
||||
etf_mem = 1
|
||||
|
||||
nbndsub = 8
|
||||
nbndskip = 0
|
||||
|
||||
wannierize = .false.
|
||||
num_iter = 1500
|
||||
iprint = 2
|
||||
dis_win_max = 18
|
||||
dis_froz_max= 8.5
|
||||
proj(1) = 'Si : sp3'
|
||||
wdata(1) = 'bands_plot = .true.'
|
||||
wdata(2) = 'begin kpoint_path'
|
||||
wdata(3) = 'L 0.50 0.00 0.00 G 0.00 0.00 0.00'
|
||||
wdata(4) = 'G 0.00 0.00 0.00 X 0.50 0.50 0.00'
|
||||
wdata(5) = 'end kpoint_path'
|
||||
wdata(6) = 'bands_plot_format = gnuplot'
|
||||
wdata(7) = 'guiding_centres = .true.'
|
||||
wdata(8) = 'dis_num_iter = 500'
|
||||
wdata(9) = 'num_print_cycles = 10'
|
||||
wdata(10) = 'dis_mix_ratio = 1.0'
|
||||
wdata(11) = 'conv_tol = 1E-9'
|
||||
wdata(12) = 'conv_window = 4'
|
||||
wdata(13) = 'write_hr = .true.'
|
||||
wdata(14) = 'write_rmn = .true.'
|
||||
|
||||
elecselfen = .false.
|
||||
phonselfen = .false.
|
||||
a2f = .false.
|
||||
|
||||
fsthick = 4.0
|
||||
eptemp = 1 ! K
|
||||
degaussw = 0.1 ! eV
|
||||
|
||||
dvscf_dir = './save/'
|
||||
|
||||
nkf1 = 7
|
||||
nkf2 = 7
|
||||
nkf3 = 7
|
||||
|
||||
nqf1 = 7
|
||||
nqf2 = 7
|
||||
nqf3 = 7
|
||||
|
||||
nk1 = 6
|
||||
nk2 = 6
|
||||
nk3 = 6
|
||||
|
||||
nq1 = 2
|
||||
nq2 = 2
|
||||
nq3 = 2
|
||||
/
|
||||
3 cartesian
|
||||
0.000000000 0.000000000 0.000000000
|
||||
0.500000000 -0.500000000 0.500000000
|
||||
0.000000000 -1.000000000 0.000000000
|
|
@ -17,9 +17,11 @@
|
|||
scattering_serta = .true.
|
||||
int_mob = .true.
|
||||
carrier = .true.
|
||||
ncarrier = 1E13
|
||||
ncarrier = -1E13
|
||||
mp_mesh_k = .true.
|
||||
iterative_bte = .true.
|
||||
epmatkqread = .true.
|
||||
mob_maxiter = 4
|
||||
broyden_beta= 1.0
|
||||
|
||||
vme = .false.
|
||||
|
@ -29,7 +31,7 @@
|
|||
tempsmin = 400
|
||||
tempsmax = 500
|
||||
|
||||
restart = .false.
|
||||
restart = .true.
|
||||
restart_freq = 50
|
||||
|
||||
lifc = .true.
|
|
@ -0,0 +1,245 @@
|
|||
&control
|
||||
calculation = 'nscf'
|
||||
prefix = 'si'
|
||||
restart_mode = 'from_scratch'
|
||||
wf_collect = .true.
|
||||
pseudo_dir = './'
|
||||
outdir = './'
|
||||
/
|
||||
&system
|
||||
ibrav = 2
|
||||
celldm(1) = 10.262
|
||||
nat = 2
|
||||
ntyp = 1
|
||||
ecutwfc = 10
|
||||
nbnd = 10
|
||||
/
|
||||
&electrons
|
||||
diagonalization = 'cg'
|
||||
mixing_beta = 0.7
|
||||
conv_thr = 1.0d-13
|
||||
/
|
||||
ATOMIC_SPECIES
|
||||
Si 28.0855 Si_r.upf
|
||||
ATOMIC_POSITIONS alat
|
||||
Si 0.00 0.00 0.00
|
||||
Si 0.25 0.25 0.25
|
||||
K_POINTS crystal
|
||||
216
|
||||
0.0 0.0 0.0 0.00462962962963
|
||||
0.0 0.0 0.166666666667 0.00462962962963
|
||||
0.0 0.0 0.333333333333 0.00462962962963
|
||||
0.0 0.0 0.5 0.00462962962963
|
||||
0.0 0.0 0.666666666667 0.00462962962963
|
||||
0.0 0.0 0.833333333333 0.00462962962963
|
||||
0.0 0.166666666667 0.0 0.00462962962963
|
||||
0.0 0.166666666667 0.166666666667 0.00462962962963
|
||||
0.0 0.166666666667 0.333333333333 0.00462962962963
|
||||
0.0 0.166666666667 0.5 0.00462962962963
|
||||
0.0 0.166666666667 0.666666666667 0.00462962962963
|
||||
0.0 0.166666666667 0.833333333333 0.00462962962963
|
||||
0.0 0.333333333333 0.0 0.00462962962963
|
||||
0.0 0.333333333333 0.166666666667 0.00462962962963
|
||||
0.0 0.333333333333 0.333333333333 0.00462962962963
|
||||
0.0 0.333333333333 0.5 0.00462962962963
|
||||
0.0 0.333333333333 0.666666666667 0.00462962962963
|
||||
0.0 0.333333333333 0.833333333333 0.00462962962963
|
||||
0.0 0.5 0.0 0.00462962962963
|
||||
0.0 0.5 0.166666666667 0.00462962962963
|
||||
0.0 0.5 0.333333333333 0.00462962962963
|
||||
0.0 0.5 0.5 0.00462962962963
|
||||
0.0 0.5 0.666666666667 0.00462962962963
|
||||
0.0 0.5 0.833333333333 0.00462962962963
|
||||
0.0 0.666666666667 0.0 0.00462962962963
|
||||
0.0 0.666666666667 0.166666666667 0.00462962962963
|
||||
0.0 0.666666666667 0.333333333333 0.00462962962963
|
||||
0.0 0.666666666667 0.5 0.00462962962963
|
||||
0.0 0.666666666667 0.666666666667 0.00462962962963
|
||||
0.0 0.666666666667 0.833333333333 0.00462962962963
|
||||
0.0 0.833333333333 0.0 0.00462962962963
|
||||
0.0 0.833333333333 0.166666666667 0.00462962962963
|
||||
0.0 0.833333333333 0.333333333333 0.00462962962963
|
||||
0.0 0.833333333333 0.5 0.00462962962963
|
||||
0.0 0.833333333333 0.666666666667 0.00462962962963
|
||||
0.0 0.833333333333 0.833333333333 0.00462962962963
|
||||
0.166666666667 0.0 0.0 0.00462962962963
|
||||
0.166666666667 0.0 0.166666666667 0.00462962962963
|
||||
0.166666666667 0.0 0.333333333333 0.00462962962963
|
||||
0.166666666667 0.0 0.5 0.00462962962963
|
||||
0.166666666667 0.0 0.666666666667 0.00462962962963
|
||||
0.166666666667 0.0 0.833333333333 0.00462962962963
|
||||
0.166666666667 0.166666666667 0.0 0.00462962962963
|
||||
0.166666666667 0.166666666667 0.166666666667 0.00462962962963
|
||||
0.166666666667 0.166666666667 0.333333333333 0.00462962962963
|
||||
0.166666666667 0.166666666667 0.5 0.00462962962963
|
||||
0.166666666667 0.166666666667 0.666666666667 0.00462962962963
|
||||
0.166666666667 0.166666666667 0.833333333333 0.00462962962963
|
||||
0.166666666667 0.333333333333 0.0 0.00462962962963
|
||||
0.166666666667 0.333333333333 0.166666666667 0.00462962962963
|
||||
0.166666666667 0.333333333333 0.333333333333 0.00462962962963
|
||||
0.166666666667 0.333333333333 0.5 0.00462962962963
|
||||
0.166666666667 0.333333333333 0.666666666667 0.00462962962963
|
||||
0.166666666667 0.333333333333 0.833333333333 0.00462962962963
|
||||
0.166666666667 0.5 0.0 0.00462962962963
|
||||
0.166666666667 0.5 0.166666666667 0.00462962962963
|
||||
0.166666666667 0.5 0.333333333333 0.00462962962963
|
||||
0.166666666667 0.5 0.5 0.00462962962963
|
||||
0.166666666667 0.5 0.666666666667 0.00462962962963
|
||||
0.166666666667 0.5 0.833333333333 0.00462962962963
|
||||
0.166666666667 0.666666666667 0.0 0.00462962962963
|
||||
0.166666666667 0.666666666667 0.166666666667 0.00462962962963
|
||||
0.166666666667 0.666666666667 0.333333333333 0.00462962962963
|
||||
0.166666666667 0.666666666667 0.5 0.00462962962963
|
||||
0.166666666667 0.666666666667 0.666666666667 0.00462962962963
|
||||
0.166666666667 0.666666666667 0.833333333333 0.00462962962963
|
||||
0.166666666667 0.833333333333 0.0 0.00462962962963
|
||||
0.166666666667 0.833333333333 0.166666666667 0.00462962962963
|
||||
0.166666666667 0.833333333333 0.333333333333 0.00462962962963
|
||||
0.166666666667 0.833333333333 0.5 0.00462962962963
|
||||
0.166666666667 0.833333333333 0.666666666667 0.00462962962963
|
||||
0.166666666667 0.833333333333 0.833333333333 0.00462962962963
|
||||
0.333333333333 0.0 0.0 0.00462962962963
|
||||
0.333333333333 0.0 0.166666666667 0.00462962962963
|
||||
0.333333333333 0.0 0.333333333333 0.00462962962963
|
||||
0.333333333333 0.0 0.5 0.00462962962963
|
||||
0.333333333333 0.0 0.666666666667 0.00462962962963
|
||||
0.333333333333 0.0 0.833333333333 0.00462962962963
|
||||
0.333333333333 0.166666666667 0.0 0.00462962962963
|
||||
0.333333333333 0.166666666667 0.166666666667 0.00462962962963
|
||||
0.333333333333 0.166666666667 0.333333333333 0.00462962962963
|
||||
0.333333333333 0.166666666667 0.5 0.00462962962963
|
||||
0.333333333333 0.166666666667 0.666666666667 0.00462962962963
|
||||
0.333333333333 0.166666666667 0.833333333333 0.00462962962963
|
||||
0.333333333333 0.333333333333 0.0 0.00462962962963
|
||||
0.333333333333 0.333333333333 0.166666666667 0.00462962962963
|
||||
0.333333333333 0.333333333333 0.333333333333 0.00462962962963
|
||||
0.333333333333 0.333333333333 0.5 0.00462962962963
|
||||
0.333333333333 0.333333333333 0.666666666667 0.00462962962963
|
||||
0.333333333333 0.333333333333 0.833333333333 0.00462962962963
|
||||
0.333333333333 0.5 0.0 0.00462962962963
|
||||
0.333333333333 0.5 0.166666666667 0.00462962962963
|
||||
0.333333333333 0.5 0.333333333333 0.00462962962963
|
||||
0.333333333333 0.5 0.5 0.00462962962963
|
||||
0.333333333333 0.5 0.666666666667 0.00462962962963
|
||||
0.333333333333 0.5 0.833333333333 0.00462962962963
|
||||
0.333333333333 0.666666666667 0.0 0.00462962962963
|
||||
0.333333333333 0.666666666667 0.166666666667 0.00462962962963
|
||||
0.333333333333 0.666666666667 0.333333333333 0.00462962962963
|
||||
0.333333333333 0.666666666667 0.5 0.00462962962963
|
||||
0.333333333333 0.666666666667 0.666666666667 0.00462962962963
|
||||
0.333333333333 0.666666666667 0.833333333333 0.00462962962963
|
||||
0.333333333333 0.833333333333 0.0 0.00462962962963
|
||||
0.333333333333 0.833333333333 0.166666666667 0.00462962962963
|
||||
0.333333333333 0.833333333333 0.333333333333 0.00462962962963
|
||||
0.333333333333 0.833333333333 0.5 0.00462962962963
|
||||
0.333333333333 0.833333333333 0.666666666667 0.00462962962963
|
||||
0.333333333333 0.833333333333 0.833333333333 0.00462962962963
|
||||
0.5 0.0 0.0 0.00462962962963
|
||||
0.5 0.0 0.166666666667 0.00462962962963
|
||||
0.5 0.0 0.333333333333 0.00462962962963
|
||||
0.5 0.0 0.5 0.00462962962963
|
||||
0.5 0.0 0.666666666667 0.00462962962963
|
||||
0.5 0.0 0.833333333333 0.00462962962963
|
||||
0.5 0.166666666667 0.0 0.00462962962963
|
||||
0.5 0.166666666667 0.166666666667 0.00462962962963
|
||||
0.5 0.166666666667 0.333333333333 0.00462962962963
|
||||
0.5 0.166666666667 0.5 0.00462962962963
|
||||
0.5 0.166666666667 0.666666666667 0.00462962962963
|
||||
0.5 0.166666666667 0.833333333333 0.00462962962963
|
||||
0.5 0.333333333333 0.0 0.00462962962963
|
||||
0.5 0.333333333333 0.166666666667 0.00462962962963
|
||||
0.5 0.333333333333 0.333333333333 0.00462962962963
|
||||
0.5 0.333333333333 0.5 0.00462962962963
|
||||
0.5 0.333333333333 0.666666666667 0.00462962962963
|
||||
0.5 0.333333333333 0.833333333333 0.00462962962963
|
||||
0.5 0.5 0.0 0.00462962962963
|
||||
0.5 0.5 0.166666666667 0.00462962962963
|
||||
0.5 0.5 0.333333333333 0.00462962962963
|
||||
0.5 0.5 0.5 0.00462962962963
|
||||
0.5 0.5 0.666666666667 0.00462962962963
|
||||
0.5 0.5 0.833333333333 0.00462962962963
|
||||
0.5 0.666666666667 0.0 0.00462962962963
|
||||
0.5 0.666666666667 0.166666666667 0.00462962962963
|
||||
0.5 0.666666666667 0.333333333333 0.00462962962963
|
||||
0.5 0.666666666667 0.5 0.00462962962963
|
||||
0.5 0.666666666667 0.666666666667 0.00462962962963
|
||||
0.5 0.666666666667 0.833333333333 0.00462962962963
|
||||
0.5 0.833333333333 0.0 0.00462962962963
|
||||
0.5 0.833333333333 0.166666666667 0.00462962962963
|
||||
0.5 0.833333333333 0.333333333333 0.00462962962963
|
||||
0.5 0.833333333333 0.5 0.00462962962963
|
||||
0.5 0.833333333333 0.666666666667 0.00462962962963
|
||||
0.5 0.833333333333 0.833333333333 0.00462962962963
|
||||
0.666666666667 0.0 0.0 0.00462962962963
|
||||
0.666666666667 0.0 0.166666666667 0.00462962962963
|
||||
0.666666666667 0.0 0.333333333333 0.00462962962963
|
||||
0.666666666667 0.0 0.5 0.00462962962963
|
||||
0.666666666667 0.0 0.666666666667 0.00462962962963
|
||||
0.666666666667 0.0 0.833333333333 0.00462962962963
|
||||
0.666666666667 0.166666666667 0.0 0.00462962962963
|
||||
0.666666666667 0.166666666667 0.166666666667 0.00462962962963
|
||||
0.666666666667 0.166666666667 0.333333333333 0.00462962962963
|
||||
0.666666666667 0.166666666667 0.5 0.00462962962963
|
||||
0.666666666667 0.166666666667 0.666666666667 0.00462962962963
|
||||
0.666666666667 0.166666666667 0.833333333333 0.00462962962963
|
||||
0.666666666667 0.333333333333 0.0 0.00462962962963
|
||||
0.666666666667 0.333333333333 0.166666666667 0.00462962962963
|
||||
0.666666666667 0.333333333333 0.333333333333 0.00462962962963
|
||||
0.666666666667 0.333333333333 0.5 0.00462962962963
|
||||
0.666666666667 0.333333333333 0.666666666667 0.00462962962963
|
||||
0.666666666667 0.333333333333 0.833333333333 0.00462962962963
|
||||
0.666666666667 0.5 0.0 0.00462962962963
|
||||
0.666666666667 0.5 0.166666666667 0.00462962962963
|
||||
0.666666666667 0.5 0.333333333333 0.00462962962963
|
||||
0.666666666667 0.5 0.5 0.00462962962963
|
||||
0.666666666667 0.5 0.666666666667 0.00462962962963
|
||||
0.666666666667 0.5 0.833333333333 0.00462962962963
|
||||
0.666666666667 0.666666666667 0.0 0.00462962962963
|
||||
0.666666666667 0.666666666667 0.166666666667 0.00462962962963
|
||||
0.666666666667 0.666666666667 0.333333333333 0.00462962962963
|
||||
0.666666666667 0.666666666667 0.5 0.00462962962963
|
||||
0.666666666667 0.666666666667 0.666666666667 0.00462962962963
|
||||
0.666666666667 0.666666666667 0.833333333333 0.00462962962963
|
||||
0.666666666667 0.833333333333 0.0 0.00462962962963
|
||||
0.666666666667 0.833333333333 0.166666666667 0.00462962962963
|
||||
0.666666666667 0.833333333333 0.333333333333 0.00462962962963
|
||||
0.666666666667 0.833333333333 0.5 0.00462962962963
|
||||
0.666666666667 0.833333333333 0.666666666667 0.00462962962963
|
||||
0.666666666667 0.833333333333 0.833333333333 0.00462962962963
|
||||
0.833333333333 0.0 0.0 0.00462962962963
|
||||
0.833333333333 0.0 0.166666666667 0.00462962962963
|
||||
0.833333333333 0.0 0.333333333333 0.00462962962963
|
||||
0.833333333333 0.0 0.5 0.00462962962963
|
||||
0.833333333333 0.0 0.666666666667 0.00462962962963
|
||||
0.833333333333 0.0 0.833333333333 0.00462962962963
|
||||
0.833333333333 0.166666666667 0.0 0.00462962962963
|
||||
0.833333333333 0.166666666667 0.166666666667 0.00462962962963
|
||||
0.833333333333 0.166666666667 0.333333333333 0.00462962962963
|
||||
0.833333333333 0.166666666667 0.5 0.00462962962963
|
||||
0.833333333333 0.166666666667 0.666666666667 0.00462962962963
|
||||
0.833333333333 0.166666666667 0.833333333333 0.00462962962963
|
||||
0.833333333333 0.333333333333 0.0 0.00462962962963
|
||||
0.833333333333 0.333333333333 0.166666666667 0.00462962962963
|
||||
0.833333333333 0.333333333333 0.333333333333 0.00462962962963
|
||||
0.833333333333 0.333333333333 0.5 0.00462962962963
|
||||
0.833333333333 0.333333333333 0.666666666667 0.00462962962963
|
||||
0.833333333333 0.333333333333 0.833333333333 0.00462962962963
|
||||
0.833333333333 0.5 0.0 0.00462962962963
|
||||
0.833333333333 0.5 0.166666666667 0.00462962962963
|
||||
0.833333333333 0.5 0.333333333333 0.00462962962963
|
||||
0.833333333333 0.5 0.5 0.00462962962963
|
||||
0.833333333333 0.5 0.666666666667 0.00462962962963
|
||||
0.833333333333 0.5 0.833333333333 0.00462962962963
|
||||
0.833333333333 0.666666666667 0.0 0.00462962962963
|
||||
0.833333333333 0.666666666667 0.166666666667 0.00462962962963
|
||||
0.833333333333 0.666666666667 0.333333333333 0.00462962962963
|
||||
0.833333333333 0.666666666667 0.5 0.00462962962963
|
||||
0.833333333333 0.666666666667 0.666666666667 0.00462962962963
|
||||
0.833333333333 0.666666666667 0.833333333333 0.00462962962963
|
||||
0.833333333333 0.833333333333 0.0 0.00462962962963
|
||||
0.833333333333 0.833333333333 0.166666666667 0.00462962962963
|
||||
0.833333333333 0.833333333333 0.333333333333 0.00462962962963
|
||||
0.833333333333 0.833333333333 0.5 0.00462962962963
|
||||
0.833333333333 0.833333333333 0.666666666667 0.00462962962963
|
||||
0.833333333333 0.833333333333 0.833333333333 0.00462962962963
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
--
|
||||
&inputph
|
||||
prefix = 'si',
|
||||
epsil = .false.,
|
||||
outdir = './'
|
||||
fildyn = 'si.dyn',
|
||||
ldisp = .true.
|
||||
fildvscf = 'dvscf'
|
||||
nq1=2,
|
||||
nq2=2,
|
||||
nq3=2,
|
||||
tr2_ph = 1.0d-14,
|
||||
/
|
|
@ -0,0 +1 @@
|
|||
si
|
|
@ -0,0 +1 @@
|
|||
&input fildyn='si.dyn', zasr='crystal', flfrc='si.fc' /
|
|
@ -0,0 +1,31 @@
|
|||
&control
|
||||
calculation = 'scf'
|
||||
prefix = 'si'
|
||||
restart_mode = 'from_scratch'
|
||||
wf_collect = .true.
|
||||
pseudo_dir = './'
|
||||
outdir = './'
|
||||
tprnfor = .true.
|
||||
tstress = .true.
|
||||
verbosity = 'high'
|
||||
/
|
||||
&system
|
||||
ibrav = 2
|
||||
celldm(1) = 10.262
|
||||
nat = 2
|
||||
ntyp = 1
|
||||
ecutwfc = 10
|
||||
/
|
||||
&electrons
|
||||
diagonalization = 'david'
|
||||
mixing_beta = 0.7
|
||||
conv_thr = 1.0d-14
|
||||
/
|
||||
ATOMIC_SPECIES
|
||||
Si 28.0855 Si_r.upf
|
||||
ATOMIC_POSITIONS alat
|
||||
Si 0.00 0.00 0.00
|
||||
Si 0.25 0.25 0.25
|
||||
K_POINTS automatic
|
||||
6 6 6 0 0 0
|
||||
|
|
@ -88,7 +88,11 @@ inputs_args = ('scf.in', '1'), ('ph.in', '2'), ('q2r.in', '4'), ('scf.in', '1'),
|
|||
|
||||
[epw_mob_ibte/]
|
||||
program = EPW
|
||||
inputs_args = ('scf.in', '1'), ('ph.in', '2'), ('q2r.in', '4'), ('scf.in', '1'), ('nscf.in', '1'), ('epw1.in', '3'), ('epw2.in', '3'), ('epw3.in', '3'), ('epw4.in', '3')
|
||||
inputs_args = ('scf.in', '1'), ('ph.in', '2'), ('q2r.in', '4'), ('scf.in', '1'), ('nscf.in', '1'), ('epw1.in', '3'), ('epw2.in', '3'), ('epw3.in', '3')
|
||||
|
||||
[epw_mob_ibte_sym/]
|
||||
program = EPW
|
||||
inputs_args = ('scf.in', '1'), ('ph.in', '2'), ('q2r.in', '4'), ('scf.in', '1'), ('nscf.in', '1'), ('epw1.in', '3'), ('epw2.in', '3'), ('epw3.in', '3')
|
||||
|
||||
[tddfpt_CH4/]
|
||||
program = TDDFPT
|
||||
|
|
Loading…
Reference in New Issue