def test_ccd_stanton(self): no = self.no nv = self.nv T1old, T2old = test_utils.make_random_T(no, nv) F, I = test_utils.make_random_integrals(no, nv) T2 = cc_equations.ccd_simple(F, I, T2old) T2sd = cc_equations.ccd_stanton(F, I, T2old) D = numpy.linalg.norm(T2 - T2sd) s = D < self.thresh err = "Error in CCD T2" self.assertTrue(s, err)
def test_ccd(self): no = self.no nv = self.nv T1old, T2old = test_utils.make_random_T(no, nv) L1old, L2old = test_utils.make_random_L(no, nv) F, I = test_utils.make_random_integrals(no, nv) T1old = numpy.zeros((nv, no)) L1old = numpy.zeros((no, nv)) L2 = cc_equations.ccd_lambda_simple(F, I, L2old, T2old) L1t, L2t \ = cc_equations.ccsd_lambda_simple(F, I, L1old, L2old, T1old, T2old) D = numpy.linalg.norm(L2 - L2t) s = D < self.thresh err = "Error in CCD L2" self.assertTrue(s, err)
def test_ccsd_stanton(self): no = self.no nv = self.nv T1old, T2old = test_utils.make_random_T(no, nv) F, I = test_utils.make_random_integrals(no, nv) T1sim, T2sim = cc_equations.ccsd_simple(F, I, T1old, T2old) T1stn, T2stn = cc_equations.ccsd_stanton(F, I, T1old, T2old) D1 = numpy.linalg.norm(T1sim - T1stn) D2 = numpy.linalg.norm(T2sim - T2stn) s1 = D1 < self.thresh s2 = D2 < self.thresh e1 = "Error in optimized T1" e2 = "Error in optimized T2" self.assertTrue(s1, e1) self.assertTrue(s2, e2)
def test_ccsd_stanton(self): no = self.no nv = self.nv T1old, T2old = test_utils.make_random_T(no, nv) L1old, L2old = test_utils.make_random_L(no, nv) F, I = test_utils.make_random_integrals(no, nv) L1sim, L2sim = cc_equations.ccsd_lambda_simple(F, I, L1old, L2old, T1old, T2old) L1opt, L2opt = cc_equations.ccsd_lambda_stanton( F, I, L1old, L2old, T1old, T2old) D1 = numpy.linalg.norm(L1sim - L1opt) D2 = numpy.linalg.norm(L2sim - L2opt) s1 = D1 < self.thresh s2 = D2 < self.thresh e1 = "Error in optimized L1" e2 = "Error in optimized L2" self.assertTrue(s1, e1) self.assertTrue(s2, e2)
def test_int_sym(self): F, I = test_utils.make_random_integrals(2, 3) test = F.oo - F.oo.transpose((1, 0)) sym = numpy.linalg.norm(test) < self.thresh err = "Bad symmetry in Foo" self.assertTrue(sym, err) test = F.vv - F.vv.transpose((1, 0)) sym = numpy.linalg.norm(test) < self.thresh err = "Bad symmetry in Fvv" self.assertTrue(sym, err) test = F.ov - F.vo.transpose((1, 0)) sym = numpy.linalg.norm(test) < self.thresh err = "Bad symmetry in Fov/Fvo" self.assertTrue(sym, err) test = I.vvvv + I.vvvv.transpose((0, 1, 3, 2)) sym1 = numpy.linalg.norm(test) < self.thresh test = I.vvvv + I.vvvv.transpose((1, 0, 2, 3)) sym2 = numpy.linalg.norm(test) < self.thresh test = I.vvvv - I.vvvv.transpose((1, 0, 3, 2)) sym3 = numpy.linalg.norm(test) < self.thresh err = "Bad symmetry in Ivvvv" self.assertTrue(sym1 and sym2 and sym3, err) test = I.vvvo + I.vvvo.transpose((1, 0, 2, 3)) sym = numpy.linalg.norm(test) < self.thresh err = "Bad symmetry in Ivvvo" self.assertTrue(sym, err) test = I.vovv + I.vovv.transpose((0, 1, 3, 2)) sym = numpy.linalg.norm(test) < self.thresh err = "Bad symmetry in Ivovv" self.assertTrue(sym, err) test = I.vvoo + I.vvoo.transpose((0, 1, 3, 2)) sym1 = numpy.linalg.norm(test) < self.thresh test = I.vvoo + I.vvoo.transpose((1, 0, 2, 3)) sym2 = numpy.linalg.norm(test) < self.thresh err = "Bad symmetry in Ivvoo" self.assertTrue(sym1 and sym2, err) test = I.oovv + I.oovv.transpose((0, 1, 3, 2)) sym1 = numpy.linalg.norm(test) < self.thresh test = I.oovv + I.oovv.transpose((1, 0, 2, 3)) sym2 = numpy.linalg.norm(test) < self.thresh err = "Bad symmetry in Ioovv" self.assertTrue(sym1 and sym2, err) test = I.ooov + I.ooov.transpose((1, 0, 2, 3)) sym = numpy.linalg.norm(test) < self.thresh err = "Bad symmetry in Iooov" self.assertTrue(sym, err) test = I.oooo + I.oooo.transpose((0, 1, 3, 2)) sym1 = numpy.linalg.norm(test) < self.thresh test = I.oooo + I.oooo.transpose((1, 0, 2, 3)) sym2 = numpy.linalg.norm(test) < self.thresh test = I.oooo - I.oooo.transpose((1, 0, 3, 2)) sym3 = numpy.linalg.norm(test) < self.thresh err = "Bad symmetry in Ioooo" self.assertTrue(sym1 and sym2 and sym3, err)