From a289e4337ee253fb6a7e1e6a363d98638c5d80ca Mon Sep 17 00:00:00 2001 From: timrov Date: Sat, 27 Feb 2016 15:41:03 +0000 Subject: [PATCH] Update Makefile, make.depend and remove old copies of setup_dgc.f90 and compute_vsgga.f90 from PHonon/PH git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@12166 c92efa57-630b-4861-b058-cf58834340f0 --- FFTXlib/make.depend | 1 + LR_Modules/Makefile | 2 + LR_Modules/make.depend | 20 +++++ PHonon/PH/Makefile | 2 - PHonon/PH/compute_vsgga.f90 | 173 ----------------------------------- PHonon/PH/make.depend | 20 ----- PHonon/PH/setup_dgc.f90 | 175 ------------------------------------ TDDFPT/Examples/make.sys | 2 +- 8 files changed, 24 insertions(+), 371 deletions(-) delete mode 100644 PHonon/PH/compute_vsgga.f90 delete mode 100644 PHonon/PH/setup_dgc.f90 diff --git a/FFTXlib/make.depend b/FFTXlib/make.depend index d151f5b33..ffe299794 100644 --- a/FFTXlib/make.depend +++ b/FFTXlib/make.depend @@ -17,6 +17,7 @@ fft_scalar.o : fft_param.f90 fft_scalar.o : fft_param.f90 fft_scalar.o : fft_param.f90 fft_scalar.o : fft_param.f90 +fft_scalar.o : fft_param.f90 fft_scalar.o : ../include/fft_defs.h fft_smallbox.o : ../include/fft_defs.h fft_stick.o : ../include/c_defs.h diff --git a/LR_Modules/Makefile b/LR_Modules/Makefile index 13d8b14c8..17c25bc37 100644 --- a/LR_Modules/Makefile +++ b/LR_Modules/Makefile @@ -29,6 +29,8 @@ set_dbecsum_nc.o \ set_int3_nc.o \ smallgq.o \ lr_sm1_psi.o \ +setup_dgc.o \ +compute_vsgga.o \ lrcom.o TLDEPS=libfft mods diff --git a/LR_Modules/make.depend b/LR_Modules/make.depend index 9edd0aaea..b40849fdf 100644 --- a/LR_Modules/make.depend +++ b/LR_Modules/make.depend @@ -63,6 +63,14 @@ commutator_Hx_psi.o : ../Modules/recvec.o commutator_Hx_psi.o : ../Modules/uspp.o commutator_Hx_psi.o : ../Modules/wavefunctions.o commutator_Hx_psi.o : ../PW/src/pwcom.o +compute_vsgga.o : ../Modules/cell_base.o +compute_vsgga.o : ../Modules/constants.o +compute_vsgga.o : ../Modules/fft_base.o +compute_vsgga.o : ../Modules/funct.o +compute_vsgga.o : ../Modules/kind.o +compute_vsgga.o : ../Modules/noncol.o +compute_vsgga.o : ../Modules/recvec.o +compute_vsgga.o : ../PW/src/pwcom.o dgradcorr.o : ../FFTXlib/fft_interfaces.o dgradcorr.o : ../Modules/constants.o dgradcorr.o : ../Modules/control_flags.o @@ -173,6 +181,18 @@ set_int3_nc.o : ../Modules/noncol.o set_int3_nc.o : ../Modules/uspp.o set_int3_nc.o : ../PW/src/pwcom.o set_int3_nc.o : lrcom.o +setup_dgc.o : ../FFTXlib/fft_interfaces.o +setup_dgc.o : ../Modules/constants.o +setup_dgc.o : ../Modules/fft_base.o +setup_dgc.o : ../Modules/funct.o +setup_dgc.o : ../Modules/kind.o +setup_dgc.o : ../Modules/noncol.o +setup_dgc.o : ../Modules/recvec.o +setup_dgc.o : ../Modules/uspp.o +setup_dgc.o : ../Modules/wavefunctions.o +setup_dgc.o : ../PW/src/pwcom.o +setup_dgc.o : ../PW/src/scf_mod.o +setup_dgc.o : lrcom.o setup_nscf.o : ../Modules/cell_base.o setup_nscf.o : ../Modules/constants.o setup_nscf.o : ../Modules/control_flags.o diff --git a/PHonon/PH/Makefile b/PHonon/PH/Makefile index 53d129953..050e33c15 100644 --- a/PHonon/PH/Makefile +++ b/PHonon/PH/Makefile @@ -43,7 +43,6 @@ compute_drhous.o \ compute_drhous_nc.o \ compute_dvloc.o \ compute_nldyn.o \ -compute_vsgga.o \ compute_weight.o \ deallocate_part.o \ deallocate_phq.o \ @@ -130,7 +129,6 @@ set_irr_sym.o \ set_small_group_of_q.o \ setlocq.o \ setqmod.o \ -setup_dgc.o \ sgam_ph.o \ solve_e.o \ solve_e_fpol.o \ diff --git a/PHonon/PH/compute_vsgga.f90 b/PHonon/PH/compute_vsgga.f90 deleted file mode 100644 index 3b869a56e..000000000 --- a/PHonon/PH/compute_vsgga.f90 +++ /dev/null @@ -1,173 +0,0 @@ -! -! Copyright (C) 2001-2016 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 . -! -! -!---------------------------------------------------------------------------- -SUBROUTINE compute_vsgga( rhoout, grho, vsgga ) - !---------------------------------------------------------------------------- - ! - USE constants, ONLY : e2 - USE kinds, ONLY : DP - USE gvect, ONLY : nl, ngm, g - USE cell_base, ONLY : alat - USE noncollin_module, ONLY : noncolin, nspin_gga - USE funct, ONLY : gcxc, gcx_spin, gcc_spin, & - gcc_spin_more, dft_is_gradient, get_igcc - USE spin_orb, ONLY : domag - USE fft_base, ONLY : dfftp - ! - IMPLICIT NONE - ! - REAL(DP), INTENT(IN) :: rhoout(dfftp%nnr,nspin_gga) - REAL(DP), INTENT(IN) :: grho(3,dfftp%nnr,nspin_gga) - REAL(DP), INTENT(OUT) :: vsgga(dfftp%nnr) - ! - INTEGER :: k, ipol, is - ! - REAL(DP), ALLOCATABLE :: h(:,:,:), dh(:) - REAL(DP), ALLOCATABLE :: vaux(:,:) - ! - LOGICAL :: igcc_is_lyp - REAL(DP) :: grho2(2), sx, sc, v2c, & - v1xup, v1xdw, v2xup, v2xdw, v1cup, v1cdw , & - arho, zeta, rh, grh2 - REAL(DP) :: v2cup, v2cdw, v2cud, rup, rdw, & - grhoup, grhodw, grhoud, grup, grdw - ! - REAL(DP), PARAMETER :: vanishing_charge = 1.D-6, & - vanishing_mag = 1.D-12 - REAL(DP), PARAMETER :: epsr = 1.D-6, epsg = 1.D-10 - ! - ! - IF ( .NOT. dft_is_gradient() ) RETURN - - IF ( .NOT. (noncolin.and.domag) ) & - call errore('compute_vsgga','routine called in the wrong case',1) - - igcc_is_lyp = (get_igcc() == 3) - ! - ALLOCATE( h( 3, dfftp%nnr, nspin_gga) ) - ALLOCATE( vaux( dfftp%nnr, nspin_gga ) ) - - DO k = 1, dfftp%nnr - ! - rh = rhoout(k,1) + rhoout(k,2) - ! - arho=abs(rh) - ! - IF ( arho > vanishing_charge ) THEN - ! - grho2(:) = grho(1,k,:)**2 + grho(2,k,:)**2 + grho(3,k,:)**2 - ! - IF ( grho2(1) > epsg .OR. grho2(2) > epsg ) THEN - CALL gcx_spin( rhoout(k,1), rhoout(k,2), grho2(1), & - grho2(2), sx, v1xup, v1xdw, v2xup, v2xdw ) - ! - IF ( igcc_is_lyp ) THEN - ! - rup = rhoout(k,1) - rdw = rhoout(k,2) - ! - grhoup = grho(1,k,1)**2 + grho(2,k,1)**2 + grho(3,k,1)**2 - grhodw = grho(1,k,2)**2 + grho(2,k,2)**2 + grho(3,k,2)**2 - ! - grhoud = grho(1,k,1) * grho(1,k,2) + & - grho(2,k,1) * grho(2,k,2) + & - grho(3,k,1) * grho(3,k,2) - ! - CALL gcc_spin_more( rup, rdw, grhoup, grhodw, grhoud, & - sc, v1cup, v1cdw, v2cup, v2cdw, v2cud ) - ! - ELSE - ! - zeta = ( rhoout(k,1) - rhoout(k,2) ) / rh - ! - grh2 = ( grho(1,k,1) + grho(1,k,2) )**2 + & - ( grho(2,k,1) + grho(2,k,2) )**2 + & - ( grho(3,k,1) + grho(3,k,2) )**2 - ! - CALL gcc_spin( rh, zeta, grh2, sc, v1cup, v1cdw, v2c ) - ! - v2cup = v2c - v2cdw = v2c - v2cud = v2c - ! - END IF - ELSE - ! - sc = 0.D0 - sx = 0.D0 - v1xup = 0.D0 - v1xdw = 0.D0 - v2xup = 0.D0 - v2xdw = 0.D0 - v1cup = 0.D0 - v1cdw = 0.D0 - v2c = 0.D0 - v2cup = 0.D0 - v2cdw = 0.D0 - v2cud = 0.D0 - ENDIF - ELSE - ! - sc = 0.D0 - sx = 0.D0 - v1xup = 0.D0 - v1xdw = 0.D0 - v2xup = 0.D0 - v2xdw = 0.D0 - v1cup = 0.D0 - v1cdw = 0.D0 - v2c = 0.D0 - v2cup = 0.D0 - v2cdw = 0.D0 - v2cud = 0.D0 - ! - ENDIF - ! - ! ... first term of the gradient correction : D(rho*Exc)/D(rho) - ! - vaux(k,1) = e2 * ( v1xup + v1cup ) - vaux(k,2) = e2 * ( v1xdw + v1cdw ) - ! - ! ... h contains D(rho*Exc)/D(|grad rho|) * (grad rho) / |grad rho| - ! - DO ipol = 1, 3 - ! - grup = grho(ipol,k,1) - grdw = grho(ipol,k,2) - h(ipol,k,1) = e2 * ( ( v2xup + v2cup ) * grup + v2cud * grdw ) - h(ipol,k,2) = e2 * ( ( v2xdw + v2cdw ) * grdw + v2cud * grup ) - ! - END DO - ! - END DO - ! - ALLOCATE( dh( dfftp%nnr ) ) - ! - ! ... second term of the gradient correction : - ! ... \sum_alpha (D / D r_alpha) ( D(rho*Exc)/D(grad_alpha rho) ) - ! - DO is = 1, nspin_gga - ! - CALL grad_dot( dfftp%nnr, h(1,1,is), ngm, g, nl, alat, dh ) - ! - vaux(:,is) = vaux(:,is) - dh(:) - ! - END DO - - vsgga(:)=(vaux(:,1)-vaux(:,2)) - - ! - DEALLOCATE( dh ) - DEALLOCATE( h ) - DEALLOCATE( vaux ) - ! - RETURN - ! -END SUBROUTINE compute_vsgga -! diff --git a/PHonon/PH/make.depend b/PHonon/PH/make.depend index 37cbe465d..5b555b1e5 100644 --- a/PHonon/PH/make.depend +++ b/PHonon/PH/make.depend @@ -292,14 +292,6 @@ compute_nldyn.o : ../../Modules/noncol.o compute_nldyn.o : ../../Modules/uspp.o compute_nldyn.o : ../../PW/src/pwcom.o compute_nldyn.o : phcom.o -compute_vsgga.o : ../../Modules/cell_base.o -compute_vsgga.o : ../../Modules/constants.o -compute_vsgga.o : ../../Modules/fft_base.o -compute_vsgga.o : ../../Modules/funct.o -compute_vsgga.o : ../../Modules/kind.o -compute_vsgga.o : ../../Modules/noncol.o -compute_vsgga.o : ../../Modules/recvec.o -compute_vsgga.o : ../../PW/src/pwcom.o compute_weight.o : ../../LR_Modules/lrcom.o compute_weight.o : ../../Modules/kind.o compute_weight.o : ../../Modules/paw_variables.o @@ -1301,18 +1293,6 @@ set_small_group_of_q.o : ../../PW/src/symm_base.o setlocq.o : ../../Modules/constants.o setlocq.o : ../../Modules/kind.o setqmod.o : ../../Modules/kind.o -setup_dgc.o : ../../FFTXlib/fft_interfaces.o -setup_dgc.o : ../../LR_Modules/lrcom.o -setup_dgc.o : ../../Modules/constants.o -setup_dgc.o : ../../Modules/fft_base.o -setup_dgc.o : ../../Modules/funct.o -setup_dgc.o : ../../Modules/kind.o -setup_dgc.o : ../../Modules/noncol.o -setup_dgc.o : ../../Modules/recvec.o -setup_dgc.o : ../../Modules/uspp.o -setup_dgc.o : ../../Modules/wavefunctions.o -setup_dgc.o : ../../PW/src/pwcom.o -setup_dgc.o : ../../PW/src/scf_mod.o sgam_ph.o : ../../Modules/kind.o solve_e.o : ../../FFTXlib/fft_parallel.o solve_e.o : ../../LR_Modules/lrcom.o diff --git a/PHonon/PH/setup_dgc.f90 b/PHonon/PH/setup_dgc.f90 deleted file mode 100644 index 050b47223..000000000 --- a/PHonon/PH/setup_dgc.f90 +++ /dev/null @@ -1,175 +0,0 @@ -! -! Copyright (C) 2001-2016 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 . -! -!----------------------------------------------------------------------- -subroutine setup_dgc - !----------------------------------------------------------------------- - ! - ! Allocate and setup all variable needed in the gradient correction case - ! - ! GGA+LSDA is allowed. ADC (September 1999). - ! GGA+LSDA+NLCC is allowed. ADC (November 1999). - ! GGA+noncollinear+NLCC is allowed. ADC (June 2007). - ! - USE constants, ONLY : e2 - USE fft_base, ONLY : dfftp - USE fft_interfaces, ONLY : fwfft - USE gvect, ONLY : ngm, g, nl - USE spin_orb, ONLY : domag - USE scf, ONLY : rho, rho_core, rhog_core - USE noncollin_module, ONLY : noncolin, ux, nspin_gga, nspin_mag - USE wavefunctions_module, ONLY : psic - USE kinds, ONLY : DP - USE funct, ONLY : dft_is_gradient, gcxc, gcx_spin, & - gcc_spin, dgcxc, dgcxc_spin - USE uspp, ONLY : nlcc_any - USE gc_lr, ONLY : grho, gmag, dvxc_rr, dvxc_sr, & - dvxc_ss, dvxc_s, vsgga, segni - - implicit none - integer :: k, is, ipol, jpol, ir - real(DP) :: grho2 (2), rh, zeta, grh2, fac, sx, sc, & - v1x, v2x, v1c, v2c, vrrx, vsrx, vssx, vrrc, vsrc, vssc, v1xup, & - v1xdw, v2xup, v2xdw, v1cup, v1cdw, vrrxup, vrrxdw, vrsxup, vrsxdw, & - vssxup, vssxdw, vrrcup, vrrcdw, vrscup, vrscdw, vrzcup, vrzcdw, & - amag, seg, seg0 - COMPLEX(DP), ALLOCATABLE :: rhogout(:,:) - real(DP), allocatable :: rhoout(:,:) - real (DP), parameter :: epsr = 1.0d-6, epsg = 1.0d-10 - - IF ( .NOT. dft_is_gradient() ) RETURN - - IF (noncolin.AND.domag) THEN - allocate (segni (dfftp%nnr)) - allocate (vsgga (dfftp%nnr)) - allocate (gmag (3, dfftp%nnr, nspin_mag)) - gmag=0.0_dp - ENDIF - - IF(.NOT.ALLOCATED(dvxc_rr)) ALLOCATE (dvxc_rr(dfftp%nnr, nspin_gga , nspin_gga)) - IF(.NOT.ALLOCATED(dvxc_sr)) ALLOCATE (dvxc_sr(dfftp%nnr, nspin_gga , nspin_gga)) - IF(.NOT.ALLOCATED(dvxc_ss)) ALLOCATE (dvxc_ss(dfftp%nnr, nspin_gga , nspin_gga)) - IF(.NOT.ALLOCATED(dvxc_s)) ALLOCATE (dvxc_s (dfftp%nnr, nspin_gga , nspin_gga)) - IF(.NOT.ALLOCATED(grho)) ALLOCATE (grho ( 3 , dfftp%nnr, nspin_gga)) - IF(.NOT.ALLOCATED(rhoout)) ALLOCATE (rhoout ( dfftp%nnr, nspin_gga)) - - dvxc_rr(:,:,:) = 0.d0 - dvxc_sr(:,:,:) = 0.d0 - dvxc_ss(:,:,:) = 0.d0 - dvxc_s (:,:,:) = 0.d0 - grho (:,:,:) = 0.d0 - ! - ! add rho_core - ! - fac = 1.d0 / DBLE (nspin_gga) - IF (noncolin.and.domag) THEN - allocate(rhogout(ngm,nspin_mag)) - call compute_rho(rho%of_r,rhoout,segni,dfftp%nnr) - DO is = 1, nspin_gga - ! - if (nlcc_any) rhoout(:,is) = fac * rho_core(:) + rhoout(:,is) - - psic(:) = rhoout(:,is) - ! - CALL fwfft ('Dense', psic, dfftp) - ! - rhogout(:,is) = psic(nl(:)) - ! - ! - CALL gradrho(dfftp%nnr, rhogout(1,is), ngm, g, nl, grho(1,1,is) ) - ! - END DO - DEALLOCATE(rhogout) - ELSE - do is = 1, nspin_gga - rhoout(:,is) = rho%of_r(:,is) - enddo - if (nlcc_any) then - do is = 1, nspin_gga - rhoout(:,is) = fac * rho_core(:) + rho%of_r(:,is) - rho%of_g(:,is) = fac * rhog_core(:) + rho%of_g(:,is) - enddo - endif - do is = 1, nspin_gga - call gradrho (dfftp%nnr, rho%of_g (1, is), ngm, g, nl, grho (1, 1, is) ) - enddo - END IF - - - do k = 1, dfftp%nnr - grho2 (1) = grho (1, k, 1) **2 + grho (2, k, 1) **2 + grho (3, k, 1) **2 - if (nspin_gga == 1) then - if (abs (rhoout (k, 1) ) > epsr .and. grho2 (1) > epsg) then - call gcxc (rhoout (k, 1), grho2(1), sx, sc, v1x, v2x, v1c, v2c) - call dgcxc (rhoout (k, 1), grho2(1), vrrx, vsrx, vssx, vrrc, & - vsrc, vssc) - dvxc_rr (k, 1, 1) = e2 * (vrrx + vrrc) - dvxc_sr (k, 1, 1) = e2 * (vsrx + vsrc) - dvxc_ss (k, 1, 1) = e2 * (vssx + vssc) - dvxc_s (k, 1, 1) = e2 * (v2x + v2c) - endif - else - grho2 (2) = grho(1, k, 2) **2 + grho(2, k, 2) **2 + grho(3, k, 2) **2 - rh = rhoout (k, 1) + rhoout (k, 2) - - grh2 = (grho (1, k, 1) + grho (1, k, 2) ) **2 + (grho (2, k, 1) & - + grho (2, k, 2) ) **2 + (grho (3, k, 1) + grho (3, k, 2) ) ** 2 - - call gcx_spin (rhoout (k, 1), rhoout (k, 2), grho2 (1), grho2 (2), & - sx, v1xup, v1xdw, v2xup, v2xdw) - - call dgcxc_spin (rhoout (k, 1), rhoout (k, 2), grho (1, k, 1), & - grho (1, k, 2), vrrxup, vrrxdw, vrsxup, vrsxdw, vssxup, vssxdw, & - vrrcup, vrrcdw, vrscup, vrscdw, vssc, vrzcup, vrzcdw) - if (rh > epsr) then - zeta = (rhoout (k, 1) - rhoout (k, 2) ) / rh - call gcc_spin (rh, zeta, grh2, sc, v1cup, v1cdw, v2c) - dvxc_rr (k, 1, 1) = e2 * (vrrxup + vrrcup + vrzcup * & - (1.d0 - zeta) / rh) - dvxc_rr (k, 1, 2) = e2 * (vrrcup - vrzcup * (1.d0 + zeta) / rh) - dvxc_rr (k, 2, 1) = e2 * (vrrcdw + vrzcdw * (1.d0 - zeta) / rh) - dvxc_rr (k, 2, 2) = e2 * (vrrxdw + vrrcdw - vrzcdw * & - (1.d0 + zeta) / rh) - dvxc_s (k, 1, 1) = e2 * (v2xup + v2c) - dvxc_s (k, 1, 2) = e2 * v2c - dvxc_s (k, 2, 1) = e2 * v2c - dvxc_s (k, 2, 2) = e2 * (v2xdw + v2c) - else - dvxc_rr (k, 1, 1) = 0.d0 - dvxc_rr (k, 1, 2) = 0.d0 - dvxc_rr (k, 2, 1) = 0.d0 - dvxc_rr (k, 2, 2) = 0.d0 - dvxc_s (k, 1, 1) = 0.d0 - dvxc_s (k, 1, 2) = 0.d0 - dvxc_s (k, 2, 1) = 0.d0 - dvxc_s (k, 2, 2) = 0.d0 - endif - dvxc_sr (k, 1, 1) = e2 * (vrsxup + vrscup) - dvxc_sr (k, 1, 2) = e2 * vrscup - dvxc_sr (k, 2, 1) = e2 * vrscdw - dvxc_sr (k, 2, 2) = e2 * (vrsxdw + vrscdw) - dvxc_ss (k, 1, 1) = e2 * (vssxup + vssc) - dvxc_ss (k, 1, 2) = e2 * vssc - dvxc_ss (k, 2, 1) = e2 * vssc - dvxc_ss (k, 2, 2) = e2 * (vssxdw + vssc) - endif - enddo - if (noncolin.and.domag) then - call compute_vsgga(rhoout, grho, vsgga) - else - if (nlcc_any) then - do is = 1, nspin_gga - rho%of_g(:,is) = rho%of_g(:,is) - fac * rhog_core(:) - enddo - endif - endif - - DEALLOCATE(rhoout) - - RETURN - -end subroutine setup_dgc diff --git a/TDDFPT/Examples/make.sys b/TDDFPT/Examples/make.sys index 413f336e0..8267aae94 100644 --- a/TDDFPT/Examples/make.sys +++ b/TDDFPT/Examples/make.sys @@ -7,7 +7,7 @@ #RUNNER = openmpi-1.4.3/bin/mpirun -np 8 #PWSCF = "../../../bin/pw.x" -ndiag 4 -RUNNER = +RUNNER = PWSCF = "../../../bin/pw.x" TDDFPT_LANCZOS = "../../../bin/turbo_lanczos.x" TDDFPT_DAVIDSON = "../../../bin/turbo_davidson.x"