From db0b55b93f91ce57d8e5a7af35ebc21dfd0834fb Mon Sep 17 00:00:00 2001 From: imagoulas Date: Fri, 10 May 2024 11:45:23 -0400 Subject: [PATCH] Fixed minor bug in Jacobi solver with DIIS --- src/qforte/maths/optimizer.py | 12 ++++++------ tests/test_open_shells.py | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/qforte/maths/optimizer.py b/src/qforte/maths/optimizer.py index c9b744b0..5f2b483e 100644 --- a/src/qforte/maths/optimizer.py +++ b/src/qforte/maths/optimizer.py @@ -64,6 +64,12 @@ def jacobi_solver(self): self._tamps = list(np.add(self._tamps, r_k)) + t_diis.append(copy.deepcopy(self._tamps)) + e_diis.append(np.subtract(copy.deepcopy(self._tamps), t_old)) + + if(k >= 1 and self._diis_max_dim >= 2): + self._tamps = diis(self._diis_max_dim, t_diis, e_diis) + Ek = self.energy_feval(self._tamps) dE = Ek - Ek0 Ek0 = Ek @@ -79,12 +85,6 @@ def jacobi_solver(self): self._Egs = Ek break - t_diis.append(copy.deepcopy(self._tamps)) - e_diis.append(np.subtract(copy.deepcopy(self._tamps), t_old)) - - if(k >= 1 and self._diis_max_dim >= 2): - self._tamps = diis(self._diis_max_dim, t_diis, e_diis) - self._Egs = Ek if k == self._opt_maxiter: print("\nMaximum number of Jacobi iterations reached!") diff --git a/tests/test_open_shells.py b/tests/test_open_shells.py index fdef08f3..bab13b92 100644 --- a/tests/test_open_shells.py +++ b/tests/test_open_shells.py @@ -28,7 +28,7 @@ def test_H5_uccsd_pqe(self): alg = UCCNPQE(mol, compact_excitations = True) alg.run(pool_type='SD') - assert alg._Egs == approx(-2.4998604383361855, abs=1.0e-12) + assert alg._Egs == approx(-2.4998604454039635, abs=1.0e-12) def test_H5_fci(self):