示例#1
0
    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)
示例#2
0
    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)
示例#3
0
    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)
示例#4
0
    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)
示例#5
0
    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)