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)
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 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
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