From f3e7222e49f5158615b97ca71ff7b3c096da8243 Mon Sep 17 00:00:00 2001 From: Pierre-Francois Loos Date: Sat, 4 Jul 2020 14:32:06 +0200 Subject: [PATCH] looking for a bug --- input/basis | 30 +++++-------------- input/dft | 2 +- input/weight | 30 +++++-------------- src/eDFT/GOK_RKS.f90 | 2 +- .../US51_lda_exchange_individual_energy.f90 | 1 - src/eDFT/eDFT.f90 | 6 ++-- src/eDFT/eDFT_UKS.f90 | 4 +-- src/eDFT/lda_exchange_individual_energy.f90 | 10 +++---- src/eDFT/unrestricted_individual_energy.f90 | 11 +++---- 9 files changed, 32 insertions(+), 64 deletions(-) diff --git a/input/basis b/input/basis index cd6cb22..6796e3b 100644 --- a/input/basis +++ b/input/basis @@ -1,25 +1,9 @@ -1 10 -S 4 - 1 528.5000000 0.0009400 - 2 79.3100000 0.0072140 - 3 18.0500000 0.0359750 - 4 5.0850000 0.1277820 +1 3 +S 3 + 1 38.3600000 0.0238090 + 2 5.7700000 0.1548910 + 3 1.2400000 0.4699870 S 1 - 1 1.6090000 1.0000000 -S 1 - 1 0.5363000 1.0000000 -S 1 - 1 0.1833000 1.0000000 + 1 0.2976000 1.0000000 P 1 - 1 5.9940000 1.0000000 -P 1 - 1 1.7450000 1.0000000 -P 1 - 1 0.5600000 1.0000000 -D 1 - 1 4.2990000 1.0000000 -D 1 - 1 1.2230000 1.0000000 -F 1 - 1 2.6800000 1.0000000 - + 1 1.2750000 1.0000000 diff --git a/input/dft b/input/dft index 42a2366..5507b18 100644 --- a/input/dft +++ b/input/dft @@ -5,7 +5,7 @@ # LDA = 1: RS51,RMFL20 # GGA = 2: RB88 # Hybrid = 4 -# Hartree-Fock = 666 +# Hartree-Fock = 666: RHF,UHF 1 US51 # correlation rung: # Hartree = 0 diff --git a/input/weight b/input/weight index cd6cb22..6796e3b 100644 --- a/input/weight +++ b/input/weight @@ -1,25 +1,9 @@ -1 10 -S 4 - 1 528.5000000 0.0009400 - 2 79.3100000 0.0072140 - 3 18.0500000 0.0359750 - 4 5.0850000 0.1277820 +1 3 +S 3 + 1 38.3600000 0.0238090 + 2 5.7700000 0.1548910 + 3 1.2400000 0.4699870 S 1 - 1 1.6090000 1.0000000 -S 1 - 1 0.5363000 1.0000000 -S 1 - 1 0.1833000 1.0000000 + 1 0.2976000 1.0000000 P 1 - 1 5.9940000 1.0000000 -P 1 - 1 1.7450000 1.0000000 -P 1 - 1 0.5600000 1.0000000 -D 1 - 1 4.2990000 1.0000000 -D 1 - 1 1.2230000 1.0000000 -F 1 - 1 2.6800000 1.0000000 - + 1 1.2750000 1.0000000 diff --git a/src/eDFT/GOK_RKS.f90 b/src/eDFT/GOK_RKS.f90 index 2533f99..c304dab 100644 --- a/src/eDFT/GOK_RKS.f90 +++ b/src/eDFT/GOK_RKS.f90 @@ -190,7 +190,7 @@ subroutine GOK_RKS(restart,x_rung,x_DFA,c_rung,c_DFA,LDA_centered,nEns,wEns,aCC_ !------------------------------------------------------------------------ call restricted_density_matrix(nBas,nEns,nO,c(:,:),P(:,:,:)) - + ! Weight-dependent density matrix Pw(:,:) = 0d0 diff --git a/src/eDFT/US51_lda_exchange_individual_energy.f90 b/src/eDFT/US51_lda_exchange_individual_energy.f90 index 74b1749..5afc204 100644 --- a/src/eDFT/US51_lda_exchange_individual_energy.f90 +++ b/src/eDFT/US51_lda_exchange_individual_energy.f90 @@ -26,7 +26,6 @@ subroutine US51_lda_exchange_individual_energy(nGrid,weight,rhow,rho,Ex) alpha = -(3d0/2d0)*(3d0/(4d0*pi))**(1d0/3d0) - Ex = 0d0 do iG=1,nGrid diff --git a/src/eDFT/eDFT.f90 b/src/eDFT/eDFT.f90 index 759236c..46af2ae 100644 --- a/src/eDFT/eDFT.f90 +++ b/src/eDFT/eDFT.f90 @@ -164,9 +164,9 @@ program eDFT if(method == 'GOK-RKS') then call cpu_time(start_KS) - call GOK_RKS(.false.,x_rung,x_DFA,c_rung,c_DFA,LDA_centered,nEns,wEns(:),aCC_w1,aCC_w2,nGrid,weight(:), & - maxSCF,thresh,max_diis,guess_type,nBas,AO(:,:),dAO(:,:,:),nO(1),nV(1), & - S(:,:),T(:,:),V(:,:),Hc(:,:),ERI(:,:,:,:),X(:,:),ENuc,Ew,c(:,:)) + call GOK_RKS(.false.,x_rung,x_DFA,c_rung,c_DFA,LDA_centered,nEns,wEns,aCC_w1,aCC_w2,nGrid,weight, & + maxSCF,thresh,max_diis,guess_type,nBas,AO,dAO,nO(1),nV(1), & + S,T,V,Hc,ERI,X,ENuc,Ew,c) call cpu_time(end_KS) t_KS = end_KS - start_KS diff --git a/src/eDFT/eDFT_UKS.f90 b/src/eDFT/eDFT_UKS.f90 index 4ef3b40..fdec76d 100644 --- a/src/eDFT/eDFT_UKS.f90 +++ b/src/eDFT/eDFT_UKS.f90 @@ -331,7 +331,7 @@ subroutine eDFT_UKS(x_rung,x_DFA,c_rung,c_DFA,nEns,wEns,aCC_w1,aCC_w2,nGrid,weig ! Check the grid accuracy by computing the number of electrons do ispin=1,nspin - nEl(ispin) = electron_number(nGrid,weight(:),rhow(:,ispin)) + nEl(ispin) = electron_number(nGrid,weight,rhow(:,ispin)) end do ! Dump results @@ -361,7 +361,7 @@ subroutine eDFT_UKS(x_rung,x_DFA,c_rung,c_DFA,nEns,wEns,aCC_w1,aCC_w2,nGrid,weig ! Compute final KS energy - call print_UKS(nBas,nO(:),eps(:,:),c(:,:,:),ENuc,ET(:),EV(:),EJ(:),Ex(:),Ec(:),Ew) + call print_UKS(nBas,nO,eps,c,ENuc,ET,EV,EJ,Ex,Ec,Ew) !------------------------------------------------------------------------ ! Compute individual energies from ensemble energy diff --git a/src/eDFT/lda_exchange_individual_energy.f90 b/src/eDFT/lda_exchange_individual_energy.f90 index 4f031ea..c1bf10b 100644 --- a/src/eDFT/lda_exchange_individual_energy.f90 +++ b/src/eDFT/lda_exchange_individual_energy.f90 @@ -28,23 +28,23 @@ subroutine lda_exchange_individual_energy(DFA,LDA_centered,nEns,wEns,aCC_w1,aCC_ case ('US51') - call US51_lda_exchange_individual_energy(nGrid,weight(:),rhow(:),rho(:),Ex) + call US51_lda_exchange_individual_energy(nGrid,weight,rhow,rho,Ex) case ('RS51') - call RS51_lda_exchange_individual_energy(nGrid,weight(:),rhow(:),rho(:),Ex) + call RS51_lda_exchange_individual_energy(nGrid,weight,rhow,rho,Ex) case ('RMFL20') - call RMFL20_lda_exchange_individual_energy(LDA_centered,nEns,wEns,nGrid,weight(:),rhow(:),rho(:),Ex) + call RMFL20_lda_exchange_individual_energy(LDA_centered,nEns,wEns,nGrid,weight,rhow,rho,Ex) case ('RCC') - call RCC_lda_exchange_individual_energy(nEns,wEns,aCC_w1,aCC_w2,nGrid,weight(:),rhow(:),rho(:),Ex) + call RCC_lda_exchange_individual_energy(nEns,wEns,aCC_w1,aCC_w2,nGrid,weight,rhow,rho,Ex) case ('UCC') - call UCC_lda_exchange_individual_energy(nEns,wEns,aCC_w1,aCC_w2,nGrid,weight(:),rhow(:),rho(:),Ex) + call UCC_lda_exchange_individual_energy(nEns,wEns,aCC_w1,aCC_w2,nGrid,weight,rhow,rho,Ex) case default diff --git a/src/eDFT/unrestricted_individual_energy.f90 b/src/eDFT/unrestricted_individual_energy.f90 index f6f0b8e..0872900 100644 --- a/src/eDFT/unrestricted_individual_energy.f90 +++ b/src/eDFT/unrestricted_individual_energy.f90 @@ -27,8 +27,8 @@ subroutine unrestricted_individual_energy(x_rung,x_DFA,c_rung,c_DFA,LDA_centered double precision,intent(in) :: ERI(nBas,nBas,nBas,nBas) double precision,intent(in) :: ENuc - double precision,intent(in) :: eps(nBas,nspin) !!!!! - double precision,intent(in) :: Pw(nBas,nBas,nspin) !!!!! + double precision,intent(in) :: eps(nBas,nspin) + double precision,intent(in) :: Pw(nBas,nBas,nspin) double precision,intent(in) :: rhow(nGrid,nspin) double precision,intent(in) :: drhow(ncart,nGrid,nspin) @@ -118,9 +118,10 @@ subroutine unrestricted_individual_energy(x_rung,x_DFA,c_rung,c_DFA,LDA_centered do iEns=1,nEns do ispin=1,nspin - call exchange_individual_energy(x_rung,x_DFA,LDA_centered,nEns,wEns,aCC_w1,aCC_w2,nGrid,weight,nBas,ERI, & - Pw(:,:,ispin),P(:,:,ispin,iEns),rhow(:,ispin),drhow(:,:,ispin), & + call exchange_individual_energy(x_rung,x_DFA,LDA_centered,nEns,wEns,aCC_w1,aCC_w2,nGrid,weight,nBas,ERI, & + Pw(:,:,ispin),P(:,:,ispin,iEns),rhow(:,ispin),drhow(:,:,ispin), & rho(:,ispin,iEns),drho(:,:,ispin,iEns),Ex(ispin,iEns)) + print*,'Ex = ',Ex(ispin,iEns) end do end do @@ -137,7 +138,7 @@ subroutine unrestricted_individual_energy(x_rung,x_DFA,c_rung,c_DFA,LDA_centered ! Compute auxiliary energies !------------------------------------------------------------------------ - call unrestricted_auxiliary_energy(nBas,nEns,nO(:),eps(:,:),Eaux(:,:)) + call unrestricted_auxiliary_energy(nBas,nEns,nO,eps,Eaux) !------------------------------------------------------------------------ ! Compute derivative discontinuities