mirror of https://gitlab.com/QEF/q-e.git
Added functionality to GWL for iterative Www
This commit is contained in:
parent
10c4f20d00
commit
332954cf26
|
@ -40,7 +40,8 @@ print_spectrum.o\
|
|||
print_bse.o\
|
||||
contract_w_exc.o\
|
||||
qpe_exc.o\
|
||||
qpcorrections.o
|
||||
qpcorrections.o\
|
||||
direct_www.o
|
||||
#zvscal_test.o\
|
||||
|
||||
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
! Modified by Joshua Elliott November 2020 as JDE
|
||||
|
||||
MODULE bse_basic_structures
|
||||
!this module describes the basis structures
|
||||
!which are obtained from the DFT and GW code
|
||||
|
@ -21,6 +23,19 @@ MODULE bse_basic_structures
|
|||
|
||||
END TYPE
|
||||
|
||||
! JDE start
|
||||
TYPE www_mat
|
||||
integer :: numb_v! number of valence bands for the two spin channels
|
||||
integer :: np_max ! maximum number of overlapping wannier orbitals for a given v
|
||||
integer :: ww_tot ! Total number of overlapping wannier products
|
||||
integer, dimension (:,:), pointer :: ii_www_mat ! (np_max,numb_v) The overlapping wannier products, note that
|
||||
! will be zero if there is not an overlap
|
||||
COMPLEX(KIND=dp), DIMENSION(:,:), POINTER :: www !the set of ii W_ww products www(npw,ww_tot)
|
||||
REAL(KIND=dp), DIMENSION(:,:), POINTER :: www_r !the set of ii W_ww products www(nrxxt,ww_tot)
|
||||
|
||||
END TYPE
|
||||
! JDE end
|
||||
|
||||
TYPE vww_prod
|
||||
!this type contains the v*wv*wv' products needed for the exchange part of the
|
||||
!direct interaction term of the excitonic Hamiltonian
|
||||
|
@ -128,6 +143,17 @@ MODULE bse_basic_structures
|
|||
return
|
||||
end subroutine
|
||||
|
||||
! JDE start
|
||||
subroutine initialize_www_mat(wm)
|
||||
implicit none
|
||||
type(www_mat) :: wm
|
||||
nullify(wm%ii_www_mat)
|
||||
nullify(wm%www)
|
||||
nullify(wm%www_r)
|
||||
return
|
||||
end subroutine
|
||||
! JDE end
|
||||
|
||||
subroutine initialize_vww_prod(vww)
|
||||
implicit none
|
||||
type(vww_prod) :: vww
|
||||
|
@ -194,6 +220,19 @@ MODULE bse_basic_structures
|
|||
return
|
||||
end subroutine
|
||||
|
||||
! JDE start
|
||||
subroutine free_www_mat(wm)
|
||||
implicit none
|
||||
type(www_mat) :: wm
|
||||
if(associated(wm%ii_www_mat)) deallocate(wm%ii_www_mat)
|
||||
if(associated(wm%www)) deallocate(wm%www)
|
||||
if(associated(wm%www_r)) deallocate(wm%www_r)
|
||||
nullify(wm%ii_www_mat)
|
||||
nullify(wm%www)
|
||||
nullify(wm%www_r)
|
||||
end subroutine
|
||||
! JDE end
|
||||
|
||||
subroutine free_vww_prod(vww)
|
||||
implicit none
|
||||
type(vww_prod) :: vww
|
||||
|
@ -762,6 +801,78 @@ MODULE bse_basic_structures
|
|||
return
|
||||
end subroutine
|
||||
|
||||
! JDE start
|
||||
subroutine read_www_mat(iimat, wm)
|
||||
! Read from the files produced by pw4gww, the Www products
|
||||
!
|
||||
|
||||
USE io_files, ONLY : prefix, tmp_dir, diropn
|
||||
USE io_global, ONLY : ionode, ionode_id
|
||||
USE mp, ONLY : mp_bcast
|
||||
USE mp_world, ONLY : world_comm
|
||||
USE kinds, ONLY : DP
|
||||
USE wvfct, ONLY : npw
|
||||
implicit none
|
||||
|
||||
type(ii_mat), INTENT(IN) :: iimat ! the ii matrix
|
||||
type(www_mat), INTENT(OUT) :: wm ! the wannier products
|
||||
|
||||
INTEGER, EXTERNAL :: find_free_unit
|
||||
INTEGER :: wannier_prod
|
||||
LOGICAL :: exst
|
||||
|
||||
INTEGER :: ii, iv, tot
|
||||
|
||||
wm%numb_v=iimat%numb_v
|
||||
wm%np_max=iimat%np_max
|
||||
tot = 0
|
||||
|
||||
DO iv = 1, iimat%numb_v
|
||||
DO ii = 1, iimat%np_max
|
||||
|
||||
IF (iimat%iimat(ii,iv) > 0) THEN
|
||||
tot = tot+1
|
||||
ELSE
|
||||
EXIT
|
||||
END IF
|
||||
|
||||
END DO
|
||||
END DO
|
||||
wm%ww_tot=tot
|
||||
|
||||
ALLOCATE(wm%ii_www_mat(wm%np_max, wm%numb_v))
|
||||
ALLOCATE(wm%www(npw, wm%ww_tot))
|
||||
|
||||
|
||||
wannier_prod = find_free_unit()
|
||||
|
||||
! EXTEND THIS FOR SPIN - JOSH
|
||||
CALL diropn(wannier_prod, 'Www_bse1.',npw*2, exst)
|
||||
|
||||
DO ii = 1, wm%ww_tot
|
||||
CALL davcio(wm%www(1,ii),npw*2,wannier_prod,ii,-1)
|
||||
END DO
|
||||
CLOSE(wannier_prod)
|
||||
|
||||
tot=0
|
||||
wm%ii_www_mat=-1
|
||||
DO iv = 1, wm%numb_v
|
||||
DO ii = 1,wm% np_max
|
||||
|
||||
IF (iimat%iimat(ii,iv) > 0) THEN
|
||||
tot=tot+1
|
||||
wm%ii_www_mat(ii,iv)=tot
|
||||
ELSE
|
||||
EXIT
|
||||
END IF
|
||||
|
||||
END DO
|
||||
END DO
|
||||
|
||||
RETURN
|
||||
END SUBROUTINE
|
||||
! JDE end
|
||||
|
||||
subroutine read_vww_prod(ispin,numb_v,npw,np_max,iimat,vww)
|
||||
!each processor reads the vww(G) written by pw4gww
|
||||
!be careful to check that the iimat that is passed to the subroutine is the related to the correct spin channel
|
||||
|
|
|
@ -1,26 +1,28 @@
|
|||
! Modified by Joshua Elliott November 2020 as JDE
|
||||
|
||||
program bse_punch
|
||||
|
||||
use io_global, ONLY : stdout, ionode, ionode_id
|
||||
use io_files, ONLY : psfile, pseudo_dir,diropn
|
||||
use io_files, ONLY : prefix,tmp_dir,iunwfc
|
||||
use mp_world, ONLY : mpime
|
||||
use mp_pools, ONLY : kunit
|
||||
USE wvfct, ONLY : nbnd, et, npwx
|
||||
use io_global, ONLY : stdout, ionode, ionode_id
|
||||
use io_files, ONLY : psfile, pseudo_dir,diropn
|
||||
use io_files, ONLY : prefix,tmp_dir,iunwfc
|
||||
use mp_world, ONLY : mpime
|
||||
use mp_pools, ONLY : kunit
|
||||
USE wvfct, ONLY : nbnd, et, npwx
|
||||
USE gvecw, ONLY : ecutwfc
|
||||
USE gvecs, ONLY : doublegrid
|
||||
use pwcom
|
||||
USE wavefunctions, ONLY : evc
|
||||
use mp, ONLY: mp_bcast
|
||||
USE mp_world, ONLY : world_comm
|
||||
USE fft_base, ONLY : dfftp
|
||||
use scf, only : vrs, vltot, v, kedtau
|
||||
USE wavefunctions, ONLY : evc
|
||||
use mp, ONLY : mp_bcast
|
||||
USE mp_world, ONLY : world_comm
|
||||
USE fft_base, ONLY : dfftp
|
||||
use scf, ONLY : vrs, vltot, v, kedtau
|
||||
USE fft_custom_gwl
|
||||
use bse_basic_structures
|
||||
use exciton
|
||||
USE constants, ONLY: RYTOEV
|
||||
USE mp, ONLY: mp_barrier
|
||||
USE qpe_exc, ONLY: qpc
|
||||
use bse_wannier, ONLY: num_nbndv,&
|
||||
USE constants, ONLY : RYTOEV
|
||||
USE mp, ONLY : mp_barrier
|
||||
USE qpe_exc, ONLY : qpc
|
||||
use bse_wannier, ONLY : num_nbndv,&
|
||||
l_truncated_coulomb,&
|
||||
truncation_radius, &
|
||||
numw_prod,&
|
||||
|
@ -33,7 +35,9 @@ use bse_wannier, ONLY: num_nbndv,&
|
|||
spectra_e_min,spectra_e_max,spectra_nstep,spectra_broad,&
|
||||
l_restart,n_eig_start, nit_lcz,l_lanczos, l_restart_lcz, nlcz_restart,&
|
||||
l_tdhf,l_fullbse,l_lf,l_rpa, l_contraction, l_gtrick, qpe_imin, qpe_imax,&
|
||||
l_scissor,l_dielectric
|
||||
l_scissor,l_dielectric,&
|
||||
l_read_www ! JDE
|
||||
USE direct_www
|
||||
implicit none
|
||||
INTEGER, EXTERNAL :: find_free_unit
|
||||
|
||||
|
@ -74,8 +78,8 @@ NAMELIST /inputbse/ prefix,num_nbndv,dual_bse,outdir,l_truncated_coulomb,&
|
|||
spectra_e_min,spectra_e_max,spectra_nstep,spectra_broad,&
|
||||
l_restart,n_eig_start, nit_lcz,l_lanczos, l_restart_lcz, nlcz_restart,&
|
||||
l_fullbse,l_tdhf,l_lf,l_rpa,l_contraction,l_gtrick, qpe_imin, qpe_imax,&
|
||||
l_scissor,l_dielectric
|
||||
|
||||
l_scissor,l_dielectric,&
|
||||
l_read_www ! JDE
|
||||
debug=.false.
|
||||
|
||||
call start_bse( )
|
||||
|
@ -139,6 +143,7 @@ qpe_imin=1
|
|||
qpe_imax=1
|
||||
l_scissor=.true.
|
||||
l_dielectric=.false.
|
||||
l_read_www=.false. ! JDE
|
||||
!
|
||||
! Reading input file
|
||||
!
|
||||
|
@ -213,6 +218,7 @@ ENDIF
|
|||
CALL mp_bcast( qpe_imin, ionode_id, world_comm)
|
||||
CALL mp_bcast( qpe_imax, ionode_id, world_comm)
|
||||
CALL mp_bcast( l_dielectric, ionode_id, world_comm)
|
||||
CALL mp_bcast( l_read_www, ionode_id, world_comm) ! JDE
|
||||
|
||||
call read_file
|
||||
! after read_file everything is known
|
||||
|
@ -282,7 +288,12 @@ ENDIF
|
|||
allocate(qpc(qpe_imax))
|
||||
call qpcorrections(wcstate)
|
||||
endif
|
||||
|
||||
! JDE start
|
||||
IF (l_read_www) THEN
|
||||
! initialize arrays for www products
|
||||
CALL initialize_direct_www(fc)
|
||||
END IF
|
||||
! JDE end
|
||||
if(l_tspace) then
|
||||
! solve the BSE in transition space
|
||||
call tspace_diago(vstate,vstate_r,fc)
|
||||
|
@ -304,6 +315,7 @@ ENDIF
|
|||
|
||||
|
||||
! free memory
|
||||
if (l_read_www) call free_memory_direct_www ! JDE
|
||||
call free_v_state_r(vstate_r)
|
||||
call free_v_state(vstate)
|
||||
call free_c_state(cstate)
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
!this module contains bse code input variables
|
||||
! Modified by Joshua Elliott November 2020 as JDE
|
||||
MODULE bse_wannier
|
||||
|
||||
USE kinds, ONLY: DP
|
||||
|
@ -58,6 +59,8 @@ MODULE bse_wannier
|
|||
LOGICAL :: l_contraction!if true uses contraction for speeding-up
|
||||
LOGICAL :: l_gtrick!save arrays in G space for limiting memory usage
|
||||
LOGICAL :: l_dielectric!if true in case of l_lanczos=.false. calculates the dielectric function from excitonic amplitudes
|
||||
LOGICAL :: l_read_www ! If true use screening calculated via cgsolve JDE
|
||||
|
||||
|
||||
END MODULE bse_wannier
|
||||
|
||||
|
|
|
@ -0,0 +1,154 @@
|
|||
MODULE direct_www
|
||||
|
||||
USE kinds, ONLY : DP
|
||||
USE bse_basic_structures
|
||||
|
||||
SAVE
|
||||
|
||||
type(ii_mat) :: iimat_direct
|
||||
type(www_mat) :: wwwmat_direct
|
||||
|
||||
CONTAINS
|
||||
|
||||
SUBROUTINE free_memory_direct_www
|
||||
IMPLICIT NONE
|
||||
CALL free_www_mat(wwwmat_direct)
|
||||
CALL free_imat(iimat_direct)
|
||||
RETURN
|
||||
END SUBROUTINE
|
||||
|
||||
SUBROUTINE initialize_direct_www(fc)
|
||||
USE fft_custom_gwl
|
||||
USE gvect
|
||||
USE lsda_mod, ONLY: nspin
|
||||
USE wvfct, ONLY: npw
|
||||
USE wavefunctions, ONLY: psic
|
||||
USE mp_world, ONLY: mpime, nproc
|
||||
USE mp_pools, ONLY: intra_pool_comm
|
||||
|
||||
IMPLICIT NONE
|
||||
TYPE(fft_cus), INTENT(IN) :: fc
|
||||
|
||||
INTEGER :: is, ii, loop_iimat
|
||||
COMPLEX(KIND=DP), ALLOCATABLE :: www_t(:,:)
|
||||
LOGICAL, PARAMETER :: debug=.FALSE.
|
||||
|
||||
CALL initialize_imat(iimat_direct)
|
||||
CALL initialize_www_mat(wwwmat_direct)
|
||||
|
||||
DO is = 1, nspin
|
||||
CALL read_iimat(iimat_direct, is)
|
||||
IF (debug) THEN
|
||||
write(*,*) 'I have read iimat into iimat_direct:'
|
||||
DO loop_iimat = 1, iimat_direct%numb_v
|
||||
write(*,*) iimat_direct%iimat(1:iimat_direct%np_max,loop_iimat)
|
||||
END DO
|
||||
END IF
|
||||
END DO
|
||||
|
||||
CALL read_www_mat(iimat_direct, wwwmat_direct)
|
||||
IF (debug) THEN
|
||||
write(*,*) 'I have compiled wwwmat_direct:'
|
||||
DO loop_iimat = 1, wwwmat_direct%numb_v
|
||||
write(*,*) wwwmat_direct%ii_www_mat(1:wwwmat_direct%np_max,loop_iimat)
|
||||
END DO
|
||||
write(*,*) 'Sanity Check (iimat_direct): '
|
||||
DO loop_iimat = 1, iimat_direct%numb_v
|
||||
write(*,*) iimat_direct%iimat(1:iimat_direct%np_max,loop_iimat)
|
||||
END DO
|
||||
END IF
|
||||
|
||||
! FFT the Www products
|
||||
ALLOCATE(www_t(fc%npwt,wwwmat_direct%ww_tot))
|
||||
|
||||
CALL reorderwfp_col(wwwmat_direct%ww_tot,npw,fc%npwt,wwwmat_direct%www,www_t,npw,fc%npwt, &
|
||||
& ig_l2g,fc%ig_l2gt,fc%ngmt_g,mpime, nproc,intra_pool_comm )
|
||||
|
||||
ALLOCATE(wwwmat_direct%www_r(fc%nrxxt,wwwmat_direct%ww_tot))
|
||||
|
||||
do ii=1,wwwmat_direct%ww_tot,2
|
||||
psic(1:fc%nrxxt)=(0.d0,0.d0)
|
||||
if (ii==wwwmat_direct%ww_tot) then
|
||||
psic(fc%nlt(1:fc%npwt)) = www_t(1:fc%npwt,ii)
|
||||
psic(fc%nltm(1:fc%npwt)) = CONJG( www_t(1:fc%npwt,ii) )
|
||||
else
|
||||
psic(fc%nlt(1:fc%npwt))=www_t(1:fc%npwt,ii)+(0.d0,1.d0)*www_t(1:fc%npwt,ii+1)
|
||||
psic(fc%nltm(1:fc%npwt))=CONJG(www_t(1:fc%npwt,ii))+(0.d0,1.d0)*CONJG(www_t(1:fc%npwt,ii+1))
|
||||
endif
|
||||
CALL cft3t( fc, psic, fc%nr1t, fc%nr2t, fc%nr3t, fc%nrx1t, fc%nrx2t, fc%nrx3t, 2 )
|
||||
wwwmat_direct%www_r(1:fc%nrxxt,ii)= DBLE(psic(1:fc%nrxxt))
|
||||
if(ii/=wwwmat_direct%ww_tot) wwwmat_direct%www_r(1:fc%nrxxt,ii+1)= DIMAG(psic(1:fc%nrxxt))
|
||||
enddo
|
||||
|
||||
DEALLOCATE(www_t)
|
||||
RETURN
|
||||
END SUBROUTINE
|
||||
|
||||
SUBROUTINE direct_www_exc(a_in, fc, a_out)
|
||||
USE bse_basic_structures
|
||||
USE exciton
|
||||
USE fft_custom_gwl
|
||||
|
||||
IMPLICIT NONE
|
||||
|
||||
TYPE(exc), INTENT(IN) :: a_in
|
||||
TYPE(fft_cus), INTENT(IN) :: fc
|
||||
TYPE(exc), INTENT(OUT) :: a_out
|
||||
|
||||
TYPE(exc_r) :: a_in_rt, a_tmp_rt
|
||||
INTEGER, EXTERNAL :: find_free_unit
|
||||
INTEGER :: iv,jv, loop_iimat
|
||||
LOGICAL, PARAMETER :: debug=.FALSE.
|
||||
|
||||
IF (debug) write(*,*) 'direct_www_exc: DEBUG MODE'
|
||||
|
||||
IF (debug) THEN
|
||||
write(*,*) 'Checking wwwmat_direct:'
|
||||
DO loop_iimat = 1, wwwmat_direct%numb_v
|
||||
write(*,*) wwwmat_direct%ii_www_mat(1:wwwmat_direct%np_max,loop_iimat)
|
||||
END DO
|
||||
|
||||
write(*,*) 'Checking iimat_direct: '
|
||||
DO loop_iimat = 1, iimat_direct%numb_v
|
||||
write(*,*) iimat_direct%iimat(1:iimat_direct%np_max,loop_iimat)
|
||||
END DO
|
||||
END IF
|
||||
|
||||
! FFT exciton to real space
|
||||
CALL initialize_exc_r(a_in_rt)
|
||||
CALL fft_a_exc(a_in, fc, a_in_rt)
|
||||
|
||||
! Allocate tmp arrays
|
||||
CALL initialize_exc_r(a_tmp_rt)
|
||||
a_tmp_rt%nrxxt= fc%nrxxt
|
||||
a_tmp_rt%numb_v=a_in%numb_v
|
||||
a_tmp_rt%label=find_free_unit()
|
||||
ALLOCATE(a_tmp_rt%ar(a_tmp_rt%nrxxt, a_tmp_rt%numb_v))
|
||||
a_tmp_rt%ar=0.d0
|
||||
|
||||
! Main loop on iv (v^prime)
|
||||
DO iv = 1, a_in%numb_v
|
||||
! ii_mat contains products
|
||||
DO jv = 1, iimat_direct%np_max
|
||||
! The product between exc and wannier products
|
||||
IF (iimat_direct%iimat(jv,iv) > 0) THEN
|
||||
a_tmp_rt%ar(1:a_tmp_rt%nrxxt,iv) = a_tmp_rt%ar(1:a_tmp_rt%nrxxt,iv) &
|
||||
+ a_in_rt%ar(1:a_tmp_rt%nrxxt,iimat_direct%iimat(jv,iv)) &
|
||||
* wwwmat_direct%www_r(1:a_tmp_rt%nrxxt,wwwmat_direct%ii_www_mat(jv,iv))
|
||||
ELSE
|
||||
|
||||
EXIT
|
||||
END IF
|
||||
END DO
|
||||
END DO
|
||||
|
||||
! FFT back to G space and clean-up
|
||||
CALL fftback_a_exc(a_tmp_rt, fc, a_out)
|
||||
CALL free_memory_exc_a_r(a_in_rt)
|
||||
CALL free_memory_exc_a_r(a_tmp_rt)
|
||||
|
||||
IF (debug) write(*,*) 'direct_www_exc: EXIT'
|
||||
RETURN
|
||||
END SUBROUTINE
|
||||
|
||||
END MODULE
|
|
@ -1,3 +1,5 @@
|
|||
! Modified by Joshua Elliott November 2020 as JDE
|
||||
|
||||
subroutine exc_h_a(a_in,a_out,vstate,vstate_r,cstate,wcstate,fc)
|
||||
!this subroutine applies the excitonic hamiltonian exc_h_a on a given vector
|
||||
!(a_in) and returns the transformed vector (a_out)
|
||||
|
@ -8,7 +10,7 @@ use bse_basic_structures
|
|||
|
||||
use bse_wannier, ONLY:num_nbndv,l_truncated_coulomb, &
|
||||
truncation_radius,l_fullbse,l_tdhf,l_lf,l_rpa,&
|
||||
l_contraction
|
||||
l_contraction, l_read_www ! JDE
|
||||
use pwcom
|
||||
USE wvfct, ONLY : npwx
|
||||
!use io_files, ONLY : find_free_unit,diropn
|
||||
|
@ -18,6 +20,7 @@ USE fft_custom_gwl
|
|||
USE mp, ONLY :mp_barrier
|
||||
USE mp_world, ONLY : world_comm
|
||||
USE contract_w
|
||||
USE direct_www, ONLY : direct_www_exc
|
||||
|
||||
implicit none
|
||||
INTEGER, EXTERNAL :: find_free_unit
|
||||
|
@ -131,11 +134,19 @@ debug=.false.
|
|||
if(debug) write(stdout,*) 'DEBUG1'
|
||||
Call urot_a(a_in,a_rot,0)
|
||||
if(debug) write(stdout,*) 'DEBUG2'
|
||||
if(.not.l_contraction) then
|
||||
call direct_v_exc(a_rot,fc,a_dirv)
|
||||
else
|
||||
call contract_v_apply(a_rot,fc,a_dirv)
|
||||
endif
|
||||
|
||||
! JDE start
|
||||
IF (l_read_www) THEN
|
||||
|
||||
ELSE
|
||||
if(.not.l_contraction) then
|
||||
call direct_v_exc(a_rot,fc,a_dirv)
|
||||
else
|
||||
call contract_v_apply(a_rot,fc,a_dirv)
|
||||
endif
|
||||
END IF
|
||||
! JDE end
|
||||
|
||||
if(debug) write(stdout,*) 'DEBUG3'
|
||||
call pc_operator_exc(a_dirv,vstate,1)
|
||||
if(debug) write(stdout,*) 'DEBUG4'
|
||||
|
@ -159,13 +170,18 @@ debug=.false.
|
|||
if(debug) then
|
||||
write(stdout,*) 'Before direct_W_exc'
|
||||
endif
|
||||
|
||||
!if(.true.) then !DEBUG
|
||||
if(.not.l_contraction) then
|
||||
call direct_w_exc(a_rot,fc,a_dirw)
|
||||
else
|
||||
call contract_w_apply(a_rot,fc,a_dirw)
|
||||
endif
|
||||
|
||||
! JDE start
|
||||
IF (l_read_www) THEN
|
||||
call direct_www_exc(a_rot, fc, a_dirw)
|
||||
ELSE
|
||||
if(.not.l_contraction) then
|
||||
call direct_w_exc(a_rot,fc,a_dirw)
|
||||
else
|
||||
call contract_w_apply(a_rot,fc,a_dirw)
|
||||
endif
|
||||
END IF
|
||||
call pc_operator_exc(a_dirw,vstate,1)
|
||||
|
||||
! and rotate back
|
||||
|
|
|
@ -34,6 +34,7 @@ bse_main.o : ../../PW/src/scf_mod.o
|
|||
bse_main.o : ../../UtilXlib/mp.o
|
||||
bse_main.o : bse_basic_structure.o
|
||||
bse_main.o : bse_wannier.o
|
||||
bse_main.o : direct_www.o
|
||||
bse_main.o : exciton.o
|
||||
bse_main.o : qpe_exc.o
|
||||
bse_wannier.o : ../../Modules/kind.o
|
||||
|
@ -124,6 +125,15 @@ direct_w_exc.o : ../../UtilXlib/mp.o
|
|||
direct_w_exc.o : bse_basic_structure.o
|
||||
direct_w_exc.o : bse_wannier.o
|
||||
direct_w_exc.o : exciton.o
|
||||
direct_www.o : ../../GWW/pw4gww/fft_custom.o
|
||||
direct_www.o : ../../Modules/kind.o
|
||||
direct_www.o : ../../Modules/mp_pools.o
|
||||
direct_www.o : ../../Modules/mp_world.o
|
||||
direct_www.o : ../../Modules/recvec.o
|
||||
direct_www.o : ../../Modules/wavefunctions.o
|
||||
direct_www.o : ../../PW/src/pwcom.o
|
||||
direct_www.o : bse_basic_structure.o
|
||||
direct_www.o : exciton.o
|
||||
dvpsi_bse.o : ../../Modules/becmod.o
|
||||
dvpsi_bse.o : ../../Modules/cell_base.o
|
||||
dvpsi_bse.o : ../../Modules/control_flags.o
|
||||
|
@ -148,6 +158,7 @@ exc_h_a.o : ../../UtilXlib/mp.o
|
|||
exc_h_a.o : bse_basic_structure.o
|
||||
exc_h_a.o : bse_wannier.o
|
||||
exc_h_a.o : contract_w_exc.o
|
||||
exc_h_a.o : direct_www.o
|
||||
exc_h_a.o : exciton.o
|
||||
exchange_exc.o : ../../GWW/pw4gww/fft_custom.o
|
||||
exchange_exc.o : ../../Modules/cell_base.o
|
||||
|
|
|
@ -0,0 +1,396 @@
|
|||
|
||||
Program BSE v.6.6 starts on 21Nov2020 at 0:33:53
|
||||
|
||||
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 4 processors
|
||||
|
||||
MPI processes distributed on 1 nodes
|
||||
R & G space division: proc/nbgrp/npool/nimage = 4
|
||||
|
||||
Reading xml data from directory:
|
||||
|
||||
/home/h05959je/Applications/Quantum_Espresso/latest/q-e/tempdir/SiH4.save/
|
||||
file H.pbe-vbc.UPF: wavefunction(s) 0S renormalized
|
||||
|
||||
IMPORTANT: XC functional enforced from input :
|
||||
Exchange-correlation= PBE
|
||||
( 1 4 3 4 0 0 0)
|
||||
Any further DFT definition will be discarded
|
||||
Please, verify this is what you really want
|
||||
|
||||
|
||||
Parallelization info
|
||||
--------------------
|
||||
sticks: dense smooth PW G-vecs: dense smooth PW
|
||||
Min 1271 1271 317 68355 68355 8565
|
||||
Max 1276 1276 322 68358 68358 8568
|
||||
Sum 5097 5097 1281 273425 273425 34265
|
||||
|
||||
Reading collected, re-writing distributed wavefunctions
|
||||
nkstot= 1
|
||||
after first init
|
||||
after g stuff
|
||||
after wfc waves
|
||||
after davcio
|
||||
|
||||
|
||||
bravais-lattice index = 1
|
||||
lattice parameter (alat) = 20.0000 a.u.
|
||||
unit-cell volume = 8000.0000 (a.u.)^3
|
||||
number of atoms/cell = 5
|
||||
number of atomic types = 2
|
||||
number of electrons = 8.00
|
||||
number of Kohn-Sham states= 8
|
||||
kinetic-energy cutoff = 40.0000 Ry
|
||||
charge density cutoff = 160.0000 Ry
|
||||
Exchange-correlation= PBE
|
||||
( 1 4 3 4 0 0 0)
|
||||
|
||||
celldm(1)= 20.000000 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) = ( 1.000000 0.000000 0.000000 )
|
||||
a(2) = ( 0.000000 1.000000 0.000000 )
|
||||
a(3) = ( 0.000000 0.000000 1.000000 )
|
||||
|
||||
reciprocal axes: (cart. coord. in units 2 pi/alat)
|
||||
b(1) = ( 1.000000 0.000000 0.000000 )
|
||||
b(2) = ( 0.000000 1.000000 0.000000 )
|
||||
b(3) = ( 0.000000 0.000000 1.000000 )
|
||||
|
||||
|
||||
PseudoPot. # 1 for H read from file:
|
||||
/home/h05959je/Applications/Quantum_Espresso/latest/q-e/pseudo/H.pbe-vbc.UPF
|
||||
MD5 check sum: 65927ac6c32861be1224e6d13a099887
|
||||
Pseudo is Norm-conserving, Zval = 1.0
|
||||
Generated by new atomic code, or converted to UPF format
|
||||
Using radial grid of 325 points, 0 beta functions with:
|
||||
|
||||
PseudoPot. # 2 for Si read from file:
|
||||
/home/h05959je/Applications/Quantum_Espresso/latest/q-e/pseudo/Si.pbe-rrkj.UPF
|
||||
MD5 check sum: 8af8e7039d270e0118f3b3651cf51d3d
|
||||
Pseudo is Norm-conserving, Zval = 4.0
|
||||
Generated by new atomic code, or converted to UPF format
|
||||
Using radial grid of 883 points, 3 beta functions with:
|
||||
l(1) = 0
|
||||
l(2) = 0
|
||||
l(3) = 1
|
||||
|
||||
atomic species valence mass pseudopotential
|
||||
H 1.00 1.00000 H ( 1.00)
|
||||
Si 4.00 28.00000 Si( 1.00)
|
||||
|
||||
24 Sym. Ops. (no inversion) found
|
||||
|
||||
|
||||
|
||||
Cartesian axes
|
||||
|
||||
site n. atom positions (alat units)
|
||||
1 Si tau( 1) = ( 0.0000000 0.0000000 0.0000000 )
|
||||
2 H tau( 2) = ( 0.0813801 0.0813801 0.0813801 )
|
||||
3 H tau( 3) = ( -0.0813801 -0.0813801 0.0813801 )
|
||||
4 H tau( 4) = ( -0.0813801 0.0813801 -0.0813801 )
|
||||
5 H tau( 5) = ( 0.0813801 -0.0813801 -0.0813801 )
|
||||
|
||||
number of k points= 1
|
||||
cart. coord. in units 2pi/alat
|
||||
k( 1) = ( 0.0000000 0.0000000 0.0000000), wk = 2.0000000
|
||||
|
||||
Dense grid: 136713 G-vectors FFT dimensions: ( 81, 81, 81)
|
||||
Dimension of the polarizability basis: 50
|
||||
Scissor operator (eV)= 0.0000000000000000
|
||||
Using truncated Coulomb interaction
|
||||
Truncation Radius (a.u.)= 10.000000000000000
|
||||
|
||||
k = 0.0000 0.0000 0.0000 band energies (ev):
|
||||
|
||||
-13.1411 -8.2235 -8.2235 -8.2235 -0.4686 0.2367 0.2367 0.2367
|
||||
|
||||
highest occupied, lowest unoccupied level (ev): -8.2235 -0.4686
|
||||
45 45 45
|
||||
45 45 45
|
||||
|
||||
Planes per process (custom) : nr3t = 45 nr3p = 12 ncplane = 2025
|
||||
|
||||
Proc/ planes cols G
|
||||
|
||||
1 12 317 8565
|
||||
2 11 320 8568
|
||||
3 11 322 8566
|
||||
4 11 322 8566
|
||||
tot 45 1281 34265
|
||||
|
||||
Routine find_eig
|
||||
Conjugate gradient started.
|
||||
Looking for eigenvalue number: 1
|
||||
eps= 1.0000000000000000E-004
|
||||
eps_eig= 1.0000000000000001E-005
|
||||
CG: eig# 1 it= 1 Eig (eV)= 296.21049935926965
|
||||
CG: eig# 1 it= 2 Eig (eV)= 283.80393577626296
|
||||
WARNING:I restart the cg
|
||||
CG: eig# 1 it= 3 Eig (eV)= 173.47649844945249
|
||||
CG: eig# 1 it= 4 Eig (eV)= 87.534015498547973
|
||||
CG: eig# 1 it= 5 Eig (eV)= 55.837028542073817
|
||||
CG: eig# 1 it= 6 Eig (eV)= 42.090972891182908
|
||||
CG: eig# 1 it= 7 Eig (eV)= 32.880485017419247
|
||||
CG: eig# 1 it= 8 Eig (eV)= 25.206223788999324
|
||||
CG: eig# 1 it= 9 Eig (eV)= 21.120007501781529
|
||||
CG: eig# 1 it= 10 Eig (eV)= 17.557850318399097
|
||||
CG: eig# 1 it= 11 Eig (eV)= 15.369349663758982
|
||||
CG: eig# 1 it= 12 Eig (eV)= 14.042260031234164
|
||||
CG: eig# 1 it= 13 Eig (eV)= 12.587879729619756
|
||||
CG: eig# 1 it= 14 Eig (eV)= 11.768672526791867
|
||||
CG: eig# 1 it= 15 Eig (eV)= 10.816218906564874
|
||||
CG: eig# 1 it= 16 Eig (eV)= 10.386816990245299
|
||||
CG: eig# 1 it= 17 Eig (eV)= 9.8922575986665624
|
||||
CG: eig# 1 it= 18 Eig (eV)= 9.5959219655090333
|
||||
CG: eig# 1 it= 19 Eig (eV)= 9.2451484523731722
|
||||
CG: eig# 1 it= 20 Eig (eV)= 8.9976844935421099
|
||||
CG: eig# 1 it= 21 Eig (eV)= 8.7874567978841611
|
||||
CG: eig# 1 it= 22 Eig (eV)= 8.6377399058680240
|
||||
CG: eig# 1 it= 23 Eig (eV)= 8.4939325521944546
|
||||
CG: eig# 1 it= 24 Eig (eV)= 8.3807740166869635
|
||||
CG: eig# 1 it= 25 Eig (eV)= 8.2682879127789892
|
||||
CG: eig# 1 it= 26 Eig (eV)= 8.1950667904727990
|
||||
CG: eig# 1 it= 27 Eig (eV)= 8.1294827665994340
|
||||
CG: eig# 1 it= 28 Eig (eV)= 8.0792904352937018
|
||||
CG: eig# 1 it= 29 Eig (eV)= 8.0299619833041032
|
||||
CG: eig# 1 it= 30 Eig (eV)= 7.9866082670155603
|
||||
CG: eig# 1 it= 31 Eig (eV)= 7.9539515635049396
|
||||
CG: eig# 1 it= 32 Eig (eV)= 7.9236889693666797
|
||||
CG: eig# 1 it= 33 Eig (eV)= 7.8995092526576292
|
||||
CG: eig# 1 it= 34 Eig (eV)= 7.8724127756082485
|
||||
CG: eig# 1 it= 35 Eig (eV)= 7.8505276790970386
|
||||
CG: eig# 1 it= 36 Eig (eV)= 7.8274166812241566
|
||||
CG: eig# 1 it= 37 Eig (eV)= 7.8080473979352947
|
||||
CG: eig# 1 it= 38 Eig (eV)= 7.7875780315997254
|
||||
CG: eig# 1 it= 39 Eig (eV)= 7.7684023110669527
|
||||
CG: eig# 1 it= 40 Eig (eV)= 7.7484937839859791
|
||||
CG: eig# 1 it= 41 Eig (eV)= 7.7306398208155240
|
||||
CG: eig# 1 it= 42 Eig (eV)= 7.7134792984796183
|
||||
CG: eig# 1 it= 43 Eig (eV)= 7.6977086561310060
|
||||
CG: eig# 1 it= 44 Eig (eV)= 7.6811210045674256
|
||||
CG: eig# 1 it= 45 Eig (eV)= 7.6656333854068945
|
||||
CG: eig# 1 it= 46 Eig (eV)= 7.6504436977030261
|
||||
CG: eig# 1 it= 47 Eig (eV)= 7.6373997142617771
|
||||
CG: eig# 1 it= 48 Eig (eV)= 7.6247420213187400
|
||||
CG: eig# 1 it= 49 Eig (eV)= 7.6127311449768822
|
||||
CG: eig# 1 it= 50 Eig (eV)= 7.6011063833704400
|
||||
CG: eig# 1 it= 51 Eig (eV)= 7.5910985097485320
|
||||
CG: eig# 1 it= 52 Eig (eV)= 7.5828986916159886
|
||||
CG: eig# 1 it= 53 Eig (eV)= 7.5758527375412887
|
||||
CG: eig# 1 it= 54 Eig (eV)= 7.5700748068932544
|
||||
CG: eig# 1 it= 55 Eig (eV)= 7.5648614984924567
|
||||
CG: eig# 1 it= 56 Eig (eV)= 7.5607550731318494
|
||||
CG: eig# 1 it= 57 Eig (eV)= 7.5569226623318855
|
||||
CG: eig# 1 it= 58 Eig (eV)= 7.5536293048568828
|
||||
CG: eig# 1 it= 59 Eig (eV)= 7.5502629722053980
|
||||
CG: eig# 1 it= 60 Eig (eV)= 7.5472894938344410
|
||||
CG: eig# 1 it= 61 Eig (eV)= 7.5443990336863260
|
||||
CG: eig# 1 it= 62 Eig (eV)= 7.5418368254496677
|
||||
CG: eig# 1 it= 63 Eig (eV)= 7.5394373545101567
|
||||
CG: eig# 1 it= 64 Eig (eV)= 7.5371775899831839
|
||||
CG: eig# 1 it= 65 Eig (eV)= 7.5348914561509677
|
||||
CG: eig# 1 it= 66 Eig (eV)= 7.5324890420974695
|
||||
CG: eig# 1 it= 67 Eig (eV)= 7.5300620517835428
|
||||
CG: eig# 1 it= 68 Eig (eV)= 7.5275276535672146
|
||||
CG: eig# 1 it= 69 Eig (eV)= 7.5248618976905508
|
||||
CG: eig# 1 it= 70 Eig (eV)= 7.5218282711725184
|
||||
CG: eig# 1 it= 71 Eig (eV)= 7.5184909274005083
|
||||
CG: eig# 1 it= 72 Eig (eV)= 7.5150565965956782
|
||||
CG: eig# 1 it= 73 Eig (eV)= 7.5114039986654371
|
||||
CG: eig# 1 it= 74 Eig (eV)= 7.5073858076198157
|
||||
CG: eig# 1 it= 75 Eig (eV)= 7.5029494160676178
|
||||
CG: eig# 1 it= 76 Eig (eV)= 7.4986293060352383
|
||||
CG: eig# 1 it= 77 Eig (eV)= 7.4948975837011211
|
||||
CG: eig# 1 it= 78 Eig (eV)= 7.4916631720520437
|
||||
CG: eig# 1 it= 79 Eig (eV)= 7.4888163141824302
|
||||
CG: eig# 1 it= 80 Eig (eV)= 7.4861178387527758
|
||||
CG: eig# 1 it= 81 Eig (eV)= 7.4837321039923639
|
||||
CG: eig# 1 it= 82 Eig (eV)= 7.4815618114690245
|
||||
CG: eig# 1 it= 83 Eig (eV)= 7.4795246589896776
|
||||
CG: eig# 1 it= 84 Eig (eV)= 7.4774909304060975
|
||||
CG: eig# 1 it= 85 Eig (eV)= 7.4755506228108599
|
||||
CG: eig# 1 it= 86 Eig (eV)= 7.4737144674776381
|
||||
CG: eig# 1 it= 87 Eig (eV)= 7.4719889529884869
|
||||
CG: eig# 1 it= 88 Eig (eV)= 7.4704111142587406
|
||||
CG: eig# 1 it= 89 Eig (eV)= 7.4689081059053750
|
||||
CG: eig# 1 it= 90 Eig (eV)= 7.4675228237037725
|
||||
CG: eig# 1 it= 91 Eig (eV)= 7.4662084919409546
|
||||
CG: eig# 1 it= 92 Eig (eV)= 7.4650338939993057
|
||||
CG: eig# 1 it= 93 Eig (eV)= 7.4639820057242394
|
||||
CG: eig# 1 it= 94 Eig (eV)= 7.4630351631868779
|
||||
CG: eig# 1 it= 95 Eig (eV)= 7.4621619245012711
|
||||
CG: eig# 1 it= 96 Eig (eV)= 7.4613374059020821
|
||||
CG: eig# 1 it= 97 Eig (eV)= 7.4606313198918537
|
||||
CG: eig# 1 it= 98 Eig (eV)= 7.4600182310518370
|
||||
CG: eig# 1 it= 99 Eig (eV)= 7.4594997819568301
|
||||
CG: eig# 1 it= 100 Eig (eV)= 7.4590095172630626
|
||||
CG: eig# 1 it= 101 Eig (eV)= 7.4585917356416553
|
||||
CG: eig# 1 it= 102 Eig (eV)= 7.4582419474490154
|
||||
CG: eig# 1 it= 103 Eig (eV)= 7.4579846883518526
|
||||
CG: eig# 1 it= 104 Eig (eV)= 7.4577845084996337
|
||||
CG: eig# 1 it= 105 Eig (eV)= 7.4576237501179135
|
||||
CG: eig# 1 it= 106 Eig (eV)= 7.4574924840355354
|
||||
CG: eig# 1 it= 107 Eig (eV)= 7.4573901248674357
|
||||
CG: eig# 1 it= 108 Eig (eV)= 7.4573122686943440
|
||||
CG: eig# 1 it= 109 Eig (eV)= 7.4572464067884843
|
||||
CG: eig# 1 it= 110 Eig (eV)= 7.4571897044093749
|
||||
CG: eig# 1 it= 111 Eig (eV)= 7.4571395657073083
|
||||
CG: eig# 1 it= 112 Eig (eV)= 7.4570976480555329
|
||||
CG: eig# 1 it= 113 Eig (eV)= 7.4570612610299847
|
||||
CG: eig# 1 it= 114 Eig (eV)= 7.4570293672173724
|
||||
CG: eig# 1 it= 115 Eig (eV)= 7.4569993064488616
|
||||
CG: eig# 1 it= 116 Eig (eV)= 7.4569703673633336
|
||||
CG: eig# 1 it= 117 Eig (eV)= 7.4569409988986690
|
||||
CG: eig# 1 it= 118 Eig (eV)= 7.4569120376528648
|
||||
CG: eig# 1 it= 119 Eig (eV)= 7.4568829625720392
|
||||
CG: eig# 1 it= 120 Eig (eV)= 7.4568534138833238
|
||||
CG: eig# 1 it= 121 Eig (eV)= 7.4568207415622503
|
||||
CG: eig# 1 it= 122 Eig (eV)= 7.4567872083084321
|
||||
CG: eig# 1 it= 123 Eig (eV)= 7.4567527376021738
|
||||
CG: eig# 1 it= 124 Eig (eV)= 7.4567177829715856
|
||||
CG: eig# 1 it= 125 Eig (eV)= 7.4566806875174176
|
||||
CG: eig# 1 it= 126 Eig (eV)= 7.4566405341687334
|
||||
CG: eig# 1 it= 127 Eig (eV)= 7.4565974457588151
|
||||
CG: eig# 1 it= 128 Eig (eV)= 7.4565505146004094
|
||||
CG: eig# 1 it= 129 Eig (eV)= 7.4565006235256988
|
||||
CG: eig# 1 it= 130 Eig (eV)= 7.4564461779654740
|
||||
CG: eig# 1 it= 131 Eig (eV)= 7.4563893962989596
|
||||
CG: eig# 1 it= 132 Eig (eV)= 7.4563286819639485
|
||||
CG: eig# 1 it= 133 Eig (eV)= 7.4562724665988940
|
||||
CG: eig# 1 it= 134 Eig (eV)= 7.4562184379863989
|
||||
CG: eig# 1 it= 135 Eig (eV)= 7.4561688127318462
|
||||
CG: eig# 1 it= 136 Eig (eV)= 7.4561192562932890
|
||||
CG: eig# 1 it= 137 Eig (eV)= 7.4560717308537203
|
||||
CG: eig# 1 it= 138 Eig (eV)= 7.4560260645396399
|
||||
CG: eig# 1 it= 139 Eig (eV)= 7.4559833796493358
|
||||
CG: eig# 1 it= 140 Eig (eV)= 7.4559419243227989
|
||||
CG: eig# 1 it= 141 Eig (eV)= 7.4558990059280585
|
||||
CG: eig# 1 it= 142 Eig (eV)= 7.4558552718476525
|
||||
CG: eig# 1 it= 143 Eig (eV)= 7.4558155374202713
|
||||
CG: eig# 1 it= 144 Eig (eV)= 7.4557800976342632
|
||||
CG: eig# 1 it= 145 Eig (eV)= 7.4557474533341193
|
||||
CG: eig# 1 it= 146 Eig (eV)= 7.4557168667083760
|
||||
CG: eig# 1 it= 147 Eig (eV)= 7.4556869473683864
|
||||
CG: eig# 1 it= 148 Eig (eV)= 7.4556578107848175
|
||||
CG: eig# 1 it= 149 Eig (eV)= 7.4556284960647687
|
||||
CG: eig# 1 it= 150 Eig (eV)= 7.4556005477853979
|
||||
CG: eig# 1 it= 151 Eig (eV)= 7.4555725429572144
|
||||
CG: eig# 1 it= 152 Eig (eV)= 7.4555453575860211
|
||||
CG: eig# 1 it= 153 Eig (eV)= 7.4555188483841075
|
||||
CG: eig# 1 it= 154 Eig (eV)= 7.4554934785572113
|
||||
CG: eig# 1 it= 155 Eig (eV)= 7.4554681001372032
|
||||
CG: eig# 1 it= 156 Eig (eV)= 7.4554413766015406
|
||||
CG: eig# 1 it= 157 Eig (eV)= 7.4554124470666734
|
||||
CG: eig# 1 it= 158 Eig (eV)= 7.4553831132352251
|
||||
CG: eig# 1 it= 159 Eig (eV)= 7.4553534178940373
|
||||
CG: eig# 1 it= 160 Eig (eV)= 7.4553258163188518
|
||||
CG: eig# 1 it= 161 Eig (eV)= 7.4552990461322173
|
||||
CG: eig# 1 it= 162 Eig (eV)= 7.4552727336564866
|
||||
CG: eig# 1 it= 163 Eig (eV)= 7.4552456103969522
|
||||
CG: eig# 1 it= 164 Eig (eV)= 7.4552192407767794
|
||||
CG: eig# 1 it= 165 Eig (eV)= 7.4551936944170922
|
||||
CG: eig# 1 it= 166 Eig (eV)= 7.4551675913359272
|
||||
CG: eig# 1 it= 167 Eig (eV)= 7.4551403000009246
|
||||
CG: eig# 1 it= 168 Eig (eV)= 7.4551118170445028
|
||||
CG: eig# 1 it= 169 Eig (eV)= 7.4550820045703361
|
||||
CG: eig# 1 it= 170 Eig (eV)= 7.4550487889743930
|
||||
CG: eig# 1 it= 171 Eig (eV)= 7.4550117339915341
|
||||
CG: eig# 1 it= 172 Eig (eV)= 7.4549709620035713
|
||||
CG: eig# 1 it= 173 Eig (eV)= 7.4549285077986251
|
||||
CG: eig# 1 it= 174 Eig (eV)= 7.4548823643671760
|
||||
CG: eig# 1 it= 175 Eig (eV)= 7.4548362753937196
|
||||
CG: eig# 1 it= 176 Eig (eV)= 7.4547888362105201
|
||||
CG: eig# 1 it= 177 Eig (eV)= 7.4547382385603784
|
||||
CG: eig# 1 it= 178 Eig (eV)= 7.4546810230171889
|
||||
CG: eig# 1 it= 179 Eig (eV)= 7.4546178294909495
|
||||
CG: eig# 1 it= 180 Eig (eV)= 7.4545475742871563
|
||||
CG: eig# 1 it= 181 Eig (eV)= 7.4544578939055590
|
||||
CG: eig# 1 it= 182 Eig (eV)= 7.4543431261389594
|
||||
CG: eig# 1 it= 183 Eig (eV)= 7.4542069241138496
|
||||
CG: eig# 1 it= 184 Eig (eV)= 7.4540547439935168
|
||||
CG: eig# 1 it= 185 Eig (eV)= 7.4538724671336638
|
||||
CG: eig# 1 it= 186 Eig (eV)= 7.4536434229555493
|
||||
CG: eig# 1 it= 187 Eig (eV)= 7.4533606507299188
|
||||
CG: eig# 1 it= 188 Eig (eV)= 7.4529992458480319
|
||||
CG: eig# 1 it= 189 Eig (eV)= 7.4525552229277787
|
||||
CG: eig# 1 it= 190 Eig (eV)= 7.4520119678995966
|
||||
CG: eig# 1 it= 191 Eig (eV)= 7.4513700403470953
|
||||
CG: eig# 1 it= 192 Eig (eV)= 7.4506619982040370
|
||||
CG: eig# 1 it= 193 Eig (eV)= 7.4498982572360939
|
||||
CG: eig# 1 it= 194 Eig (eV)= 7.4491027220854438
|
||||
CG: eig# 1 it= 195 Eig (eV)= 7.4483306280771524
|
||||
CG: eig# 1 it= 196 Eig (eV)= 7.4476118175208077
|
||||
CG: eig# 1 it= 197 Eig (eV)= 7.4469413252071099
|
||||
CG: eig# 1 it= 198 Eig (eV)= 7.4464001349543958
|
||||
CG: eig# 1 it= 199 Eig (eV)= 7.4459284021543182
|
||||
CG: eig# 1 it= 200 Eig (eV)= 7.4455784791951718
|
||||
CG: eig# 1 it= 201 Eig (eV)= 7.4451873323093922
|
||||
CG: eig# 1 it= 202 Eig (eV)= 7.4450618172986545
|
||||
WARNING:I restart the cg
|
||||
CG: eig# 1 it= 203 Eig (eV)= 7.4449142191766997
|
||||
CG: eig# 1 it= 204 Eig (eV)= 7.4447729220827714
|
||||
CG: eig# 1 it= 205 Eig (eV)= 7.4443086979811195
|
||||
CG: eig# 1 it= 206 Eig (eV)= 7.4435024527712041
|
||||
CG: eig# 1 it= 207 Eig (eV)= 7.4432491538714212
|
||||
CG: eig# 1 it= 208 Eig (eV)= 7.4429726274781105
|
||||
CG: eig# 1 it= 209 Eig (eV)= 7.4426704232657066
|
||||
CG: eig# 1 it= 210 Eig (eV)= 7.4424207348336511
|
||||
CG: eig# 1 it= 211 Eig (eV)= 7.4422513829860968
|
||||
CG: eig# 1 it= 212 Eig (eV)= 7.4420961850591736
|
||||
CG: eig# 1 it= 213 Eig (eV)= 7.4419722135300521
|
||||
CG: eig# 1 it= 214 Eig (eV)= 7.4418772950913352
|
||||
CG: eig# 1 it= 215 Eig (eV)= 7.4418049283422363
|
||||
CG: eig# 1 it= 216 Eig (eV)= 7.4417389386902943
|
||||
CG: eig# 1 it= 217 Eig (eV)= 7.4416784738156894
|
||||
CG: eig# 1 it= 218 Eig (eV)= 7.4416328542226156
|
||||
CG: eig# 1 it= 219 Eig (eV)= 7.4415891003864365
|
||||
CG: eig# 1 it= 220 Eig (eV)= 7.4415485633107465
|
||||
CG: eig# 1 it= 221 Eig (eV)= 7.4415097321497647
|
||||
CG: eig# 1 it= 222 Eig (eV)= 7.4414744601275586
|
||||
CG: eig# 1 it= 223 Eig (eV)= 7.4414448784464486
|
||||
CG: eig# 1 it= 224 Eig (eV)= 7.4414176242190164
|
||||
CG: eig# 1 it= 225 Eig (eV)= 7.4413925166960810
|
||||
CG: eig# 1 it= 226 Eig (eV)= 7.4413666550741517
|
||||
CG: eig# 1 it= 227 Eig (eV)= 7.4413438504635163
|
||||
CG: eig# 1 it= 228 Eig (eV)= 7.4413254720983604
|
||||
CG: eig# 1 it= 229 Eig (eV)= 7.4413080928863522
|
||||
CG: eig# 1 it= 230 Eig (eV)= 7.4412927084445633
|
||||
CG: eig# 1 it= 231 Eig (eV)= 7.4412778753911857
|
||||
Conjugate gradient ended.
|
||||
BSE COMPLETED
|
||||
bse_main : 52.53s CPU 53.92s WALL ( 1 calls)
|
||||
fft : 0.08s CPU 0.08s WALL ( 8 calls)
|
||||
fftw : 18.74s CPU 18.94s WALL ( 4632 calls)
|
||||
cft3t : 7.86s CPU 8.09s WALL ( 12752 calls)
|
||||
davcio : 0.00s CPU 0.00s WALL ( 21 calls)
|
||||
make_v_state : 0.00s CPU 0.00s WALL ( 1 calls)
|
||||
make_c_state : 0.00s CPU 0.00s WALL ( 2 calls)
|
||||
v_wfng_to_wf : 0.01s CPU 0.01s WALL ( 3 calls)
|
||||
c_times_exc : 0.26s CPU 0.27s WALL ( 2316 calls)
|
||||
pc_operator_ : 2.02s CPU 2.11s WALL ( 5560 calls)
|
||||
sproduct_exc : 0.23s CPU 0.24s WALL ( 2775 calls)
|
||||
normalize_ex : 0.03s CPU 0.03s WALL ( 696 calls)
|
||||
pout_operato : 0.00s CPU 0.00s WALL ( 928 calls)
|
||||
fft_a_exc : 8.33s CPU 8.75s WALL ( 2316 calls)
|
||||
fftback_a_ex : 5.05s CPU 5.20s WALL ( 2316 calls)
|
||||
urot_a : 1.54s CPU 1.63s WALL ( 4632 calls)
|
||||
conjgrad : 52.17s CPU 53.52s WALL ( 1 calls)
|
||||
linmin : 52.01s CPU 53.35s WALL ( 231 calls)
|
||||
diago_exc : 26.90s CPU 27.25s WALL ( 1158 calls)
|
||||
exchange_exc : 12.17s CPU 12.64s WALL ( 1158 calls)
|
||||
exc_h_a : 51.28s CPU 52.60s WALL ( 1158 calls)
|
||||
find_eig : 52.17s CPU 53.52s WALL ( 1 calls)
|
||||
read_export : 0.03s CPU 0.03s WALL ( 1 calls)
|
||||
rotate_wanni : 1.29s CPU 1.36s WALL ( 4632 calls)
|
||||
read_wannier : 0.23s CPU 0.25s WALL ( 4632 calls)
|
|
@ -0,0 +1,293 @@
|
|||
|
||||
Program PW4GWW v.6.6 starts on 21Nov2020 at 0:33:40
|
||||
|
||||
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 4 processors
|
||||
|
||||
MPI processes distributed on 1 nodes
|
||||
R & G space division: proc/nbgrp/npool/nimage = 4
|
||||
|
||||
Reading xml data from directory:
|
||||
|
||||
/home/h05959je/Applications/Quantum_Espresso/latest/q-e/tempdir/SiH4.save/
|
||||
file H.pbe-vbc.UPF: wavefunction(s) 0S renormalized
|
||||
|
||||
IMPORTANT: XC functional enforced from input :
|
||||
Exchange-correlation= PBE
|
||||
( 1 4 3 4 0 0 0)
|
||||
Any further DFT definition will be discarded
|
||||
Please, verify this is what you really want
|
||||
|
||||
|
||||
Parallelization info
|
||||
--------------------
|
||||
sticks: dense smooth PW G-vecs: dense smooth PW
|
||||
Min 1271 1271 317 68355 68355 8565
|
||||
Max 1276 1276 322 68358 68358 8568
|
||||
Sum 5097 5097 1281 273425 273425 34265
|
||||
|
||||
Reading collected, re-writing distributed wavefunctions
|
||||
nkstot= 1
|
||||
after first init
|
||||
after g stuff
|
||||
after wfc waves
|
||||
after davcio
|
||||
|
||||
|
||||
bravais-lattice index = 1
|
||||
lattice parameter (alat) = 20.0000 a.u.
|
||||
unit-cell volume = 8000.0000 (a.u.)^3
|
||||
number of atoms/cell = 5
|
||||
number of atomic types = 2
|
||||
number of electrons = 8.00
|
||||
number of Kohn-Sham states= 8
|
||||
kinetic-energy cutoff = 40.0000 Ry
|
||||
charge density cutoff = 160.0000 Ry
|
||||
Exchange-correlation= PBE
|
||||
( 1 4 3 4 0 0 0)
|
||||
|
||||
celldm(1)= 20.000000 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) = ( 1.000000 0.000000 0.000000 )
|
||||
a(2) = ( 0.000000 1.000000 0.000000 )
|
||||
a(3) = ( 0.000000 0.000000 1.000000 )
|
||||
|
||||
reciprocal axes: (cart. coord. in units 2 pi/alat)
|
||||
b(1) = ( 1.000000 0.000000 0.000000 )
|
||||
b(2) = ( 0.000000 1.000000 0.000000 )
|
||||
b(3) = ( 0.000000 0.000000 1.000000 )
|
||||
|
||||
|
||||
PseudoPot. # 1 for H read from file:
|
||||
/home/h05959je/Applications/Quantum_Espresso/latest/q-e/pseudo/H.pbe-vbc.UPF
|
||||
MD5 check sum: 65927ac6c32861be1224e6d13a099887
|
||||
Pseudo is Norm-conserving, Zval = 1.0
|
||||
Generated by new atomic code, or converted to UPF format
|
||||
Using radial grid of 325 points, 0 beta functions with:
|
||||
|
||||
PseudoPot. # 2 for Si read from file:
|
||||
/home/h05959je/Applications/Quantum_Espresso/latest/q-e/pseudo/Si.pbe-rrkj.UPF
|
||||
MD5 check sum: 8af8e7039d270e0118f3b3651cf51d3d
|
||||
Pseudo is Norm-conserving, Zval = 4.0
|
||||
Generated by new atomic code, or converted to UPF format
|
||||
Using radial grid of 883 points, 3 beta functions with:
|
||||
l(1) = 0
|
||||
l(2) = 0
|
||||
l(3) = 1
|
||||
|
||||
atomic species valence mass pseudopotential
|
||||
H 1.00 1.00000 H ( 1.00)
|
||||
Si 4.00 28.00000 Si( 1.00)
|
||||
|
||||
24 Sym. Ops. (no inversion) found
|
||||
|
||||
|
||||
|
||||
Cartesian axes
|
||||
|
||||
site n. atom positions (alat units)
|
||||
1 Si tau( 1) = ( 0.0000000 0.0000000 0.0000000 )
|
||||
2 H tau( 2) = ( 0.0813801 0.0813801 0.0813801 )
|
||||
3 H tau( 3) = ( -0.0813801 -0.0813801 0.0813801 )
|
||||
4 H tau( 4) = ( -0.0813801 0.0813801 -0.0813801 )
|
||||
5 H tau( 5) = ( 0.0813801 -0.0813801 -0.0813801 )
|
||||
|
||||
number of k points= 1
|
||||
cart. coord. in units 2pi/alat
|
||||
k( 1) = ( 0.0000000 0.0000000 0.0000000), wk = 2.0000000
|
||||
|
||||
Dense grid: 136713 G-vectors FFT dimensions: ( 81, 81, 81)
|
||||
|
||||
k = 0.0000 0.0000 0.0000 band energies (ev):
|
||||
|
||||
-13.1411 -8.2235 -8.2235 -8.2235 -0.4686 0.2367 0.2367 0.2367
|
||||
|
||||
highest occupied, lowest unoccupied level (ev): -8.2235 -0.4686
|
||||
MAX_NGM: 4283 34178
|
||||
KS energy: 1 -13.140966578109767
|
||||
KS energy: 2 -8.2233276299978257
|
||||
KS energy: 3 -8.2233365853357245
|
||||
KS energy: 4 -8.2233276303316760
|
||||
KS energy: 5 -0.46864722548946491
|
||||
KS energy: 6 0.23672265435427392
|
||||
KS energy: 7 0.23673893620010142
|
||||
KS energy: 8 0.23674455726551508
|
||||
Routine energies_xc : 1 -11.178344520560517
|
||||
Routine energies_xc : 2 -11.245118798391397
|
||||
Routine energies_xc : 3 -11.245113399587716
|
||||
Routine energies_xc : 4 -11.245124650622815
|
||||
Routine energies_xc : 5 -2.1201068889032384
|
||||
Routine energies_xc : 6 -5.8791622516254307
|
||||
Routine energies_xc : 7 -5.8768309114446691
|
||||
Routine energies_xc : 8 -5.8733483707284249
|
||||
Routine energies_h : 1 48.688276023848211
|
||||
Routine energies_h : 2 44.721420564987014
|
||||
Routine energies_h : 3 44.721408900874238
|
||||
Routine energies_h : 4 44.721435093990195
|
||||
Routine energies_h : 5 7.5283167602632561
|
||||
Routine energies_h : 6 26.960671456213223
|
||||
Routine energies_h : 7 26.949576211545775
|
||||
Routine energies_h : 8 26.932876766487766
|
||||
stop_clock: clock # 14 for h_psi not running
|
||||
Transform to real wfcs
|
||||
MATRIX BIG1
|
||||
NRS 81 81 81
|
||||
NRXS 81 81 81
|
||||
Calculate grid
|
||||
MATRIX BIG2
|
||||
MATRIX IIW 1
|
||||
MATRIX JJW 1
|
||||
Calculate US
|
||||
Out of matrix_wannier_gamma_big
|
||||
LOCALIZING WANNIER FUNCTIONS:
|
||||
Spread 429.66776443120870 380.71937246382919
|
||||
Spread 432.83632681016940 429.66776443120870
|
||||
Spread 432.86075086835973 432.83632681016940
|
||||
Spread 432.86075278536617 432.86075086835973
|
||||
Spread 432.86075278554688 432.86075278536617
|
||||
Center Wannier: 1.2512605038770443 18.748739109075352 18.748739109075352
|
||||
Center Wannier: 18.748740481971389 1.2512589760550519 1.2512589760550519
|
||||
Center Wannier: 1.2512599553327064 1.2512606781865674 1.2512606781865674
|
||||
Center Wannier: 18.748740445445677 18.748742485853835 18.748742485853835
|
||||
USE RESTART: 3 LANCZOS_RESTART /=2,3
|
||||
USE RESTART: 4 LANCZOS_RESTART /=2,3
|
||||
USE RESTART: 5 LANCZOS_RESTART /=2,3
|
||||
Call initialize_fft_custom
|
||||
45 45 45
|
||||
45 45 45
|
||||
|
||||
Planes per process (custom) : nr3t = 45 nr3p = 12 ncplane = 2025
|
||||
|
||||
Proc/ planes cols G
|
||||
|
||||
1 12 317 8565
|
||||
2 11 320 8568
|
||||
3 11 322 8566
|
||||
4 11 322 8566
|
||||
tot 45 1281 34265
|
||||
|
||||
iv,jv,o_mat 1 1 229.98343470967384
|
||||
iv,jv,o_mat 1 2 7.1455327636224304
|
||||
iv,jv,o_mat 1 3 7.1454597815006897
|
||||
iv,jv,o_mat 1 4 7.1455143097042093
|
||||
iv,jv,o_mat 2 1 7.1455327636224304
|
||||
iv,jv,o_mat 2 2 229.98361568456679
|
||||
iv,jv,o_mat 2 3 7.1455186248734961
|
||||
iv,jv,o_mat 2 4 7.1456222626177643
|
||||
iv,jv,o_mat 3 1 7.1454597815006897
|
||||
iv,jv,o_mat 3 2 7.1455186248734961
|
||||
iv,jv,o_mat 3 3 229.98362599700019
|
||||
iv,jv,o_mat 3 4 7.1455095589769204
|
||||
iv,jv,o_mat 4 1 7.1455143097042093
|
||||
iv,jv,o_mat 4 2 7.1456222626177643
|
||||
iv,jv,o_mat 4 3 7.1455095589769204
|
||||
iv,jv,o_mat 4 4 229.98291347427346
|
||||
bse ii found= 16
|
||||
max_ngm= 4283
|
||||
npw= 4283
|
||||
Note: we have changed pmat_type on the fly!
|
||||
CGSOLVE ww PAIR: 1
|
||||
iter # 0 u_u = 0.5219E-01
|
||||
iter # 1 u_u = 0.3587E-02
|
||||
iter # 2 u_u = 0.8483E-04
|
||||
iter # 3 u_u = 0.4610E-05
|
||||
iter # 4 u_u = 0.3951E-06
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 2
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.2375E-05
|
||||
iter # 2 u_u = 0.2843E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 3
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.2375E-05
|
||||
iter # 2 u_u = 0.2843E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 4
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.2375E-05
|
||||
iter # 2 u_u = 0.2843E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 5
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.2375E-05
|
||||
iter # 2 u_u = 0.2843E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 6
|
||||
iter # 0 u_u = 0.5219E-01
|
||||
iter # 1 u_u = 0.3795E-02
|
||||
iter # 2 u_u = 0.7269E-04
|
||||
iter # 3 u_u = 0.3723E-05
|
||||
iter # 4 u_u = 0.3478E-06
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 7
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.1253E-05
|
||||
iter # 2 u_u = 0.2759E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 8
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.1253E-05
|
||||
iter # 2 u_u = 0.2759E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 9
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.2375E-05
|
||||
iter # 2 u_u = 0.2843E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 10
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.1253E-05
|
||||
iter # 2 u_u = 0.2759E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 11
|
||||
iter # 0 u_u = 0.5219E-01
|
||||
iter # 1 u_u = 0.3795E-02
|
||||
iter # 2 u_u = 0.7269E-04
|
||||
iter # 3 u_u = 0.3723E-05
|
||||
iter # 4 u_u = 0.3478E-06
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 12
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.1253E-05
|
||||
iter # 2 u_u = 0.2759E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 13
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.2375E-05
|
||||
iter # 2 u_u = 0.2843E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 14
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.1253E-05
|
||||
iter # 2 u_u = 0.2759E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 15
|
||||
iter # 0 u_u = 0.8422E-04
|
||||
iter # 1 u_u = 0.1253E-05
|
||||
iter # 2 u_u = 0.2759E-07
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
CGSOLVE ww PAIR: 16
|
||||
iter # 0 u_u = 0.5219E-01
|
||||
iter # 1 u_u = 0.3795E-02
|
||||
iter # 2 u_u = 0.7269E-04
|
||||
iter # 3 u_u = 0.3723E-05
|
||||
iter # 4 u_u = 0.3478E-06
|
||||
stop_clock: clock # 24 for cgsolve not running
|
||||
files closed
|
||||
PW4GWW COMPLETED
|
||||
produce_wann : 11.53s CPU 11.91s WALL ( 1 calls)
|
||||
cft3t : 0.01s CPU 0.01s WALL ( 18 calls)
|
||||
h_psi : 6.67s CPU 6.80s WALL ( 332 calls)
|
||||
fft : 0.14s CPU 0.14s WALL ( 14 calls)
|
||||
fftw : 7.50s CPU 7.67s WALL ( 1814 calls)
|
||||
davcio : 0.02s CPU 0.03s WALL ( 92 calls)
|
|
@ -0,0 +1,290 @@
|
|||
|
||||
Program PWSCF v.6.6 starts on 21Nov2020 at 0:33:35
|
||||
|
||||
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 4 processors
|
||||
|
||||
MPI processes distributed on 1 nodes
|
||||
R & G space division: proc/nbgrp/npool/nimage = 4
|
||||
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
|
||||
file H.pbe-vbc.UPF: wavefunction(s) 0S renormalized
|
||||
|
||||
gamma-point specific algorithms are used
|
||||
|
||||
Subspace diagonalization in iterative solution of the eigenvalue problem:
|
||||
a serial algorithm will be used
|
||||
|
||||
|
||||
Parallelization info
|
||||
--------------------
|
||||
sticks: dense smooth PW G-vecs: dense smooth PW
|
||||
Min 1271 1271 317 68355 68355 8565
|
||||
Max 1276 1276 322 68358 68358 8568
|
||||
Sum 5097 5097 1281 273425 273425 34265
|
||||
|
||||
|
||||
|
||||
bravais-lattice index = 1
|
||||
lattice parameter (alat) = 20.0000 a.u.
|
||||
unit-cell volume = 8000.0000 (a.u.)^3
|
||||
number of atoms/cell = 5
|
||||
number of atomic types = 2
|
||||
number of electrons = 8.00
|
||||
number of Kohn-Sham states= 8
|
||||
kinetic-energy cutoff = 40.0000 Ry
|
||||
charge density cutoff = 160.0000 Ry
|
||||
convergence threshold = 1.0E-08
|
||||
mixing beta = 0.5000
|
||||
number of iterations used = 8 plain mixing
|
||||
Exchange-correlation= SLA PW PBE PBE
|
||||
( 1 4 3 4 0 0 0)
|
||||
|
||||
celldm(1)= 20.000000 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) = ( 1.000000 0.000000 0.000000 )
|
||||
a(2) = ( 0.000000 1.000000 0.000000 )
|
||||
a(3) = ( 0.000000 0.000000 1.000000 )
|
||||
|
||||
reciprocal axes: (cart. coord. in units 2 pi/alat)
|
||||
b(1) = ( 1.000000 0.000000 0.000000 )
|
||||
b(2) = ( 0.000000 1.000000 0.000000 )
|
||||
b(3) = ( 0.000000 0.000000 1.000000 )
|
||||
|
||||
|
||||
PseudoPot. # 1 for H read from file:
|
||||
/home/h05959je/Applications/Quantum_Espresso/latest/q-e/pseudo/H.pbe-vbc.UPF
|
||||
MD5 check sum: 65927ac6c32861be1224e6d13a099887
|
||||
Pseudo is Norm-conserving, Zval = 1.0
|
||||
Generated by new atomic code, or converted to UPF format
|
||||
Using radial grid of 325 points, 0 beta functions with:
|
||||
|
||||
PseudoPot. # 2 for Si read from file:
|
||||
/home/h05959je/Applications/Quantum_Espresso/latest/q-e/pseudo/Si.pbe-rrkj.UPF
|
||||
MD5 check sum: 8af8e7039d270e0118f3b3651cf51d3d
|
||||
Pseudo is Norm-conserving, Zval = 4.0
|
||||
Generated by new atomic code, or converted to UPF format
|
||||
Using radial grid of 883 points, 3 beta functions with:
|
||||
l(1) = 0
|
||||
l(2) = 0
|
||||
l(3) = 1
|
||||
|
||||
atomic species valence mass pseudopotential
|
||||
H 1.00 1.00000 H ( 1.00)
|
||||
Si 4.00 28.00000 Si( 1.00)
|
||||
|
||||
24 Sym. Ops. (no inversion) found
|
||||
|
||||
|
||||
|
||||
Cartesian axes
|
||||
|
||||
site n. atom positions (alat units)
|
||||
1 Si tau( 1) = ( 0.0000000 0.0000000 0.0000000 )
|
||||
2 H tau( 2) = ( 0.0813801 0.0813801 0.0813801 )
|
||||
3 H tau( 3) = ( -0.0813801 -0.0813801 0.0813801 )
|
||||
4 H tau( 4) = ( -0.0813801 0.0813801 -0.0813801 )
|
||||
5 H tau( 5) = ( 0.0813801 -0.0813801 -0.0813801 )
|
||||
|
||||
number of k points= 1
|
||||
cart. coord. in units 2pi/alat
|
||||
k( 1) = ( 0.0000000 0.0000000 0.0000000), wk = 2.0000000
|
||||
|
||||
Dense grid: 136713 G-vectors FFT dimensions: ( 81, 81, 81)
|
||||
|
||||
Estimated max dynamical RAM per process > 26.96 MB
|
||||
|
||||
Estimated total dynamical RAM > 107.82 MB
|
||||
|
||||
Initial potential from superposition of free atoms
|
||||
|
||||
starting charge 7.99939, renormalised to 8.00000
|
||||
|
||||
negative rho (up, down): 1.088E-03 0.000E+00
|
||||
Starting wfcs are 8 randomized atomic wfcs
|
||||
|
||||
total cpu time spent up to now is 0.4 secs
|
||||
|
||||
Self-consistent Calculation
|
||||
|
||||
iteration # 1 ecut= 40.00 Ry beta= 0.50
|
||||
CG style diagonalization
|
||||
ethr = 1.00E-02, avg # of iterations = 3.8
|
||||
|
||||
negative rho (up, down): 5.098E-04 0.000E+00
|
||||
|
||||
total cpu time spent up to now is 0.9 secs
|
||||
|
||||
total energy = -12.49969421 Ry
|
||||
estimated scf accuracy < 0.26447220 Ry
|
||||
|
||||
iteration # 2 ecut= 40.00 Ry beta= 0.50
|
||||
CG style diagonalization
|
||||
ethr = 3.31E-03, avg # of iterations = 3.0
|
||||
|
||||
negative rho (up, down): 9.757E-05 0.000E+00
|
||||
|
||||
total cpu time spent up to now is 1.4 secs
|
||||
|
||||
total energy = -12.49578462 Ry
|
||||
estimated scf accuracy < 0.04410172 Ry
|
||||
|
||||
iteration # 3 ecut= 40.00 Ry beta= 0.50
|
||||
CG style diagonalization
|
||||
ethr = 5.51E-04, avg # of iterations = 4.4
|
||||
|
||||
negative rho (up, down): 3.952E-05 0.000E+00
|
||||
|
||||
total cpu time spent up to now is 1.9 secs
|
||||
|
||||
total energy = -12.50106436 Ry
|
||||
estimated scf accuracy < 0.00023043 Ry
|
||||
|
||||
iteration # 4 ecut= 40.00 Ry beta= 0.50
|
||||
CG style diagonalization
|
||||
ethr = 2.88E-06, avg # of iterations = 6.5
|
||||
|
||||
negative rho (up, down): 1.483E-05 0.000E+00
|
||||
|
||||
total cpu time spent up to now is 2.7 secs
|
||||
|
||||
total energy = -12.50154342 Ry
|
||||
estimated scf accuracy < 0.00012972 Ry
|
||||
|
||||
iteration # 5 ecut= 40.00 Ry beta= 0.50
|
||||
CG style diagonalization
|
||||
ethr = 1.62E-06, avg # of iterations = 3.1
|
||||
|
||||
negative rho (up, down): 9.747E-08 0.000E+00
|
||||
|
||||
total cpu time spent up to now is 3.1 secs
|
||||
|
||||
total energy = -12.50156119 Ry
|
||||
estimated scf accuracy < 0.00001708 Ry
|
||||
|
||||
iteration # 6 ecut= 40.00 Ry beta= 0.50
|
||||
CG style diagonalization
|
||||
ethr = 2.13E-07, avg # of iterations = 3.0
|
||||
|
||||
total cpu time spent up to now is 3.6 secs
|
||||
|
||||
total energy = -12.50156099 Ry
|
||||
estimated scf accuracy < 0.00000256 Ry
|
||||
|
||||
iteration # 7 ecut= 40.00 Ry beta= 0.50
|
||||
CG style diagonalization
|
||||
ethr = 3.20E-08, avg # of iterations = 3.2
|
||||
|
||||
total cpu time spent up to now is 4.1 secs
|
||||
|
||||
total energy = -12.50156140 Ry
|
||||
estimated scf accuracy < 0.00000003 Ry
|
||||
|
||||
iteration # 8 ecut= 40.00 Ry beta= 0.50
|
||||
CG style diagonalization
|
||||
ethr = 3.66E-10, avg # of iterations = 3.6
|
||||
|
||||
total cpu time spent up to now is 4.6 secs
|
||||
|
||||
total energy = -12.50156144 Ry
|
||||
estimated scf accuracy < 0.00000002 Ry
|
||||
|
||||
iteration # 9 ecut= 40.00 Ry beta= 0.50
|
||||
CG style diagonalization
|
||||
ethr = 2.06E-10, avg # of iterations = 3.2
|
||||
|
||||
total cpu time spent up to now is 5.0 secs
|
||||
|
||||
End of self-consistent calculation
|
||||
|
||||
k = 0.0000 0.0000 0.0000 ( 17133 PWs) bands (ev):
|
||||
|
||||
-13.1411 -8.2235 -8.2235 -8.2235 -0.4686 0.2367 0.2367 0.2367
|
||||
|
||||
highest occupied, lowest unoccupied level (ev): -8.2235 -0.4686
|
||||
|
||||
! total energy = -12.50156144 Ry
|
||||
estimated scf accuracy < 1.9E-09 Ry
|
||||
|
||||
The total energy is the sum of the following terms:
|
||||
one-electron contribution = -25.83474374 Ry
|
||||
hartree contribution = 13.43941385 Ry
|
||||
xc contribution = -5.11522157 Ry
|
||||
ewald contribution = 5.00899002 Ry
|
||||
|
||||
convergence has been achieved in 9 iterations
|
||||
|
||||
Forces acting on atoms (cartesian axes, Ry/au):
|
||||
|
||||
atom 1 type 2 force = 0.00000000 0.00000000 0.00000000
|
||||
atom 2 type 1 force = 0.00144831 0.00144831 0.00144831
|
||||
atom 3 type 1 force = -0.00144831 -0.00144831 0.00144831
|
||||
atom 4 type 1 force = -0.00144831 0.00144831 -0.00144831
|
||||
atom 5 type 1 force = 0.00144831 -0.00144831 -0.00144831
|
||||
|
||||
Total force = 0.005017 Total SCF correction = 0.000004
|
||||
|
||||
Writing output data file /home/h05959je/Applications/Quantum_Espresso/latest/q-e/tempdir/SiH4.save/
|
||||
|
||||
init_run : 0.30s CPU 0.32s WALL ( 1 calls)
|
||||
electrons : 4.54s CPU 4.66s WALL ( 1 calls)
|
||||
forces : 0.08s CPU 0.09s WALL ( 1 calls)
|
||||
|
||||
Called by init_run:
|
||||
wfcinit : 0.06s CPU 0.06s WALL ( 1 calls)
|
||||
potinit : 0.17s CPU 0.19s WALL ( 1 calls)
|
||||
hinit0 : 0.04s CPU 0.04s WALL ( 1 calls)
|
||||
|
||||
Called by electrons:
|
||||
c_bands : 2.56s CPU 2.61s WALL ( 9 calls)
|
||||
sum_band : 0.46s CPU 0.47s WALL ( 9 calls)
|
||||
v_of_rho : 1.37s CPU 1.45s WALL ( 10 calls)
|
||||
mix_rho : 0.22s CPU 0.22s WALL ( 9 calls)
|
||||
|
||||
Called by c_bands:
|
||||
init_us_2 : 0.02s CPU 0.02s WALL ( 19 calls)
|
||||
rcgdiagg : 2.21s CPU 2.24s WALL ( 9 calls)
|
||||
wfcrot : 0.40s CPU 0.41s WALL ( 9 calls)
|
||||
|
||||
Called by *cgdiagg:
|
||||
h_psi : 2.50s CPU 2.54s WALL ( 216 calls)
|
||||
|
||||
Called by h_psi:
|
||||
h_psi:calbec : 0.05s CPU 0.05s WALL ( 216 calls)
|
||||
vloc_psi : 2.42s CPU 2.46s WALL ( 216 calls)
|
||||
add_vuspsi : 0.02s CPU 0.02s WALL ( 216 calls)
|
||||
hs_1psi : 2.12s CPU 2.15s WALL ( 207 calls)
|
||||
s_1psi : 0.02s CPU 0.02s WALL ( 207 calls)
|
||||
|
||||
General routines
|
||||
calbec : 0.06s CPU 0.06s WALL ( 427 calls)
|
||||
fft : 0.80s CPU 0.84s WALL ( 81 calls)
|
||||
ffts : 0.11s CPU 0.11s WALL ( 9 calls)
|
||||
fftw : 2.15s CPU 2.18s WALL ( 522 calls)
|
||||
|
||||
Parallel routines
|
||||
fft_scatt_xy : 0.56s CPU 0.57s WALL ( 612 calls)
|
||||
fft_scatt_yz : 0.51s CPU 0.54s WALL ( 612 calls)
|
||||
|
||||
PWSCF : 4.96s CPU 5.11s WALL
|
||||
|
||||
|
||||
This run was terminated on: 0:33:40 21Nov2020
|
||||
|
||||
=------------------------------------------------------------------------------=
|
||||
JOB DONE.
|
||||
=------------------------------------------------------------------------------=
|
|
@ -0,0 +1,192 @@
|
|||
#!/bin/sh
|
||||
|
||||
# run from directory where this script is
|
||||
cd `echo $0 | sed 's/\(.*\)\/.*/\1/'` # extract pathname
|
||||
EXAMPLE_DIR=`pwd`
|
||||
|
||||
# check whether echo has the -e option
|
||||
if test "`echo -e`" = "-e" ; then ECHO=echo ; else ECHO="echo -e" ; fi
|
||||
|
||||
$ECHO
|
||||
$ECHO "$EXAMPLE_DIR : starting"
|
||||
$ECHO
|
||||
$ECHO "This example shows how to use pw.x pw4gww.x & bse.x to calculate"
|
||||
$ECHO "the excitonic state with iterative W(r,r')w_v(r)w_v'(r') scheme"
|
||||
|
||||
# set the needed environment variables
|
||||
. ../../../environment_variables
|
||||
|
||||
# required executables and pseudopotentials
|
||||
BIN_LIST="pw.x pw4gww.x bse_main.x"
|
||||
PSEUDO_LIST="Si.pbe-rrkj.UPF H.pbe-vbc.UPF"
|
||||
|
||||
$ECHO
|
||||
$ECHO " executables directory: $BIN_DIR"
|
||||
$ECHO " pseudo directory: $PSEUDO_DIR"
|
||||
$ECHO " temporary directory: $TMP_DIR"
|
||||
$ECHO " checking that needed directories and files exist...\c"
|
||||
|
||||
# check for directories
|
||||
for DIR in "$BIN_DIR" "$PSEUDO_DIR" ; do
|
||||
if test ! -d $DIR ; then
|
||||
$ECHO
|
||||
$ECHO "ERROR: $DIR not existent or not a directory"
|
||||
$ECHO "Aborting"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
for DIR in "$TMP_DIR" "$EXAMPLE_DIR/results" ; do
|
||||
if test ! -d $DIR ; then
|
||||
mkdir $DIR
|
||||
fi
|
||||
done
|
||||
cd $EXAMPLE_DIR/results
|
||||
|
||||
# check for executables
|
||||
for FILE in $BIN_LIST ; do
|
||||
if test ! -x $BIN_DIR/$FILE ; then
|
||||
$ECHO
|
||||
$ECHO "ERROR: $BIN_DIR/$FILE not existent or not executable"
|
||||
$ECHO "Aborting"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# check for pseudopotentials
|
||||
for FILE in $PSEUDO_LIST ; do
|
||||
if test ! -r $PSEUDO_DIR/$FILE ; then
|
||||
$ECHO
|
||||
$ECHO "Downloading $FILE to $PSEUDO_DIR...\c"
|
||||
$WGET $PSEUDO_DIR/$FILE $NETWORK_PSEUDO/$FILE 2> /dev/null
|
||||
fi
|
||||
if test $? != 0; then
|
||||
$ECHO
|
||||
$ECHO "ERROR: $PSEUDO_DIR/$FILE not existent or not readable"
|
||||
$ECHO "Aborting"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
$ECHO " done"
|
||||
|
||||
# how to run executables
|
||||
PW_COMMAND="$PARA_PREFIX $BIN_DIR/pw.x $PARA_POSTFIX"
|
||||
$ECHO
|
||||
$ECHO " running pw.x as: $PW_COMMAND"
|
||||
$ECHO
|
||||
PW4GWW_COMMAND="$PARA_PREFIX $BIN_DIR/pw4gww.x $PARA_POSTFIX"
|
||||
$ECHO
|
||||
$ECHO " running pw4gww.x as: $PW4GWW_COMMAND"
|
||||
$ECHO
|
||||
BSE_COMMAND="$PARA_PREFIX $BIN_DIR/bse_main.x $PARA_POSTFIX"
|
||||
$ECHO
|
||||
$ECHO " running bse.x as: $BSE_COMMAND"
|
||||
$ECHO
|
||||
|
||||
|
||||
# self-consistent calculation
|
||||
cat > silane_scf.in << EOF
|
||||
&control
|
||||
calculation = 'scf',
|
||||
restart_mode='from_scratch',
|
||||
prefix='SiH4',
|
||||
tprnfor = .true.,
|
||||
pseudo_dir = '$PSEUDO_DIR/',
|
||||
outdir='$TMP_DIR/'
|
||||
/
|
||||
&system
|
||||
ibrav = 1,
|
||||
celldm(1) = 20.0,
|
||||
nat = 5,
|
||||
ntyp = 2,
|
||||
ecutwfc = 40.0,
|
||||
nbnd = 8
|
||||
/
|
||||
&electrons
|
||||
diagonalization = 'cg'
|
||||
mixing_beta = 0.5,
|
||||
conv_thr = 1.0d-8
|
||||
/
|
||||
ATOMIC_SPECIES
|
||||
H 1.0 H.pbe-vbc.UPF
|
||||
Si 28.0 Si.pbe-rrkj.UPF
|
||||
ATOMIC_POSITIONS {angstrom}
|
||||
Si 0.000000000 0.000000000 0.000000000
|
||||
H 0.861290004 0.861290004 0.861290004
|
||||
H -0.861290004 -0.861290004 0.861290004
|
||||
H -0.861290004 0.861290004 -0.861290004
|
||||
H 0.861290004 -0.861290004 -0.861290004
|
||||
K_POINTS {gamma}
|
||||
EOF
|
||||
$ECHO " running the scf calculation for Silane...\c"
|
||||
$PW_COMMAND < silane_scf.in > silane_scf.out
|
||||
check_failure $?
|
||||
$ECHO " done"
|
||||
|
||||
#
|
||||
cat > silane_pw4gww.in << EOF
|
||||
&inputpw4gww
|
||||
prefix='SiH4'
|
||||
num_nbndv(1)=4
|
||||
num_nbnds=8
|
||||
l_truncated_coulomb=.true.
|
||||
truncation_radius=10.d0
|
||||
!numw_prod=50
|
||||
l_bse=.true.
|
||||
l_no_GW_just_screening=.true.
|
||||
l_no_GW_bare_coulomb=.false.
|
||||
no_GW_cg_maxit = 10
|
||||
no_GW_cg_threshold = 5.D-7
|
||||
pseudo_dir = '$PSEUDO_DIR/',
|
||||
outdir='$TMP_DIR/'
|
||||
/
|
||||
|
||||
EOF
|
||||
$ECHO " running the pw4gww calculation for silane...\c"
|
||||
$PW4GWW_COMMAND < silane_pw4gww.in > silane_pw4gww.out
|
||||
check_failure $?
|
||||
$ECHO " done"
|
||||
|
||||
cat > $TMP_DIR/SiH4-bands.dat << EOF
|
||||
5
|
||||
1
|
||||
1 -16.61249 -20.44779 -20.21290 -25.31691
|
||||
2 -9.11165 -13.67612 -13.59143 -14.42309
|
||||
3 -9.11165 -13.67021 -13.58364 -14.42309
|
||||
4 -9.11165 -13.67111 -13.58495 -14.42309
|
||||
5 -0.56519 0.21252 0.21196 0.90046
|
||||
EOF
|
||||
#
|
||||
cat > silane_bse.in << EOF
|
||||
&inputbse
|
||||
prefix='SiH4'
|
||||
outdir='$TMP_DIR/'
|
||||
num_nbndv(1)=4
|
||||
numw_prod=50
|
||||
n_eig=1
|
||||
l_truncated_coulomb=.true.
|
||||
truncation_radius=10.d0
|
||||
lambda=1.d0
|
||||
eps=1.d-4
|
||||
eps_eig=1.d-5
|
||||
lm_delta=2.d0
|
||||
l_scissor=.false.
|
||||
qpe_imin=1
|
||||
qpe_imax=5
|
||||
scissor=0.0d0
|
||||
dual_bse=1.d0
|
||||
l_read_www=.true.
|
||||
l_contraction=.false.
|
||||
/
|
||||
EOF
|
||||
$ECHO " running the bse calculation for Silane...\c"
|
||||
$BSE_COMMAND < silane_bse.in > silane_bse.out
|
||||
check_failure $?
|
||||
$ECHO " done"
|
||||
|
||||
# clean TMP_DIR
|
||||
$ECHO " cleaning $TMP_DIR...\c"
|
||||
rm -rf $TMP_DIR/SiH4*
|
||||
$ECHO " done"
|
||||
|
||||
$ECHO
|
||||
$ECHO "$EXAMPLE_DIR : done"
|
|
@ -1,5 +1,6 @@
|
|||
# Makefile for pw4gww (PW4GWW)
|
||||
# Author G. Stenuit and L. Martin-Samos
|
||||
# Modified Joshua Elliott November 2020 as JDE
|
||||
|
||||
include ../../make.inc
|
||||
|
||||
|
@ -44,7 +45,9 @@ mp_wave_parallel.o \
|
|||
wannier_bse.o\
|
||||
hpsi_pw4gww.o \
|
||||
cgsolve_all_gamma.o \
|
||||
realus.o
|
||||
realus.o \
|
||||
operator_1_vp.o \
|
||||
operator_debug.o
|
||||
|
||||
QEMODS = ../../Modules/libqemod.a ../../upflib/libupf.a \
|
||||
../../KS_Solvers/libks_solvers.a \
|
||||
|
@ -52,16 +55,17 @@ QEMODS = ../../Modules/libqemod.a ../../upflib/libupf.a \
|
|||
../../UtilXlib/libutil.a ../../dft-d3/libdftd3qe.a
|
||||
# dft-d3 required by xlf for obscure reasons
|
||||
PWOBJS = ../../PW/src/libpw.a
|
||||
PHOBJS = ../../PHonon/Gamma/libphcg.a
|
||||
|
||||
LIBMIN=
|
||||
|
||||
TLDEPS= phlibs
|
||||
TLDEPS= phlibs
|
||||
|
||||
all : tldeps pw4gww.x
|
||||
|
||||
pw4gww.x : pw4gww.o libpw4gww.a $(PW4GWWOBJS) $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBMIN)
|
||||
$(LD) $(LDFLAGS) -o $@ \
|
||||
pw4gww.o libpw4gww.a $(PWOBJS) $(QEMODS) $(LIBOBJS) $(LIBMIN) $(QELIBS)
|
||||
pw4gww.o libpw4gww.a $(PWOBJS) $(PHOBJS) $(QEMODS) $(LIBOBJS) $(LIBMIN) $(QELIBS)
|
||||
- ( cd ../../bin ; ln -fs ../GWW/pw4gww/$@ . )
|
||||
|
||||
tldeps :
|
||||
|
|
|
@ -117,7 +117,8 @@ fake_conduction.o : ../../UtilXlib/mp.o
|
|||
fake_conduction.o : ../../upflib/uspp.o
|
||||
fake_conduction.o : fft_custom.o
|
||||
fake_conduction.o : mp_wave_parallel.o
|
||||
fft_custom.o : ../../FFTXlib/fft_interfaces.o
|
||||
fft_custom.o : ../../FFTXlib/fft_parallel.o
|
||||
fft_custom.o : ../../FFTXlib/fft_scalar.o
|
||||
fft_custom.o : ../../FFTXlib/fft_support.o
|
||||
fft_custom.o : ../../FFTXlib/fft_types.o
|
||||
fft_custom.o : ../../FFTXlib/stick_base.o
|
||||
|
@ -216,6 +217,35 @@ openfil_pw4gww.o : ../../PW/src/atomic_wfc_mod.o
|
|||
openfil_pw4gww.o : ../../PW/src/ldaU.o
|
||||
openfil_pw4gww.o : ../../PW/src/pwcom.o
|
||||
openfil_pw4gww.o : ../../upflib/uspp.o
|
||||
operator_1_vp.o : ../../FFTXlib/fft_interfaces.o
|
||||
operator_1_vp.o : ../../Modules/becmod.o
|
||||
operator_1_vp.o : ../../Modules/cell_base.o
|
||||
operator_1_vp.o : ../../Modules/constants.o
|
||||
operator_1_vp.o : ../../Modules/fft_base.o
|
||||
operator_1_vp.o : ../../Modules/io_global.o
|
||||
operator_1_vp.o : ../../Modules/kind.o
|
||||
operator_1_vp.o : ../../Modules/mp_world.o
|
||||
operator_1_vp.o : ../../Modules/recvec.o
|
||||
operator_1_vp.o : ../../Modules/wannier_gw.o
|
||||
operator_1_vp.o : ../../Modules/wavefunctions.o
|
||||
operator_1_vp.o : ../../PW/src/g_psi_mod.o
|
||||
operator_1_vp.o : ../../PW/src/pwcom.o
|
||||
operator_1_vp.o : ../../UtilXlib/mp.o
|
||||
operator_1_vp.o : ../../upflib/uspp.o
|
||||
operator_debug.o : ../../FFTXlib/fft_interfaces.o
|
||||
operator_debug.o : ../../Modules/becmod.o
|
||||
operator_debug.o : ../../Modules/cell_base.o
|
||||
operator_debug.o : ../../Modules/constants.o
|
||||
operator_debug.o : ../../Modules/fft_base.o
|
||||
operator_debug.o : ../../Modules/io_global.o
|
||||
operator_debug.o : ../../Modules/kind.o
|
||||
operator_debug.o : ../../Modules/mp_world.o
|
||||
operator_debug.o : ../../Modules/recvec.o
|
||||
operator_debug.o : ../../Modules/wannier_gw.o
|
||||
operator_debug.o : ../../PW/src/g_psi_mod.o
|
||||
operator_debug.o : ../../PW/src/pwcom.o
|
||||
operator_debug.o : ../../UtilXlib/mp.o
|
||||
operator_debug.o : ../../upflib/uspp.o
|
||||
optimal.o : ../../Modules/io_global.o
|
||||
optimal.o : ../../Modules/kind.o
|
||||
optimal.o : ../../Modules/mp_world.o
|
||||
|
|
|
@ -565,7 +565,7 @@ SUBROUTINE o_1psi_gamma( numv, v_states, psi, opsi,l_freq,hdiag, ptype,fcw_numbe
|
|||
call stop_clock('opsi_pc')
|
||||
enddo
|
||||
|
||||
write(stdout,*) 'DEBUG1'
|
||||
! write(stdout,*) 'DEBUG1'
|
||||
FLUSH(stdout)
|
||||
!call (H-e)^-1 solver
|
||||
if(.true.) then
|
||||
|
@ -573,13 +573,13 @@ SUBROUTINE o_1psi_gamma( numv, v_states, psi, opsi,l_freq,hdiag, ptype,fcw_numbe
|
|||
else
|
||||
psi_g2(1:npw,1:numv)=tmp_psi(1:npw,1:numv)
|
||||
endif
|
||||
write(stdout,*) 'DEBUG1.5'
|
||||
! write(stdout,*) 'DEBUG1.5'
|
||||
FLUSH(stdout)
|
||||
call cgsolve_all_gamma (hpsi_pw4gww,cg_psi_pw4gww,et(1,1),psi_g,psi_g2, &
|
||||
h_diag,npw,npw,ethr,1,kter,lconv_root,anorm,numv,1)
|
||||
|
||||
tmp_psi(1:npw,1:numv)=psi_g2(1:npw,1:numv)
|
||||
write(stdout,*) 'DEBUG2',kter,lconv_root,anorm
|
||||
! write(stdout,*) 'DEBUG2',kter,lconv_root,anorm
|
||||
FLUSH(stdout)
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,114 @@
|
|||
!
|
||||
! Copyright (C) 2001-2020 Quantum ESPRESSO group
|
||||
! 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 .
|
||||
!
|
||||
!
|
||||
! Written by Joshua Elliott JDE
|
||||
!
|
||||
! This subroutine computes the operator (1-vP) for overlapping
|
||||
! wannier functions
|
||||
!
|
||||
|
||||
|
||||
|
||||
SUBROUTINE operator_1_vp(npw, e, x, u)
|
||||
|
||||
USE wannier_gw
|
||||
USE gvect
|
||||
USE becmod, ONLY : becp,allocate_bec_type,deallocate_bec_type
|
||||
USE cell_base, ONLY : at, alat, tpiba, omega, tpiba2
|
||||
USE constants, ONLY : e2, pi, tpi, fpi
|
||||
USE fft_base, ONLY : dfftp, dffts
|
||||
USE fft_interfaces, ONLY : fwfft, invfft
|
||||
USE g_psi_mod, ONLY : h_diag, s_diag
|
||||
USE gvecs, ONLY : doublegrid
|
||||
USE io_global, ONLY : stdout, ionode, ionode_id
|
||||
USE kinds, ONLY : DP
|
||||
USE klist, ONLY : xk,igk_k
|
||||
USE mp, ONLY : mp_sum, mp_barrier, mp_bcast
|
||||
USE mp_world, ONLY : world_comm, mpime, nproc
|
||||
USE uspp, ONLY : vkb, nkb, okvan
|
||||
USE wvfct, ONLY : g2kin, npwx, nbnd, et
|
||||
USE wavefunctions, ONLY : evc
|
||||
|
||||
IMPLICIT NONE
|
||||
|
||||
! Dummy Variables
|
||||
INTEGER :: npw
|
||||
REAL(KIND=DP) :: e ! eigenvalue (needed for call not used)
|
||||
COMPLEX(KIND=DP) :: x(npw), u(npw,1) ! Upon call should contain v_c|x>
|
||||
|
||||
! variables for computing bare Coulomb interaction
|
||||
REAL(KIND=DP), ALLOCATABLE :: fac(:)
|
||||
REAL(KIND=DP) :: qq
|
||||
INTEGER :: ig
|
||||
|
||||
! variables for computing P|x> = |op_x>
|
||||
COMPLEX(KIND=DP), ALLOCATABLE :: op_x(:)
|
||||
COMPLEX(KIND=DP), ALLOCATABLE :: ovp_x(:)
|
||||
COMPLEX(KIND=DP), ALLOCATABLE :: fcw_state(:,:) ! Only needed for call, not used
|
||||
REAL(KIND=DP), ALLOCATABLE :: hdiag(:) ! Only needed for call, not used (pmat_type=2)
|
||||
REAL(KIND=DP), ALLOCATABLE :: fcw_mat(:,:) ! Only needed for call, not used
|
||||
REAL(KIND=DP), ALLOCATABLE :: v_states(:,:) ! The valence states
|
||||
INTEGER :: fcw_number ! Only needed for call, not used
|
||||
|
||||
INTEGER :: loop, lp_v
|
||||
|
||||
ALLOCATE(fac(1:npw))
|
||||
ALLOCATE(op_x(1:npw))
|
||||
ALLOCATE(ovp_x(1:npw))
|
||||
|
||||
!v_c
|
||||
IF (l_truncated_coulomb) THEN
|
||||
DO ig=1,npw
|
||||
qq = g(1,ig)**2.d0 + g(2,ig)**2.d0 + g(3,ig)**2.d0
|
||||
IF (qq > 1.d-8) THEN
|
||||
fac(ig)=(e2*fpi/(tpiba2*qq))*(1.d0-DCOS(DSQRT(qq)*truncation_radius*tpiba))
|
||||
ELSE
|
||||
fac(ig)=e2*fpi*(truncation_radius**2.d0/2.d0)
|
||||
END IF
|
||||
END DO
|
||||
fac(:)=fac(:)/omega
|
||||
ELSE
|
||||
fac(:)=0.d0
|
||||
fac(1:npw)=vg_q(1:npw)
|
||||
END IF
|
||||
! Allocation and assignment of "fake conduction" states
|
||||
! NOTE: not used during call since pmat_type=0
|
||||
fcw_number=1
|
||||
ALLOCATE(fcw_state(npw,fcw_number))
|
||||
ALLOCATE(fcw_mat(fcw_number,fcw_number))
|
||||
ALLOCATE(hdiag(1))
|
||||
|
||||
! Have to reobtain the valence_states to avoid having them in call
|
||||
ALLOCATE(v_states(dfftp%nnr,num_nbndv(1)))
|
||||
CALL evc_to_real(num_nbndv(1), v_states) ! gives v_states in real space
|
||||
|
||||
! P operator onto state
|
||||
CALL o_1psi_gamma(num_nbndv(1), v_states, x, op_x, .FALSE., hdiag, &
|
||||
0, fcw_number, fcw_state, fcw_mat, pmat_ethr)
|
||||
|
||||
! -1*(v_c) operator onto state
|
||||
ovp_x(1:npw) = op_x(1:npw) * fac(1:npw)
|
||||
ovp_x(1:npw) = -4.d0 * ovp_x(1:npw)
|
||||
|
||||
! calcualte (1-vP)|x> = |x> + |ovp_x>
|
||||
DO loop = 1,npw
|
||||
u(loop,1) = x(loop) + ovp_x(loop)
|
||||
END DO
|
||||
|
||||
DEALLOCATE(v_states)
|
||||
DEALLOCATE(hdiag)
|
||||
DEALLOCATE(fcw_state)
|
||||
DEALLOCATE(fcw_mat)
|
||||
DEALLOCATE(fac)
|
||||
DEALLOCATE(op_x)
|
||||
DEALLOCATE(ovp_x)
|
||||
|
||||
RETURN
|
||||
|
||||
END SUBROUTINE operator_1_vp
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
SUBROUTINE operator_debug(npw, e, x, u)
|
||||
|
||||
USE wannier_gw
|
||||
USE gvect
|
||||
USE becmod, ONLY : becp,allocate_bec_type,deallocate_bec_type
|
||||
USE cell_base, ONLY : at, alat, tpiba, omega, tpiba2
|
||||
USE constants, ONLY : e2, pi, tpi, fpi
|
||||
USE fft_base, ONLY : dfftp, dffts
|
||||
USE fft_interfaces, ONLY : fwfft, invfft
|
||||
USE g_psi_mod, ONLY : h_diag, s_diag
|
||||
USE gvecs, ONLY : doublegrid
|
||||
USE io_global, ONLY : stdout, ionode, ionode_id
|
||||
USE kinds, ONLY : DP
|
||||
USE klist, ONLY : xk,igk_k
|
||||
USE mp, ONLY : mp_sum, mp_barrier, mp_bcast
|
||||
USE mp_world, ONLY : world_comm, mpime, nproc
|
||||
USE uspp, ONLY : vkb, nkb, okvan
|
||||
USE wvfct, ONLY : g2kin, npwx, nbnd, et
|
||||
|
||||
IMPLICIT NONE
|
||||
|
||||
! Dummy Variables
|
||||
REAL(KIND=DP) :: e ! eigenvalue (needed for call not used)
|
||||
INTEGER :: npw
|
||||
COMPLEX(KIND=DP) :: x(npw), u(npw,1) ! Upon call should contain v_c|x>
|
||||
|
||||
WRITE(*,*) 'Inside operator'
|
||||
u(1:npw,1) = x(1:npw)
|
||||
WRITE(*,*) 'Leaving operator'
|
||||
RETURN
|
||||
|
||||
END SUBROUTINE operator_debug
|
|
@ -5,7 +5,7 @@
|
|||
! in the root directory of the present distribution,
|
||||
! or http://www.gnu.org/copyleft/gpl.txt .
|
||||
!
|
||||
!
|
||||
! Modified by Joshua Elliott November 2020 as JDE
|
||||
|
||||
SUBROUTINE produce_wannier_gamma
|
||||
|
||||
|
@ -241,7 +241,14 @@
|
|||
endif
|
||||
deallocate(evc)
|
||||
endif
|
||||
write(stdout,*) 'USE RESTART: 1'
|
||||
! JDE start
|
||||
if (l_no_GW_just_screening) THEN
|
||||
! If no GW skip to bse
|
||||
restart_gww=7
|
||||
else
|
||||
write(stdout,*) 'USE RESTART: 1'
|
||||
end if
|
||||
! JDE end
|
||||
FLUSH(stdout)
|
||||
|
||||
if(restart_gww <= 1) then
|
||||
|
@ -615,10 +622,22 @@
|
|||
allocate(tmp_rot(nbnd,nbnd))
|
||||
allocate( evc( npwx, nbnd ) )
|
||||
|
||||
! JDE
|
||||
IF (l_no_GW_just_screening) THEN
|
||||
ALLOCATE (ewvc(npwx, nbnd, nspin))
|
||||
END IF
|
||||
! JDE
|
||||
|
||||
do is=1,nspin
|
||||
allocate(o_mat(num_nbndv(is),num_nbndv(is)))
|
||||
call davcio(evc,2*nwordwfc,iunwfc,is,-1)
|
||||
|
||||
|
||||
! JDE
|
||||
IF (l_no_GW_just_screening) THEN
|
||||
ewvc(1:npwx,1:nbnd,is) = evc(1:npwx,1:nbnd)
|
||||
END IF
|
||||
! JDE
|
||||
|
||||
tmp_rot(:,:)=dble(u_trans(:,:,is))
|
||||
call rotate_wannier_gamma( tmp_rot,1,0)
|
||||
|
||||
|
@ -630,7 +649,11 @@
|
|||
|
||||
deallocate(tmp_rot)
|
||||
deallocate(evc)
|
||||
|
||||
! JDE
|
||||
IF (l_no_GW_just_screening) THEN
|
||||
DEALLOCATE(ewvc)
|
||||
END IF
|
||||
! JDE
|
||||
endif
|
||||
!NOT_TO_BE_INCLUDED_END
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
! Original version by Andrea Ferretti
|
||||
! Modified mainly by Layla Martin-Samos
|
||||
! Modified by Joe Stenuit
|
||||
! Modified by Joshua David Elliott November 2020 as JDE
|
||||
!
|
||||
!=----------------------------------------------------------------------------=!
|
||||
MODULE io_base_export
|
||||
|
@ -149,7 +150,11 @@ program gwl_punch
|
|||
scissor,&
|
||||
l_full,&
|
||||
n_full,&
|
||||
l_simple
|
||||
l_simple,&
|
||||
l_no_GW_just_screening,& ! JDE
|
||||
l_no_GW_bare_Coulomb,& ! JDE
|
||||
no_GW_cg_maxit,& ! JDE
|
||||
no_GW_cg_threshold ! JDE
|
||||
|
||||
|
||||
USE exchange_custom, ONLY : exchange_fast_dual
|
||||
|
@ -186,7 +191,8 @@ program gwl_punch
|
|||
s_last_state,l_selfconsistent,l_whole_s,l_ts_eigen,l_frac_occ,num_nbndv_min,&
|
||||
l_cond_pol_base,l_semicore,n_semicore,l_semicore_read, l_verbose, l_contour,&
|
||||
l_real,exchange_fast_dual,l_bse,s_bse,dual_bse,l_big_system,extra_pw_cutoff,&
|
||||
l_list,l_scissor,scissor,l_full,n_full,l_simple
|
||||
l_list,l_scissor,scissor,l_full,n_full,l_simple,&
|
||||
l_no_GW_just_screening, l_no_GW_bare_Coulomb, no_GW_cg_maxit, no_GW_cg_threshold ! JDE
|
||||
|
||||
|
||||
!
|
||||
|
@ -284,6 +290,10 @@ program gwl_punch
|
|||
l_full=.false.
|
||||
n_full=0
|
||||
l_simple=.false.
|
||||
l_no_GW_just_screening=.false. ! JDE
|
||||
l_no_GW_bare_coulomb=.false. ! JDE
|
||||
no_GW_cg_maxit=30 ! JDE
|
||||
no_GW_cg_threshold=1.d-10 ! JDE
|
||||
!
|
||||
! Reading input file
|
||||
!
|
||||
|
@ -404,6 +414,10 @@ program gwl_punch
|
|||
CALL mp_bcast(l_full, ionode_id, world_comm)
|
||||
CALL mp_bcast(n_full, ionode_id, world_comm)
|
||||
CALL mp_bcast(l_simple, ionode_id, world_comm)
|
||||
CALL mp_bcast(l_no_GW_just_screening, ionode_id, world_comm) ! JDE
|
||||
CALL mp_bcast(l_no_GW_bare_coulomb, ionode_id, world_comm) ! JDE
|
||||
CALL mp_bcast(no_GW_cg_maxit, ionode_id, world_comm) ! JDE
|
||||
CALL mp_bcast(no_GW_cg_threshold, ionode_id, world_comm) ! JDE
|
||||
|
||||
call read_file
|
||||
|
||||
|
|
|
@ -6,7 +6,8 @@
|
|||
! or http://www.gnu.org/copyleft/gpl.txt .
|
||||
!
|
||||
!
|
||||
|
||||
! Modified by Joshua Elliott November 2020 as JDE
|
||||
!
|
||||
! This subroutine computes the overlap between Wannier orbitals Ovv' and
|
||||
! computes the (v*w_v*w_v')(r) term for each vv' such that Ovv'>s_bse, and
|
||||
! writes to disk Ovv' and (v*w_v*w_v')(r) ,and z_beta_v_v'=v*phi_beta*wv*wv'
|
||||
|
@ -17,13 +18,14 @@ subroutine wannier_bse(ispin,w_wfcs,o_mat)
|
|||
USE io_files, ONLY : prefix, tmp_dir, diropn
|
||||
USE kinds, ONLY : DP
|
||||
USE wannier_gw, ONLY : num_nbndv,dual_bse,s_bse,l_truncated_coulomb,truncation_radius,vg_q,&
|
||||
max_ngm,numw_prod
|
||||
max_ngm,numw_prod, pmat_type, l_no_GW_just_screening, l_no_GW_bare_coulomb,& ! JDE
|
||||
no_GW_cg_maxit, no_GW_cg_threshold, ewvc ! JDE
|
||||
USE fft_custom_gwl
|
||||
USE wvfct, ONLY : npwx, npw, nbnd
|
||||
USE wvfct, ONLY : npwx, npw, nbnd, nbndx ! JDE
|
||||
USE gvecw, ONLY : ecutwfc
|
||||
USE mp_pools, ONLY : intra_pool_comm
|
||||
USE mp_world, ONLY : mpime, nproc, world_comm
|
||||
USE mp, ONLY : mp_sum
|
||||
USE mp, ONLY : mp_sum, mp_bcast ! JDE
|
||||
USE gvect
|
||||
USE wavefunctions, ONLY : psic
|
||||
USE constants, ONLY : e2, fpi
|
||||
|
@ -58,13 +60,28 @@ subroutine wannier_bse(ispin,w_wfcs,o_mat)
|
|||
INTEGER :: iunu, iungprod,iunz,iuni
|
||||
REAL(kind=DP) :: qq
|
||||
LOGICAL :: exst
|
||||
logical :: debug
|
||||
logical :: debug, debug_operator ! JDE
|
||||
integer :: iundebug
|
||||
|
||||
! JDE
|
||||
INTEGER :: wannier_product_unit, loop_wannier_prod, &
|
||||
wannier_write_product_unit, wwwdebug, iunwww, &
|
||||
start_loop_wannier
|
||||
EXTERNAL :: operator_1_vp, operator_debug
|
||||
COMPLEX(kind=DP), allocatable :: ww_read_prodg2(:), ww_solved_prodg2(:)
|
||||
REAL(KIND=dp), ALLOCATABLE :: overlap(:,:), diagonal(:), e(:)
|
||||
COMPLEX(KIND=dp), ALLOCATABLE :: evc_jsh(:,:)
|
||||
COMPLEX(KIND=dp), DIMENSION(:,:), ALLOCATABLE :: x, b, u, h, Ah, evc, pu
|
||||
INTEGER :: cg_iter
|
||||
LOGICAL :: cgsolve_conv
|
||||
! JDE
|
||||
|
||||
|
||||
fc%ecutt=ecutwfc
|
||||
fc%dual_t=dual_bse
|
||||
|
||||
debug=.true.
|
||||
debug_operator=.false.
|
||||
|
||||
! FFT the wannier function to r-space (dual grid)
|
||||
|
||||
|
@ -206,19 +223,135 @@ subroutine wannier_bse(ispin,w_wfcs,o_mat)
|
|||
FLUSH(stdout)
|
||||
|
||||
close(iungprod)
|
||||
! read polarization basis
|
||||
! JDE start
|
||||
! Obtain polarization basis
|
||||
! Iterative method
|
||||
IF (l_no_GW_just_screening) THEN
|
||||
allocate(ww_read_prodg2(npw))
|
||||
allocate(ww_solved_prodg2(npw))
|
||||
|
||||
allocate(p_basis(npw,numw_prod))
|
||||
CALL diropn( iungprod, 'wiwjwfc_red', npw*2, exst )
|
||||
if (debug) then
|
||||
wwwdebug = find_free_unit()
|
||||
open(wwwdebug,file='Www_pw4gww.dat')
|
||||
endif
|
||||
|
||||
do ii=1,numw_prod
|
||||
call davcio(p_basis(:,ii),npw*2,iungprod,ii,-1)
|
||||
p_basis(1:npw,ii)=p_basis(1:npw,ii)*fac(1:npw)
|
||||
enddo
|
||||
! Open files for wannier products
|
||||
wannier_product_unit = find_free_unit()
|
||||
IF (ispin .EQ. 1) CALL diropn( wannier_product_unit, 'vww_bse1.',npw*2, exst)
|
||||
IF (ispin .EQ. 2) CALL diropn( wannier_product_unit, 'vww_bse2.',npw*2, exst)
|
||||
wannier_write_product_unit = find_free_unit()
|
||||
IF (ispin .EQ. 1) CALL diropn( wannier_write_product_unit, 'Www_bse1.',npw*2, exst)
|
||||
IF (ispin .EQ. 2) CALL diropn( wannier_write_product_unit, 'Www_bse2.',npw*2, exst)
|
||||
|
||||
close(iungprod)
|
||||
! Allocate variables needed for cgsolve routine
|
||||
IF (.NOT. l_no_GW_bare_coulomb) THEN
|
||||
ALLOCATE(overlap(nbndx,1))
|
||||
ALLOCATE(diagonal(npw))
|
||||
ALLOCATE(evc_jsh(npw,1))
|
||||
ALLOCATE(e(1))
|
||||
ALLOCATE(b(npw,1))
|
||||
ALLOCATE(u(npw,1))
|
||||
ALLOCATE(h(npw,1))
|
||||
ALLOCATE(Ah(npw,1))
|
||||
ALLOCATE(pu(npw,1))
|
||||
|
||||
! maximum number of non-zero overlap
|
||||
evc_jsh= 0.d0
|
||||
diagonal= 0.d0
|
||||
overlap= 0.d0
|
||||
! BE VERY CAREFUL PMAT_TYPE IS A GLOBAL VARIABLE
|
||||
WRITE(stdout,*) 'Note: we have changed pmat_type on the fly!'
|
||||
pmat_type = 0
|
||||
! BE VERY CAREFUL PMAT_TYPE IS A GLOBAL VARIABLE
|
||||
END IF
|
||||
|
||||
INQUIRE(FILE=TRIM(tmp_dir)//TRIM(prefix)//'.restart_Www_stat', EXIST=exst)
|
||||
IF (exst) THEN
|
||||
IF (ionode) THEN
|
||||
iunwww = find_free_unit()
|
||||
OPEN(UNIT=iunwww,FILE=TRIM(tmp_dir)//TRIM(prefix)//'.restart_Www_stat')
|
||||
READ(iunwww,*) start_loop_wannier
|
||||
CLOSE(iunwww)
|
||||
END IF
|
||||
start_loop_wannier = start_loop_wannier + 1
|
||||
CALL mp_bcast(start_loop_wannier, ionode_id, world_comm)
|
||||
ELSE
|
||||
start_loop_wannier = 1
|
||||
END IF
|
||||
|
||||
DO loop_wannier_prod = start_loop_wannier, ii
|
||||
CALL davcio(ww_read_prodg2,npw*2,wannier_product_unit,loop_wannier_prod,-1)
|
||||
ww_solved_prodg2(:) = 0.d0
|
||||
! NOTE: read Vww :: do not need to apply Coulomb operator
|
||||
!ww_read_prodg2(1:npw) = ww_read_prodg2(1:npw) * fac(1:npw)
|
||||
|
||||
IF (.NOT. l_no_GW_bare_coulomb) THEN
|
||||
IF (debug_operator) THEN
|
||||
WRITE(*,*) 'before cg'
|
||||
CALL cgsolve(operator_debug, npw, evc_jsh, npw, 1, overlap, &
|
||||
1, .TRUE., .FALSE., diagonal, &
|
||||
.FALSE.,e,ww_read_prodg2,u,h,Ah,pu,no_GW_cg_maxit,no_GW_cg_threshold,cg_iter,ww_solved_prodg2 )
|
||||
ELSE
|
||||
|
||||
WRITE(stdout,*) 'CGSOLVE ww PAIR:', loop_wannier_prod
|
||||
cgsolve_conv = .false.
|
||||
DO WHILE (.NOT. cgsolve_conv)
|
||||
overlap=0.d0
|
||||
diagonal=0.d0
|
||||
evc_jsh=0.d0
|
||||
CALL cgsolve(operator_1_vp, npw, evc_jsh, npw, 1, overlap, 1, .TRUE., .FALSE., diagonal, .FALSE.,&
|
||||
e, ww_read_prodg2, u, h, Ah, pu, no_GW_cg_maxit, no_GW_cg_threshold, cg_iter, ww_solved_prodg2 )
|
||||
IF (cg_iter .LT. no_GW_cg_maxit) THEN
|
||||
cgsolve_conv = .true.
|
||||
END IF
|
||||
END DO
|
||||
END IF
|
||||
ELSE
|
||||
ww_solved_prodg2(1:npw) = ww_read_prodg2(1:npw)
|
||||
END IF
|
||||
|
||||
CALL davcio(ww_solved_prodg2,npw*2,wannier_write_product_unit,loop_wannier_prod,1)
|
||||
|
||||
if(debug) then
|
||||
if(ionode) then
|
||||
write(wwwdebug,*) npw
|
||||
do i=1,npw
|
||||
write(wwwdebug,*) ww_solved_prodg2(i)
|
||||
enddo
|
||||
endif
|
||||
endif
|
||||
|
||||
IF (ionode) THEN ! Store the last wannier product index
|
||||
iunwww = find_free_unit()
|
||||
OPEN(UNIT=iunwww,FILE=TRIM(tmp_dir)//TRIM(prefix)//'.restart_Www_stat')
|
||||
WRITE(iunwww,*) loop_wannier_prod
|
||||
CLOSE(iunwww)
|
||||
END IF
|
||||
END DO
|
||||
|
||||
IF (.NOT. l_no_GW_bare_coulomb) THEN
|
||||
DEALLOCATE(overlap, diagonal, e, b, u, h, Ah, pu)
|
||||
END IF
|
||||
|
||||
close(wannier_product_unit)
|
||||
close(wannier_write_product_unit)
|
||||
if (debug) close(wwwdebug)
|
||||
write(stdout,*) 'files closed'
|
||||
|
||||
! Or read from file
|
||||
ELSE
|
||||
allocate(p_basis(npw,numw_prod))
|
||||
CALL diropn( iungprod, 'wiwjwfc_red', npw*2, exst )
|
||||
|
||||
do ii=1,numw_prod
|
||||
call davcio(p_basis(:,ii),npw*2,iungprod,ii,-1)
|
||||
p_basis(1:npw,ii)=p_basis(1:npw,ii)*fac(1:npw)
|
||||
enddo
|
||||
|
||||
close(iungprod)
|
||||
END IF
|
||||
! JDE end
|
||||
|
||||
! maximum number of non-zero overlap
|
||||
np_max=0
|
||||
do iv=1, num_nbndv(ispin)
|
||||
np=0
|
||||
|
@ -228,48 +361,49 @@ subroutine wannier_bse(ispin,w_wfcs,o_mat)
|
|||
if (np>np_max) np_max=np
|
||||
enddo
|
||||
|
||||
|
||||
if(ionode) then
|
||||
iunz = find_free_unit()
|
||||
if (ispin==1) open(unit=iunz,file=trim(tmp_dir)//trim(prefix)//'.zbse1',status='unknown',form='unformatted')
|
||||
if (ispin==2) open(unit=iunz,file=trim(tmp_dir)//trim(prefix)//'.zbse2',status='unknown',form='unformatted')
|
||||
write(iunz) num_nbndv(ispin)
|
||||
write(iunz) s_bse
|
||||
write (iunz) np_max
|
||||
write (iunz) numw_prod
|
||||
endif
|
||||
|
||||
allocate(z(numw_prod))
|
||||
z(1:numw_prod)=0.d0
|
||||
|
||||
|
||||
do iv=1, num_nbndv(ispin)
|
||||
do jv=1, num_nbndv(ispin)
|
||||
if (o_mat(jv,iv)>=s_bse) then
|
||||
ww_prod(1:fc%nrxxt)= w_wfcs_r(1:fc%nrxxt,iv)* w_wfcs_r(1:fc%nrxxt,jv)
|
||||
psic(1:fc%nrxxt)=dcmplx(ww_prod(1:fc%nrxxt),0.d0)
|
||||
CALL cft3t(fc, psic, fc%nr1t, fc%nr2t, fc%nr3t, fc%nrx1t, fc%nrx2t, fc%nrx3t, -2 )
|
||||
ww_prodg(1:fc%npwt) = psic(fc%nlt(1:fc%npwt))
|
||||
|
||||
call mergewf(ww_prodg,evc_g,fc%npwt,fc%ig_l2gt,mpime,nproc,ionode_id,intra_pool_comm)
|
||||
call splitwf(ww_prodg2,evc_g,npw,ig_l2g,mpime,nproc,ionode_id,intra_pool_comm)
|
||||
|
||||
call dgemm('T','N',numw_prod,1,2*npw,2.d0,p_basis,&
|
||||
&2*npw,ww_prodg2,2*npw,0.d0,z,numw_prod)
|
||||
|
||||
if(gstart==2) then
|
||||
do ii=1,numw_prod
|
||||
z(ii)=z(ii)-dble(p_basis(1,ii)*conjg(ww_prodg2(1)))
|
||||
enddo
|
||||
endif
|
||||
call mp_sum(z,world_comm)
|
||||
if(ionode) then
|
||||
write(iunz) z
|
||||
endif
|
||||
endif
|
||||
IF (.NOT. l_no_GW_just_screening) THEN ! JDE
|
||||
if(ionode) then
|
||||
iunz = find_free_unit()
|
||||
if (ispin==1) open(unit=iunz,file=trim(tmp_dir)//trim(prefix)//'.zbse1',status='unknown',form='unformatted')
|
||||
if (ispin==2) open(unit=iunz,file=trim(tmp_dir)//trim(prefix)//'.zbse2',status='unknown',form='unformatted')
|
||||
write(iunz) num_nbndv(ispin)
|
||||
write(iunz) s_bse
|
||||
write (iunz) np_max
|
||||
write (iunz) numw_prod
|
||||
endif
|
||||
|
||||
allocate(z(numw_prod))
|
||||
z(1:numw_prod)=0.d0
|
||||
|
||||
|
||||
do iv=1, num_nbndv(ispin)
|
||||
do jv=1, num_nbndv(ispin)
|
||||
if (o_mat(jv,iv)>=s_bse) then
|
||||
ww_prod(1:fc%nrxxt)= w_wfcs_r(1:fc%nrxxt,iv)* w_wfcs_r(1:fc%nrxxt,jv)
|
||||
psic(1:fc%nrxxt)=dcmplx(ww_prod(1:fc%nrxxt),0.d0)
|
||||
CALL cft3t(fc, psic, fc%nr1t, fc%nr2t, fc%nr3t, fc%nrx1t, fc%nrx2t, fc%nrx3t, -2 )
|
||||
ww_prodg(1:fc%npwt) = psic(fc%nlt(1:fc%npwt))
|
||||
|
||||
call mergewf(ww_prodg,evc_g,fc%npwt,fc%ig_l2gt,mpime,nproc,ionode_id,intra_pool_comm)
|
||||
call splitwf(ww_prodg2,evc_g,npw,ig_l2g,mpime,nproc,ionode_id,intra_pool_comm)
|
||||
|
||||
call dgemm('T','N',numw_prod,1,2*npw,2.d0,p_basis,&
|
||||
&2*npw,ww_prodg2,2*npw,0.d0,z,numw_prod)
|
||||
|
||||
if(gstart==2) then
|
||||
do ii=1,numw_prod
|
||||
z(ii)=z(ii)-dble(p_basis(1,ii)*conjg(ww_prodg2(1)))
|
||||
enddo
|
||||
endif
|
||||
call mp_sum(z,world_comm)
|
||||
if(ionode) then
|
||||
write(iunz) z
|
||||
endif
|
||||
endif
|
||||
enddo
|
||||
enddo
|
||||
enddo
|
||||
close(iunz)
|
||||
close(iunz)
|
||||
END IF ! JDE
|
||||
|
||||
allocate(iww(np_max))
|
||||
|
||||
|
@ -297,14 +431,16 @@ subroutine wannier_bse(ispin,w_wfcs,o_mat)
|
|||
enddo
|
||||
if(ionode) write(iuni) iww
|
||||
enddo
|
||||
close(iuni)
|
||||
if (ionode) close(iuni) ! JDE fixes a seg fault when fcheck=bounds
|
||||
|
||||
if(debug) close(iundebug)
|
||||
if(debug) close(iundebug)
|
||||
|
||||
|
||||
deallocate(iww)
|
||||
deallocate(z)
|
||||
deallocate(p_basis)
|
||||
IF (.NOT. l_no_GW_just_screening) THEN ! JDE
|
||||
deallocate(z)
|
||||
deallocate(p_basis)
|
||||
END IF ! JDE
|
||||
deallocate(ww_prod)
|
||||
deallocate(ww_prodg)
|
||||
deallocate(ww_prodg2)
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
! in the root directory of the present distribution,
|
||||
! or http://www.gnu.org/copyleft/gpl.txt .
|
||||
!
|
||||
!
|
||||
! Modified by Joshua Elliott November 2020 as JDE
|
||||
!
|
||||
!--------------------------------------------------------------------------
|
||||
!
|
||||
MODULE wannier_gw
|
||||
|
@ -205,7 +208,13 @@ MODULE wannier_gw
|
|||
INTEGER :: len_head_block_freq!length of blocks on frequency
|
||||
INTEGER :: len_head_block_wfc!length of blocks on unperturbed occupied wfcs
|
||||
|
||||
|
||||
! JDE
|
||||
LOGICAL :: l_no_GW_just_screening ! When true use strategy to compute screening via iterative minimization
|
||||
LOGICAL :: l_no_GW_bare_coulomb ! When true only do not compute correlation part of W for just_screening
|
||||
INTEGER :: no_GW_cg_maxit ! Maximum number of conj. grad. steps in calculation of (1-vP) operator
|
||||
REAL(KIND=DP) :: no_GW_cg_threshold ! Convergence threshold for conj. grad. calculation of (1-vP) operator
|
||||
COMPLEX(KIND=DP), ALLOCATABLE :: ewvc(:,:,:)
|
||||
! JDE
|
||||
|
||||
INTERFACE free_memory
|
||||
|
||||
|
|
|
@ -49,10 +49,14 @@ SUBROUTINE cgsolve (operator,npw,evc,npwx,nbnd,overlap, &
|
|||
ELSE
|
||||
CALL calbec ( npw, evc, u, lagrange )
|
||||
ENDIF
|
||||
IF (.not. orthonormal) &
|
||||
! JDE putting back the old version because this looks wrong.
|
||||
IF (.not. orthonormal) THEN
|
||||
CALL DPOTRS('U',nbnd,nbnd,overlap,nbndx,lagrange,nbnd,info)
|
||||
IF (info/=0) CALL errore('cgsolve','error in potrs',info)
|
||||
!
|
||||
IF (info/=0) CALL errore('cgsolve','error in potrs',info)
|
||||
END IF
|
||||
! JDE putting back the old version because this looks wrong.
|
||||
!
|
||||
|
||||
CALL dgemm ('N', 'N', 2*npw, nbnd, nbnd, -1.d0, evc, &
|
||||
2*npwx, lagrange, nbndx, 1.d0, u, 2*npwx)
|
||||
!
|
||||
|
@ -60,7 +64,7 @@ SUBROUTINE cgsolve (operator,npw,evc,npwx,nbnd,overlap, &
|
|||
IF (precondition) THEN
|
||||
CALL zvscal(npw,npwx,nbnd,diagonal,u,h)
|
||||
ELSE
|
||||
CALL zcopy(npwx,nbnd,u,1,h,1)
|
||||
CALL zcopy(npwx,u,1,h,1)
|
||||
ENDIF
|
||||
! uu = <u|h>
|
||||
CALL pw_dot('Y',npw,nbnd,u,npwx,h,npwx,uu)
|
||||
|
@ -69,7 +73,7 @@ SUBROUTINE cgsolve (operator,npw,evc,npwx,nbnd,overlap, &
|
|||
u_u = u_u + uu(ibnd)
|
||||
ENDDO
|
||||
!
|
||||
! print '(" iter # ",i3," u_u = ",e10.4)', 0, u_u
|
||||
print '(" iter # ",i3," u_u = ",e10.4)', 0, u_u ! JDE
|
||||
!
|
||||
! main iteration loop
|
||||
!
|
||||
|
@ -106,9 +110,12 @@ SUBROUTINE cgsolve (operator,npw,evc,npwx,nbnd,overlap, &
|
|||
ELSE
|
||||
CALL calbec ( npw, evc, u, lagrange )
|
||||
ENDIF
|
||||
IF (.not. orthonormal) &
|
||||
! JDE putting back the old version because this looks wrong.
|
||||
IF (.not. orthonormal) THEN
|
||||
CALL DPOTRS('U',nbnd,nbnd,overlap,nbndx,lagrange,nbnd,info)
|
||||
IF (info/=0) CALL errore('cgsolve','error in potrs',info)
|
||||
IF (info/=0) CALL errore('cgsolve','error in potrs',info)
|
||||
! JDE putting back the old version because this looks wrong.
|
||||
END IF
|
||||
CALL dgemm ('N', 'N', 2*npw, nbnd, nbnd,-1.d0, evc, &
|
||||
2*npwx, lagrange, nbndx, 1.d0, u, 2*npwx)
|
||||
IF (precondition) THEN
|
||||
|
@ -123,7 +130,7 @@ SUBROUTINE cgsolve (operator,npw,evc,npwx,nbnd,overlap, &
|
|||
DO ibnd=1,nbnd
|
||||
u_u = u_u + uu(ibnd)
|
||||
ENDDO
|
||||
! print '(" iter # ",i3," u_u = ",e10.4)', iter, u_u
|
||||
print '(" iter # ",i3," u_u = ",e10.4)', iter, u_u ! JDE
|
||||
!
|
||||
IF( u_u <= eps) GOTO 10
|
||||
IF (iter==niter) THEN
|
||||
|
|
Loading…
Reference in New Issue