Ejemplo n.º 1
0
    def test_ccd(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)
        T1old = numpy.zeros((nv, no))

        T2 = cc_equations.ccd_simple(F, I, T2old)
        T1sd, T2sd = cc_equations.ccsd_simple(F, I, T1old, T2old)

        D = numpy.linalg.norm(T2 - T2sd)
        s = D < self.thresh
        err = "Error in CCD T2"
        self.assertTrue(s, err)
Ejemplo n.º 2
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)
Ejemplo n.º 3
0
def epcc1_11_gen(F, I, w, g, h, G, H, T1old, T2old, S1old, U11old):
    """
    Input:
    
    F (array): The fock matrix
    I (array): The ERIs
    w (array): Vibrational modes
    g (array): el-ph coupling  matrix
    h (array): complex conjugate of el-ph coupling
    G (array): single mode peice of the Hamiltonian
    H (array): complex conjuage of G
    T1old (array): old T1 amplitudes
    T2old (array): old T2 amplitudes
    S1old (array): old TS (one phonon) amplitudes
    U11old (array): old TS1 (el-ph) amplitudes
    """
    # CCSD equations
    T1, T2 = cc_equations.ccsd_simple(F, I, T1old, T2old)

    # Additional T1 terms
    T1 += 1.0 * einsum('I,Iai->ai', G, U11old)
    T1 += 1.0 * einsum('Iai,I->ai', g.vo, S1old)
    T1 += -1.0 * einsum('Iji,Iaj->ai', g.oo, U11old)
    T1 += 1.0 * einsum('Iab,Ibi->ai', g.vv, U11old)
    T1 += -1.0 * einsum('Iji,aj,I->ai', g.oo, T1old, S1old)
    T1 += 1.0 * einsum('Iab,bi,I->ai', g.vv, T1old, S1old)
    T1 += -1.0 * einsum('Ijb,bi,Iaj->ai', g.ov, T1old, U11old)
    T1 += -1.0 * einsum('Ijb,aj,Ibi->ai', g.ov, T1old, U11old)
    T1 += 1.0 * einsum('Ijb,bj,Iai->ai', g.ov, T1old, U11old)
    T1 += 1.0 * einsum('Ijb,abij,I->ai', g.ov, T2old, S1old)
    T1 += -1.0 * einsum('Ijb,bi,aj,I->ai', g.ov, T1old, T1old, S1old)

    # Additional T2 terms
    T2 += 1.0 * einsum('Iai,Ibj->abij', g.vo, U11old)
    T2 += -1.0 * einsum('Ibi,Iaj->abij', g.vo, U11old)
    T2 += -1.0 * einsum('Iaj,Ibi->abij', g.vo, U11old)
    T2 += 1.0 * einsum('Ibj,Iai->abij', g.vo, U11old)
    T2 += -1.0 * einsum('Iki,ak,Ibj->abij', g.oo, T1old, U11old)
    T2 += 1.0 * einsum('Iki,bk,Iaj->abij', g.oo, T1old, U11old)
    T2 += 1.0 * einsum('Ikj,ak,Ibi->abij', g.oo, T1old, U11old)
    T2 += -1.0 * einsum('Ikj,bk,Iai->abij', g.oo, T1old, U11old)
    T2 += 1.0 * einsum('Iki,abjk,I->abij', g.oo, T2old, S1old)
    T2 += -1.0 * einsum('Ikj,abik,I->abij', g.oo, T2old, S1old)
    T2 += 1.0 * einsum('Iac,ci,Ibj->abij', g.vv, T1old, U11old)
    T2 += -1.0 * einsum('Ibc,ci,Iaj->abij', g.vv, T1old, U11old)
    T2 += -1.0 * einsum('Iac,cj,Ibi->abij', g.vv, T1old, U11old)
    T2 += 1.0 * einsum('Ibc,cj,Iai->abij', g.vv, T1old, U11old)
    T2 += -1.0 * einsum('Iac,bcij,I->abij', g.vv, T2old, S1old)
    T2 += 1.0 * einsum('Ibc,acij,I->abij', g.vv, T2old, S1old)
    T2 += -1.0 * einsum('Ikc,acij,Ibk->abij', g.ov, T2old, U11old)
    T2 += -1.0 * einsum('Ikc,abik,Icj->abij', g.ov, T2old, U11old)
    T2 += 1.0 * einsum('Ikc,acik,Ibj->abij', g.ov, T2old, U11old)
    T2 += 1.0 * einsum('Ikc,bcij,Iak->abij', g.ov, T2old, U11old)
    T2 += -1.0 * einsum('Ikc,bcik,Iaj->abij', g.ov, T2old, U11old)
    T2 += 1.0 * einsum('Ikc,abjk,Ici->abij', g.ov, T2old, U11old)
    T2 += -1.0 * einsum('Ikc,acjk,Ibi->abij', g.ov, T2old, U11old)
    T2 += 1.0 * einsum('Ikc,bcjk,Iai->abij', g.ov, T2old, U11old)
    T2 += -1.0 * einsum('Ikc,ci,ak,Ibj->abij', g.ov, T1old, T1old, U11old)
    T2 += 1.0 * einsum('Ikc,ci,bk,Iaj->abij', g.ov, T1old, T1old, U11old)
    T2 += 1.0 * einsum('Ikc,ak,cj,Ibi->abij', g.ov, T1old, T1old, U11old)
    T2 += -1.0 * einsum('Ikc,cj,bk,Iai->abij', g.ov, T1old, T1old, U11old)
    T2 += 1.0 * einsum('Ikc,ci,abjk,I->abij', g.ov, T1old, T2old, S1old)
    T2 += 1.0 * einsum('Ikc,ak,bcij,I->abij', g.ov, T1old, T2old, S1old)
    T2 += -1.0 * einsum('Ikc,cj,abik,I->abij', g.ov, T1old, T2old, S1old)
    T2 += -1.0 * einsum('Ikc,bk,acij,I->abij', g.ov, T1old, T2old, S1old)

    # S1 equation
    S1 = 1.0 * einsum('I->I', H)
    S1 += 1.0 * einsum('IJ,J->I', w, S1)
    S1 += 1.0 * einsum('ia,Iai->I', F.ov, U11old)
    S1 += 1.0 * einsum('Iia,ai->I', h.ov, T1old)
    S1 += 1.0 * einsum('Jia,J,Iai->I', g.ov, S1old, U11old)
    S1 += -1.0 * einsum('ijab,bi,Iaj->I', I.oovv, T1old, U11old)

    # U11 equations
    U11 = 1.0 * einsum('Iai->Iai', h.vo)
    U11 += 1.0 * einsum('IJ,Jai->Iai', w, U11)
    U11 += -1.0 * einsum('ji,Iaj->Iai', F.oo, U11old)
    U11 += 1.0 * einsum('ab,Ibi->Iai', F.vv, U11old)
    U11 += -1.0 * einsum('Iji,aj->Iai', h.oo, T1old)
    U11 += 1.0 * einsum('Iab,bi->Iai', h.vv, T1old)
    U11 += -1.0 * einsum('ajbi,Ibj->Iai', I.vovo, U11old)
    U11 += 1.0 * einsum('Ijb,abij->Iai', h.ov, T2old)
    U11 += -1.0 * einsum('jb,bi,Iaj->Iai', F.ov, T1old, U11old)
    U11 += -1.0 * einsum('jb,aj,Ibi->Iai', F.ov, T1old, U11old)
    U11 += -1.0 * einsum('Jji,J,Iaj->Iai', g.oo, S1old, U11old)
    U11 += -1.0 * einsum('Ijb,bi,aj->Iai', h.ov, T1old, T1old)
    U11 += 1.0 * einsum('Jab,J,Ibi->Iai', g.vv, S1old, U11old)
    U11 += -1.0 * einsum('jkib,aj,Ibk->Iai', I.ooov, T1old, U11old)
    U11 += 1.0 * einsum('jkib,bj,Iak->Iai', I.ooov, T1old, U11old)
    U11 += -1.0 * einsum('ajbc,ci,Ibj->Iai', I.vovv, T1old, U11old)
    U11 += 1.0 * einsum('ajbc,cj,Ibi->Iai', I.vovv, T1old, U11old)
    U11 += -1.0 * einsum('Jjb,Ibi,Jaj->Iai', g.ov, U11old, U11old)
    U11 += -1.0 * einsum('Jjb,Iaj,Jbi->Iai', g.ov, U11old, U11old)
    U11 += 1.0 * einsum('Jjb,Ibj,Jai->Iai', g.ov, U11old, U11old)
    U11 += -1.0 * einsum('jkbc,acij,Ibk->Iai', I.oovv, T2old, U11old)
    U11 += -0.5 * einsum('jkbc,cbij,Iak->Iai', I.oovv, T2old, U11old)
    U11 += -0.5 * einsum('jkbc,acjk,Ibi->Iai', I.oovv, T2old, U11old)
    U11 += -1.0 * einsum('Jjb,bi,J,Iaj->Iai', g.ov, T1old, S1old, U11old)
    U11 += -1.0 * einsum('Jjb,aj,J,Ibi->Iai', g.ov, T1old, S1old, U11old)
    U11 += 1.0 * einsum('jkbc,ci,aj,Ibk->Iai', I.oovv, T1old, T1old, U11old)
    U11 += -1.0 * einsum('jkbc,ci,bj,Iak->Iai', I.oovv, T1old, T1old, U11old)
    U11 += -1.0 * einsum('jkbc,aj,ck,Ibi->Iai', I.oovv, T1old, T1old, U11old)

    return T1, T2, S1, U11
Ejemplo n.º 4
0
def epcc2_12_gen(F, I, w, g, h, G, H, T1old, T2old, S1old, S2old, U11old,
                 U12old):

    # CCSD equations
    T1, T2 = cc_equations.ccsd_simple(F, I, T1old, T2old)

    # Additional T1 terms
    T1 += 1.0 * einsum('I,Iai->ai', G, U11old)
    T1 += 1.0 * einsum('Iai,I->ai', g.vo, S1old)
    T1 += -1.0 * einsum('Iji,Iaj->ai', g.oo, U11old)
    T1 += 1.0 * einsum('Iab,Ibi->ai', g.vv, U11old)
    T1 += -1.0 * einsum('Iji,aj,I->ai', g.oo, T1old, S1old)
    T1 += 1.0 * einsum('Iab,bi,I->ai', g.vv, T1old, S1old)
    T1 += -1.0 * einsum('Ijb,bi,Iaj->ai', g.ov, T1old, U11old)
    T1 += -1.0 * einsum('Ijb,aj,Ibi->ai', g.ov, T1old, U11old)
    T1 += 1.0 * einsum('Ijb,bj,Iai->ai', g.ov, T1old, U11old)
    T1 += 1.0 * einsum('Ijb,abij,I->ai', g.ov, T2old, S1old)
    T1 += -1.0 * einsum('Ijb,bi,aj,I->ai', g.ov, T1old, T1old, S1old)

    # Additional T2 terms
    T2 += 1.0 * einsum('Iai,Ibj->abij', g.vo, U11old)
    T2 += -1.0 * einsum('Ibi,Iaj->abij', g.vo, U11old)
    T2 += -1.0 * einsum('Iaj,Ibi->abij', g.vo, U11old)
    T2 += 1.0 * einsum('Ibj,Iai->abij', g.vo, U11old)
    T2 += -1.0 * einsum('Iki,ak,Ibj->abij', g.oo, T1old, U11old)
    T2 += 1.0 * einsum('Iki,bk,Iaj->abij', g.oo, T1old, U11old)
    T2 += 1.0 * einsum('Ikj,ak,Ibi->abij', g.oo, T1old, U11old)
    T2 += -1.0 * einsum('Ikj,bk,Iai->abij', g.oo, T1old, U11old)
    T2 += 1.0 * einsum('Iki,abjk,I->abij', g.oo, T2old, S1old)
    T2 += -1.0 * einsum('Ikj,abik,I->abij', g.oo, T2old, S1old)
    T2 += 1.0 * einsum('Iac,ci,Ibj->abij', g.vv, T1old, U11old)
    T2 += -1.0 * einsum('Ibc,ci,Iaj->abij', g.vv, T1old, U11old)
    T2 += -1.0 * einsum('Iac,cj,Ibi->abij', g.vv, T1old, U11old)
    T2 += 1.0 * einsum('Ibc,cj,Iai->abij', g.vv, T1old, U11old)
    T2 += -1.0 * einsum('Iac,bcij,I->abij', g.vv, T2old, S1old)
    T2 += 1.0 * einsum('Ibc,acij,I->abij', g.vv, T2old, S1old)
    T2 += -1.0 * einsum('Ikc,acij,Ibk->abij', g.ov, T2old, U11old)
    T2 += -1.0 * einsum('Ikc,abik,Icj->abij', g.ov, T2old, U11old)
    T2 += 1.0 * einsum('Ikc,acik,Ibj->abij', g.ov, T2old, U11old)
    T2 += 1.0 * einsum('Ikc,bcij,Iak->abij', g.ov, T2old, U11old)
    T2 += -1.0 * einsum('Ikc,bcik,Iaj->abij', g.ov, T2old, U11old)
    T2 += 1.0 * einsum('Ikc,abjk,Ici->abij', g.ov, T2old, U11old)
    T2 += -1.0 * einsum('Ikc,acjk,Ibi->abij', g.ov, T2old, U11old)
    T2 += 1.0 * einsum('Ikc,bcjk,Iai->abij', g.ov, T2old, U11old)
    T2 += -1.0 * einsum('Ikc,ci,ak,Ibj->abij', g.ov, T1old, T1old, U11old)
    T2 += 1.0 * einsum('Ikc,ci,bk,Iaj->abij', g.ov, T1old, T1old, U11old)
    T2 += 1.0 * einsum('Ikc,ak,cj,Ibi->abij', g.ov, T1old, T1old, U11old)
    T2 += -1.0 * einsum('Ikc,cj,bk,Iai->abij', g.ov, T1old, T1old, U11old)
    T2 += 1.0 * einsum('Ikc,ci,abjk,I->abij', g.ov, T1old, T2old, S1old)
    T2 += 1.0 * einsum('Ikc,ak,bcij,I->abij', g.ov, T1old, T2old, S1old)
    T2 += -1.0 * einsum('Ikc,cj,abik,I->abij', g.ov, T1old, T2old, S1old)
    T2 += -1.0 * einsum('Ikc,bk,acij,I->abij', g.ov, T1old, T2old, S1old)

    # S1
    S1 += 1.0 * einsum('I->I', H)
    S1 += 1.0 * einsum('IJ,J->I', w, S1old)
    S1 += 1.0 * einsum('J,IJ->I', G, S2old)
    S1 += 1.0 * einsum('ia,Iai->I', F.ov, U11old)
    S1 += 1.0 * einsum('Iia,ai->I', h.ov, T1old)
    S1 += 1.0 * einsum('Jia,IJai->I', g.ov, U12old)
    S1 += 1.0 * einsum('Jia,ai,IJ->I', g.ov, T1old, S2old)
    S1 += 1.0 * einsum('Jia,J,Iai->I', g.ov, S1old, U11old)
    S1 += -1.0 * einsum('ijab,bi,Iaj->I', I.oovv, T1old, U11old)

    # S2
    S2 += 1.0 * einsum('IK,JK->IJ', w, S2old)
    S2 += 1.0 * einsum('JK,IK->IJ', w, S2old)
    S2 += 1.0 * einsum('ia,IJai->IJ', F.ov, U12old)
    S2 += 1.0 * einsum('Iia,Jai->IJ', h.ov, U11old)
    S2 += 1.0 * einsum('Jia,Iai->IJ', h.ov, U11old)
    S2 += 1.0 * einsum('Kia,K,IJai->IJ', g.ov, S1old, U12old)
    S2 += 1.0 * einsum('Kia,IK,Jai->IJ', g.ov, S2old, U11old)
    S2 += 1.0 * einsum('Kia,JK,Iai->IJ', g.ov, S2old, U11old)
    S2 += -1.0 * einsum('ijab,bi,IJaj->IJ', I.oovv, T1old, U12old)
    S2 += -1.0 * einsum('ijab,Ibi,Jaj->IJ', I.oovv, U11old, U11old)

    # U11 equations
    U11 += 1.0 * einsum('Iai->Iai', h.vo)
    U11 += -1.0 * einsum('ji,Iaj->Iai', F.oo, U11old)
    U11 += 1.0 * einsum('ab,Ibi->Iai', F.vv, U11old)
    U11 += 1.0 * einsum('IJ,Jai->Iai', w, U11old)
    U11 += 1.0 * einsum('J,IJai->Iai', G, U12old)
    U11 += -1.0 * einsum('Iji,aj->Iai', h.oo, T1old)
    U11 += 1.0 * einsum('Jai,IJ->Iai', g.vo, S2old)
    U11 += 1.0 * einsum('Iab,bi->Iai', h.vv, T1old)
    U11 += -1.0 * einsum('ajbi,Ibj->Iai', I.vovo, U11old)
    U11 += -1.0 * einsum('Jji,IJaj->Iai', g.oo, U12old)
    U11 += 1.0 * einsum('Ijb,abij->Iai', h.ov, T2old)
    U11 += 1.0 * einsum('Jab,IJbi->Iai', g.vv, U12old)
    U11 += -1.0 * einsum('jb,bi,Iaj->Iai', F.ov, T1old, U11old)
    U11 += -1.0 * einsum('jb,aj,Ibi->Iai', F.ov, T1old, U11old)
    U11 += -1.0 * einsum('Jji,aj,IJ->Iai', g.oo, T1old, S2old)
    U11 += -1.0 * einsum('Jji,J,Iaj->Iai', g.oo, S1old, U11old)
    U11 += -1.0 * einsum('Ijb,bi,aj->Iai', h.ov, T1old, T1old)
    U11 += 1.0 * einsum('Jab,bi,IJ->Iai', g.vv, T1old, S2old)
    U11 += 1.0 * einsum('Jab,J,Ibi->Iai', g.vv, S1old, U11old)
    U11 += -1.0 * einsum('jkib,aj,Ibk->Iai', I.ooov, T1old, U11old)
    U11 += 1.0 * einsum('jkib,bj,Iak->Iai', I.ooov, T1old, U11old)
    U11 += -1.0 * einsum('ajbc,ci,Ibj->Iai', I.vovv, T1old, U11old)
    U11 += 1.0 * einsum('ajbc,cj,Ibi->Iai', I.vovv, T1old, U11old)
    U11 += -1.0 * einsum('Jjb,bi,IJaj->Iai', g.ov, T1old, U12old)
    U11 += -1.0 * einsum('Jjb,aj,IJbi->Iai', g.ov, T1old, U12old)
    U11 += 1.0 * einsum('Jjb,bj,IJai->Iai', g.ov, T1old, U12old)
    U11 += 1.0 * einsum('Jjb,abij,IJ->Iai', g.ov, T2old, S2old)
    U11 += -1.0 * einsum('Jjb,Ibi,Jaj->Iai', g.ov, U11old, U11old)
    U11 += -1.0 * einsum('Jjb,Iaj,Jbi->Iai', g.ov, U11old, U11old)
    U11 += 1.0 * einsum('Jjb,Ibj,Jai->Iai', g.ov, U11old, U11old)
    U11 += -1.0 * einsum('jkbc,acij,Ibk->Iai', I.oovv, T2old, U11old)
    U11 += -0.5 * einsum('jkbc,cbij,Iak->Iai', I.oovv, T2old, U11old)
    U11 += -0.5 * einsum('jkbc,acjk,Ibi->Iai', I.oovv, T2old, U11old)
    U11 += -1.0 * einsum('Jjb,bi,aj,IJ->Iai', g.ov, T1old, T1old, S2old)
    U11 += -1.0 * einsum('Jjb,bi,J,Iaj->Iai', g.ov, T1old, S1old, U11old)
    U11 += -1.0 * einsum('Jjb,aj,J,Ibi->Iai', g.ov, T1old, S1old, U11old)
    U11 += 1.0 * einsum('jkbc,ci,aj,Ibk->Iai', I.oovv, T1old, T1old, U11old)
    U11 += -1.0 * einsum('jkbc,ci,bj,Iak->Iai', I.oovv, T1old, T1old, U11old)
    U11 += -1.0 * einsum('jkbc,aj,ck,Ibi->Iai', I.oovv, T1old, T1old, U11old)

    # U12 equations
    U12 = -1.0 * einsum('ji,IJaj->IJai', F.oo, U12old)
    U12 += 1.0 * einsum('ab,IJbi->IJai', F.vv, U12old)
    U12 += 1.0 * einsum('IK,JKai->IJai', w, U12old)
    U12 += 1.0 * einsum('JK,IKai->IJai', w, U12old)
    U12 += -1.0 * einsum('Iji,Jaj->IJai', h.oo, U11old)
    U12 += -1.0 * einsum('Jji,Iaj->IJai', h.oo, U11old)
    U12 += 1.0 * einsum('Iab,Jbi->IJai', h.vv, U11old)
    U12 += 1.0 * einsum('Jab,Ibi->IJai', h.vv, U11old)
    U12 += -1.0 * einsum('ajbi,IJbj->IJai', I.vovo, U12old)
    U12 += -1.0 * einsum('jb,bi,IJaj->IJai', F.ov, T1old, U12old)
    U12 += -1.0 * einsum('jb,aj,IJbi->IJai', F.ov, T1old, U12old)
    U12 += -1.0 * einsum('jb,Ibi,Jaj->IJai', F.ov, U11old, U11old)
    U12 += -1.0 * einsum('jb,Iaj,Jbi->IJai', F.ov, U11old, U11old)
    U12 += -1.0 * einsum('Kji,K,IJaj->IJai', g.oo, S1old, U12old)
    U12 += -1.0 * einsum('Kji,IK,Jaj->IJai', g.oo, S2old, U11old)
    U12 += -1.0 * einsum('Kji,JK,Iaj->IJai', g.oo, S2old, U11old)
    U12 += -1.0 * einsum('Ijb,bi,Jaj->IJai', h.ov, T1old, U11old)
    U12 += -1.0 * einsum('Ijb,aj,Jbi->IJai', h.ov, T1old, U11old)
    U12 += -1.0 * einsum('Jjb,bi,Iaj->IJai', h.ov, T1old, U11old)
    U12 += -1.0 * einsum('Jjb,aj,Ibi->IJai', h.ov, T1old, U11old)
    U12 += 1.0 * einsum('Kab,K,IJbi->IJai', g.vv, S1old, U12old)
    U12 += 1.0 * einsum('Kab,IK,Jbi->IJai', g.vv, S2old, U11old)
    U12 += 1.0 * einsum('Kab,JK,Ibi->IJai', g.vv, S2old, U11old)
    U12 += -1.0 * einsum('jkib,aj,IJbk->IJai', I.ooov, T1old, U12old)
    U12 += 1.0 * einsum('jkib,bj,IJak->IJai', I.ooov, T1old, U12old)
    U12 += -1.0 * einsum('jkib,Iaj,Jbk->IJai', I.ooov, U11old, U11old)
    U12 += 1.0 * einsum('jkib,Ibj,Jak->IJai', I.ooov, U11old, U11old)
    U12 += -1.0 * einsum('ajbc,ci,IJbj->IJai', I.vovv, T1old, U12old)
    U12 += 1.0 * einsum('ajbc,cj,IJbi->IJai', I.vovv, T1old, U12old)
    U12 += -1.0 * einsum('ajbc,Ici,Jbj->IJai', I.vovv, U11old, U11old)
    U12 += 1.0 * einsum('ajbc,Icj,Jbi->IJai', I.vovv, U11old, U11old)
    U12 += -1.0 * einsum('Kjb,Ibi,JKaj->IJai', g.ov, U11old, U12old)
    U12 += -1.0 * einsum('Kjb,Iaj,JKbi->IJai', g.ov, U11old, U12old)
    U12 += 1.0 * einsum('Kjb,Ibj,JKai->IJai', g.ov, U11old, U12old)
    U12 += -1.0 * einsum('Kjb,Jbi,IKaj->IJai', g.ov, U11old, U12old)
    U12 += -1.0 * einsum('Kjb,Jaj,IKbi->IJai', g.ov, U11old, U12old)
    U12 += 1.0 * einsum('Kjb,Jbj,IKai->IJai', g.ov, U11old, U12old)
    U12 += 1.0 * einsum('Kjb,Kai,IJbj->IJai', g.ov, U11old, U12old)
    U12 += -1.0 * einsum('Kjb,Kbi,IJaj->IJai', g.ov, U11old, U12old)
    U12 += -1.0 * einsum('Kjb,Kaj,IJbi->IJai', g.ov, U11old, U12old)
    U12 += -1.0 * einsum('jkbc,acij,IJbk->IJai', I.oovv, T2old, U12old)
    U12 += -0.5 * einsum('jkbc,cbij,IJak->IJai', I.oovv, T2old, U12old)
    U12 += -0.5 * einsum('jkbc,acjk,IJbi->IJai', I.oovv, T2old, U12old)
    U12 += -1.0 * einsum('Kjb,bi,K,IJaj->IJai', g.ov, T1old, S1old, U12old)
    U12 += -1.0 * einsum('Kjb,aj,K,IJbi->IJai', g.ov, T1old, S1old, U12old)
    U12 += -1.0 * einsum('Kjb,bi,IK,Jaj->IJai', g.ov, T1old, S2old, U11old)
    U12 += -1.0 * einsum('Kjb,aj,IK,Jbi->IJai', g.ov, T1old, S2old, U11old)
    U12 += -1.0 * einsum('Kjb,bi,JK,Iaj->IJai', g.ov, T1old, S2old, U11old)
    U12 += -1.0 * einsum('Kjb,aj,JK,Ibi->IJai', g.ov, T1old, S2old, U11old)
    U12 += -1.0 * einsum('Kjb,K,Ibi,Jaj->IJai', g.ov, S1old, U11old, U11old)
    U12 += -1.0 * einsum('Kjb,K,Iaj,Jbi->IJai', g.ov, S1old, U11old, U11old)
    U12 += 1.0 * einsum('jkbc,ci,aj,IJbk->IJai', I.oovv, T1old, T1old, U12old)
    U12 += -1.0 * einsum('jkbc,ci,bj,IJak->IJai', I.oovv, T1old, T1old, U12old)
    U12 += -1.0 * einsum('jkbc,aj,ck,IJbi->IJai', I.oovv, T1old, T1old, U12old)
    U12 += 1.0 * einsum('jkbc,ci,Iaj,Jbk->IJai', I.oovv, T1old, U11old, U11old)
    U12 += -1.0 * einsum('jkbc,ci,Ibj,Jak->IJai', I.oovv, T1old, U11old,
                         U11old)
    U12 += 1.0 * einsum('jkbc,aj,Ici,Jbk->IJai', I.oovv, T1old, U11old, U11old)
    U12 += 1.0 * einsum('jkbc,cj,Ibi,Jak->IJai', I.oovv, T1old, U11old, U11old)
    U12 += -1.0 * einsum('jkbc,aj,Ick,Jbi->IJai', I.oovv, T1old, U11old,
                         U11old)
    U12 += 1.0 * einsum('jkbc,cj,Iak,Jbi->IJai', I.oovv, T1old, U11old, U11old)

    return T1, T2, S1, S2, U11, U12