mirror of https://gitlab.com/QEF/q-e.git
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:
parent
5ccc513a4e
commit
c9a8161195
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue