Cleaned the makov-payne subroutine from most of the Environ related calculations, reverted makedeps.sh to the previous version.

git-svn-id: http://qeforge.qe-forge.org/svn/q-e/trunk/espresso@8937 c92efa57-630b-4861-b058-cf58834340f0
This commit is contained in:
oliviero 2012-04-30 18:15:46 +00:00
parent 5ccc513a4e
commit c9a8161195
2 changed files with 6 additions and 63 deletions

View File

@ -23,11 +23,7 @@ SUBROUTINE makov_payne( etot )
USE scf, ONLY : rho USE scf, ONLY : rho
USE lsda_mod, ONLY : nspin USE lsda_mod, ONLY : nspin
#ifdef __ENVIRON #ifdef __ENVIRON
USE environ_base, ONLY : do_environ, env_static_permittivity, & USE environ_base, ONLY : do_environ
pol_dipole, pol_quadrupole, rhopol, &
rhopol_of_V, ejellium, eperiodic
USE cell_base, ONLY : omega
USE solvent, ONLY : calc_esolvent_of_V
#endif #endif
! !
IMPLICIT NONE IMPLICIT NONE
@ -56,13 +52,7 @@ SUBROUTINE makov_payne( etot )
CALL compute_dipole( dfftp%nnr, nspin, rho%of_r, x0, e_dipole, e_quadrupole ) CALL compute_dipole( dfftp%nnr, nspin, rho%of_r, x0, e_dipole, e_quadrupole )
! !
#ifdef __ENVIRON #ifdef __ENVIRON
IF ( do_environ .AND. env_static_permittivity .GT. 1.D0 ) THEN IF ( do_environ ) CALL environ_makov_payne( dfftp%nnr, nspin, rho%of_r, x0 )
CALL calc_esolvent_of_V( dfftp%nnr, nspin, rho%of_r, ejellium, eperiodic, &
& rhopol_of_V )
rhopol = rhopol - rhopol_of_V
CALL compute_dipole( dfftp%nnr, 1, rhopol, x0, pol_dipole, pol_quadrupole )
rhopol = rhopol + rhopol_of_V
ENDIF
#endif #endif
! !
CALL write_dipole( etot, x0, e_dipole, e_quadrupole, qq ) CALL write_dipole( etot, x0, e_dipole, e_quadrupole, qq )
@ -84,8 +74,7 @@ SUBROUTINE write_dipole( etot, x0, dipole_el, quadrupole_el, qq )
USE cell_base, ONLY : at, bg, omega, alat, ibrav USE cell_base, ONLY : at, bg, omega, alat, ibrav
USE io_global, ONLY : ionode USE io_global, ONLY : ionode
#ifdef __ENVIRON #ifdef __ENVIRON
USE environ_base, ONLY : do_environ, pol_dipole, pol_quadrupole, & USE environ_base, ONLY : do_environ
env_static_permittivity, ejellium, eperiodic
#endif #endif
! !
IMPLICIT NONE IMPLICIT NONE
@ -98,9 +87,6 @@ SUBROUTINE write_dipole( etot, x0, dipole_el, quadrupole_el, qq )
REAL(DP) :: dipole_ion(3), quadrupole_ion, dipole(3), quadrupole REAL(DP) :: dipole_ion(3), quadrupole_ion, dipole(3), quadrupole
REAL(DP) :: zvia, zvtot REAL(DP) :: zvia, zvtot
REAL(DP) :: corr1, corr2, aa, bb REAL(DP) :: corr1, corr2, aa, bb
#ifdef __ENVIRON
REAL(DP) :: corr1_pol, corr2_pol
#endif
INTEGER :: ia, ip INTEGER :: ia, ip
! !
! ... Note that the definition of the Madelung constant used here ! ... Note that the definition of the Madelung constant used here
@ -156,14 +142,6 @@ SUBROUTINE write_dipole( etot, x0, dipole_el, quadrupole_el, qq )
( dipole_ion(ip),ip = 1, 3), ( dipole_ion(ip)*au_debye,ip = 1, 3 ) ( dipole_ion(ip),ip = 1, 3), ( dipole_ion(ip)*au_debye,ip = 1, 3 )
WRITE( stdout, '( 5X,"Total",3F9.4," au (Ha),", 3F9.4," Debye")' ) & WRITE( stdout, '( 5X,"Total",3F9.4," au (Ha),", 3F9.4," Debye")' ) &
( dipole(ip), ip = 1, 3), ( dipole(ip)*au_debye, ip = 1, 3 ) ( dipole(ip), ip = 1, 3), ( dipole(ip)*au_debye, ip = 1, 3 )
#ifdef __ENVIRON
IF ( do_environ ) THEN
WRITE( stdout, '( 5X,"Diele",3F9.4," au (Ha),", 3F9.4," Debye")' ) &
(-pol_dipole(ip),ip = 1, 3), (-pol_dipole(ip)*au_debye,ip = 1, 3 )
WRITE( stdout, '( 5X,"Full ",3F9.4," au (Ha),", 3F9.4," Debye")' ) &
(dipole(ip)-pol_dipole(ip),ip = 1, 3), (dipole(ip)-pol_dipole(ip)*au_debye,ip = 1, 3 )
END IF
#endif
! !
! ... print the electronic, ionic and total quadrupole moments ! ... print the electronic, ionic and total quadrupole moments
! !
@ -173,14 +151,6 @@ SUBROUTINE write_dipole( etot, x0, dipole_el, quadrupole_el, qq )
quadrupole_ion quadrupole_ion
WRITE( stdout, '( 5X," Total quadrupole moment",F20.8," a.u. (Ha)")' ) & WRITE( stdout, '( 5X," Total quadrupole moment",F20.8," a.u. (Ha)")' ) &
quadrupole quadrupole
#ifdef __ENVIRON
IF ( do_environ ) THEN
WRITE( stdout, '( 5X,"Dielectr. quadrupole moment",F20.8," a.u. (Ha)")' ) &
-pol_quadrupole
WRITE( stdout, '( 5X," Full quadrupole moment",F20.8," a.u. (Ha)")' ) &
quadrupole-pol_quadrupole
END IF
#endif
! !
IF ( ibrav < 1 .OR. ibrav > 3 ) THEN IF ( ibrav < 1 .OR. ibrav > 3 ) THEN
call errore(' write_dipole', & call errore(' write_dipole', &
@ -198,17 +168,6 @@ SUBROUTINE write_dipole( etot, x0, dipole_el, quadrupole_el, qq )
! !
corr2 = ( 2.D0 / 3.D0 * pi )*( qq*aa - bb ) / alat**3 * e2 corr2 = ( 2.D0 / 3.D0 * pi )*( qq*aa - bb ) / alat**3 * e2
! !
#ifdef __ENVIRON
IF ( do_environ ) THEN
corr1_pol = -corr1 + corr1 / env_static_permittivity
aa = ( - pol_quadrupole - quadrupole ) / 2.D0 + &
& quadrupole / 2.D0 / env_static_permittivity
bb = - dipole(1)*pol_dipole(1) - dipole(2)*pol_dipole(2) - &
& dipole(3)*pol_dipole(3)
corr2_pol = ( 2.D0 / 3.D0 * pi )*( qq*aa - bb ) / alat**3 * e2
ENDIF
#endif
!
! ... print the Makov-Payne correction ! ... print the Makov-Payne correction
! !
WRITE( stdout, '(/,5X,"********* MAKOV-PAYNE CORRECTION *********")' ) WRITE( stdout, '(/,5X,"********* MAKOV-PAYNE CORRECTION *********")' )
@ -227,23 +186,8 @@ SUBROUTINE write_dipole( etot, x0, dipole_el, quadrupole_el, qq )
etot - corr1 - corr2 etot - corr1 - corr2
! !
#ifdef __ENVIRON #ifdef __ENVIRON
IF ( do_environ ) THEN IF ( do_environ ) CALL environ_write_dipole(etot, x0, dipole, quadrupole, &
WRITE( stdout,'( 5X," ",F14.8," Ry = ",F6.3, & qq, corr1, corr2)
& " eV (1st order diel, 1/a0)")' ) -corr1_pol, -corr1_pol*rytoev
WRITE( stdout,'( 5X," ",F14.8," Ry = ",F6.3, &
& " eV (2nd order diel, 1/a0^3)")' ) -corr2_pol, -corr2_pol*rytoev
WRITE( stdout,'( 5X," ",F14.8," Ry = ",F6.3, &
& " eV (jellium, 1/a0^3)")' ) -ejellium, -ejellium*rytoev
WRITE( stdout,'( 5X," ",F14.8," Ry = ",F6.3, &
& " eV (periodic solutes, 1/a0^3)")' ) -eperiodic, -eperiodic*rytoev
WRITE( stdout,'( 5X," ",F14.8," Ry = ",F6.3, &
& " eV (total diel)")' ) -corr1_pol-corr2_pol-ejellium-eperiodic, &
& (-corr1_pol-corr2_pol - ejellium - eperiodic)*rytoev
!
WRITE( stdout,'(/"! Diel+Makov-Payne energy = ",F16.8," Ry")' ) &
etot - corr1 - corr2 - corr1_pol - corr2_pol - ejellium - eperiodic
!
END IF
#endif #endif
! !
RETURN RETURN

View File

@ -90,7 +90,6 @@ for dir in $dirs; do
then then
mv make.depend make.depend.tmp mv make.depend make.depend.tmp
sed '/@environ_base@/d' make.depend.tmp > make.depend sed '/@environ_base@/d' make.depend.tmp > make.depend
sed '/@solvent@/d' make.depend > make.depend.tmp
mv make.depend.tmp make.depend mv make.depend.tmp make.depend
fi fi