diff --git a/input/methods b/input/methods index 3e511cd..d84e3d1 100644 --- a/input/methods +++ b/input/methods @@ -1,5 +1,5 @@ # RHF UHF MOM - T F F + T F T # MP2 MP3 MP2-F12 F F F # CCD CCSD CCSD(T) diff --git a/src/QuAcK/MOM.f90 b/src/QuAcK/MOM.f90 index fda126c..3b720e4 100644 --- a/src/QuAcK/MOM.f90 +++ b/src/QuAcK/MOM.f90 @@ -19,6 +19,7 @@ subroutine MOM(maxSCF,thresh,max_diis,nBas,nO,S,T,V,Hc,ERI,X,ENuc,ERHF,c,e,P) integer :: iBas,jBas integer :: nSCF,nBasSq,n_diis double precision :: ET,EV,EJ,EK,Conv,Gap + double precision :: rcond double precision,external :: trace_matrix double precision,allocatable :: error(:,:),error_diis(:,:),F_diis(:,:) double precision,allocatable :: J(:,:),K(:,:),cp(:,:),F(:,:),Fp(:,:) @@ -111,7 +112,11 @@ subroutine MOM(maxSCF,thresh,max_diis,nBas,nO,S,T,V,Hc,ERI,X,ENuc,ERHF,c,e,P) ! DIIS extrapolation n_diis = min(n_diis+1,max_diis) - call DIIS_extrapolation(nBasSq,nBasSq,n_diis,error_diis,F_diis,error,F) + call DIIS_extrapolation(rcond,nBasSq,nBasSq,n_diis,error_diis,F_diis,error,F) + +! Reset DIIS if required + + if(abs(rcond) < 1d-15) n_diis = 0 ! Diagonalize Fock matrix diff --git a/src/QuAcK/RHF.f90 b/src/QuAcK/RHF.f90 index 871f800..8ccbab4 100644 --- a/src/QuAcK/RHF.f90 +++ b/src/QuAcK/RHF.f90 @@ -34,8 +34,6 @@ subroutine RHF(maxSCF,thresh,max_diis,guess_type,nBas,nO,S,T,V,Hc,ERI,X,ENuc,ERH double precision,allocatable :: Fp(:,:) double precision,allocatable :: ON(:) - integer :: i - ! Output variables double precision,intent(out) :: ERHF