HD_V = sqa.term(0.5, [''], [V_V, sqa.sfExOp([a1, a2, a3, a4])]) HD_CA1 = sqa.term(1.0, [''], [V_CA1, sqa.sfExOp([i1, x1, i2, x2])]) HD_CA2 = sqa.term(1.0, [''], [V_CA2, sqa.sfExOp([i1, x1, x2, i2])]) HD_CV1 = sqa.term(1.0, [''], [V_CV1, sqa.sfExOp([i1, a1, i2, a2])]) HD_CV2 = sqa.term(1.0, [''], [V_CV2, sqa.sfExOp([i1, a1, a2, i2])]) HD_AV1 = sqa.term(1.0, [''], [V_AV1, sqa.sfExOp([x1, a1, x2, a2])]) HD_AV2 = sqa.term(1.0, [''], [V_AV2, sqa.sfExOp([x1, a1, a2, x2])]) # Define the normal-ordered A matrix: # Apvec_nu = < O^T_nu [H,O_mu] >.pvec_mu pvec = sqa.tensor('p', [i, p, q, r], []) Apvec = sqa.tensor('Ap', [j, u, v, w], []) Omu = sqa.term(1.0, [''], [pvec, sqa.sfExOp([q, i]), sqa.sfExOp([p, r])]) Onu = sqa.term(1.0, [''], [Apvec, sqa.sfExOp([w, u]), sqa.sfExOp([j, v])]) commutator = [] commutator += sqa.commutator(T_C, Omu) commutator += sqa.commutator(T_A, Omu) commutator += sqa.commutator(T_V, Omu) commutator += sqa.commutator(HD_A, Omu) commutator += sqa.commutator(HD_C, Omu) commutator += sqa.commutator(HD_V, Omu) commutator += sqa.commutator(HD_CA1, Omu) commutator += sqa.commutator(HD_CA2, Omu) commutator += sqa.commutator(HD_CV1, Omu) commutator += sqa.commutator(HD_CV2, Omu) commutator += sqa.commutator(HD_AV1, Omu) commutator += sqa.commutator(HD_AV2, Omu) result = [] for t in commutator: result += sqa.normalOrder(sqa.multiplyTerms(Onu, t))
HD_AV1 = sqa.term( 1.0, [""], [V_AV1, sqa.sfExOp([x1,a1,x2,a2])] ) HD_AV2 = sqa.term( 1.0, [""], [V_AV2, sqa.sfExOp([x1,a1,a2,x2])] ) T_C = sqa.term( 1.0, [""], [K_C, sqa.sfExOp([i1,i2])] ) T_A = sqa.term( 1.0, [""], [K_A, sqa.sfExOp([x1,x2])] ) T_V = sqa.term( 1.0, [""], [K_V, sqa.sfExOp([a1,a2])] ) Cin = sqa.tensor("p", [a,b,i,j], [Dsym_c]) Cout = sqa.tensor("Ap", [c,d,k,l], [Dsym_c]) #first excitation E_aiEbj = sqa.term( 1.0, [""], [Cin, sqa.sfExOp([a, i]) , sqa.sfExOp([b,j])]) E_aiEbj2 = sqa.term( 1.0, [""], [Cout, sqa.sfExOp([l, d]) , sqa.sfExOp([k,c])]) commutator = [] commutator += sqa.commutator(HD_C, E_aiEbj) commutator += sqa.commutator(HD_A, E_aiEbj) commutator += sqa.commutator(HD_V, E_aiEbj) commutator += sqa.commutator(HD_CA1, E_aiEbj) commutator += sqa.commutator(HD_CA2, E_aiEbj) commutator += sqa.commutator(HD_CV1, E_aiEbj) commutator += sqa.commutator(HD_CV2, E_aiEbj) commutator += sqa.commutator(HD_AV1, E_aiEbj) commutator += sqa.commutator(HD_AV2, E_aiEbj) commutator += sqa.commutator(T_C, E_aiEbj) commutator += sqa.commutator(T_A, E_aiEbj) commutator += sqa.commutator(T_V, E_aiEbj) result = [] for t in commutator: result += sqa.normalOrder(sqa.multiplyTerms(E_aiEbj2, t))
list2 = [list1[i] for i in [0, 2]] list3 = [list1[i] for i in [1, 3]] pvec = sqa.tensor('p', list1, []) #symm(list1)) Omu = sqa.term(1.0, [''], [pvec, sqa.sfExOp(list2), sqa.sfExOp(list3)]) # Define Onu list1 = gimme('vaaa') list2 = [list1[i] for i in [3, 1]] list3 = [list1[i] for i in [2, 0]] Apvec = sqa.tensor('Ap', list1, []) #symm(list1)) Onu = sqa.term(1.0, [''], [Apvec, sqa.sfExOp(list2), sqa.sfExOp(list3)]) # Define the normal-ordered A matrix: # Apvec_nu = < O^T_nu [H,O_mu] >.pvec_mu commutator = [] for Hterm in H: commutator += sqa.commutator(Hterm, Omu) result = [] for t in commutator: result += sqa.normalOrder(sqa.multiplyTerms(Onu, t)) result = simplify_all(result, [deltaC, deltaA, deltaV], cumulantE4=True) # Write out in INL format Class = 'AAAV' tensors = common_tensors(result, 'eaaa', pttype='NEVPT', df=True) tensors = order_tensors(tensors) nbrTensors = write_tensors('NEVPT_' + Class + '_DF', tensors) nbrEqs = write_code('NEVPT_' + Class, tensors, result) nbr_bVec = bVec(Class, tensors, df=True) print_GetMethodInfo('NEVPT_', Class, nbrTensors, nbrEqs, nbr_bVec)
sqa.termChop(result) sqa.combineTerms(result) extendedR1=[] for t in result: extendedR1 += sqa.contractCoreOps_sf(t) for t in extendedR1: t.contractDeltaFuncs_new() sqa.termChop(extendedR1) sqa.combineTerms(extendedR1) for t in extendedR1: print t exit(0) ''' commutator1 = [] commutator1 += sqa.commutator(HD_C, E_aiEbj1a) commutator1 += sqa.commutator(HD_A, E_aiEbj1a) commutator1 += sqa.commutator(HD_V, E_aiEbj1a) commutator1 += sqa.commutator(HD_CA1, E_aiEbj1a) commutator1 += sqa.commutator(HD_CA2, E_aiEbj1a) commutator1 += sqa.commutator(HD_CV1, E_aiEbj1a) commutator1 += sqa.commutator(HD_CV2, E_aiEbj1a) commutator1 += sqa.commutator(HD_AV1, E_aiEbj1a) commutator1 += sqa.commutator(HD_AV2, E_aiEbj1a) commutator1 += sqa.commutator(T_C, E_aiEbj1a) commutator1 += sqa.commutator(T_A, E_aiEbj1a) commutator1 += sqa.commutator(T_V, E_aiEbj1a) commutator2 = [] commutator2 += sqa.commutator(HD_C, E_aiEbj1b) commutator2 += sqa.commutator(HD_A, E_aiEbj1b) commutator2 += sqa.commutator(HD_V, E_aiEbj1b)
deltaV = sqa.tensor('deltav', [a1,a2], [hsym]) # Define Hamilonian terms T_C = sqa.term( 1.0, [''], [K_C, sqa.sfExOp([i1,i2])] ) T_A = sqa.term( 1.0, [''], [K_A, sqa.sfExOp([x1,x2])] ) T_V = sqa.term( 1.0, [''], [K_V, sqa.sfExOp([a1,a2])] ) HD_A = sqa.term( 0.5, [''], [V_Al,V_Ar, sqa.sfExOp([x1,x2,x3,x4])] ) # Define the normal-ordered A matrix: # Apvec_nu = < O^T_nu [H,O_mu] >.pvec_mu pvec = sqa.tensor('p', [a,b,i,q], []) Apvec = sqa.tensor('Ap', [c,d,j,r], []) Omu = sqa.term( 1.0, [''], [pvec, sqa.sfExOp([a, i]) , sqa.sfExOp([b, q])]) Onu = sqa.term( 1.0, [''], [Apvec, sqa.sfExOp([r, d]) , sqa.sfExOp([j, c])]) commutator = [] commutator += sqa.commutator(T_C, Omu) commutator += sqa.commutator(T_A, Omu) commutator += sqa.commutator(T_V, Omu) commutator += sqa.commutator(HD_A, Omu) result = [] for t in commutator: result += sqa.normalOrder(sqa.multiplyTerms(Onu, t)) result = simplify_all(result,[deltaC, deltaA, deltaV],cumulantE4=cumulantE4) # Perturber-dependent stuff Class = 'ACVV' tensors = mussardCode.make_tensors('eeca',pttype='NEVPT',df=True) tensors.append(['S1','S1','AA','D']) tensors.append(['S2','S2','aa','D'])
# Define Onu list1=gimme('caav') list2=[list1[i] for i in [2,1]] list3=[list1[i] for i in [0,3]] Apvec1 = sqa.tensor('Ap1', list1, symm(list1)) OnuA = sqa.term(1.0, [''], [Apvec1, sqa.sfExOp(list2), sqa.sfExOp(list3)]) list2=[list1[i] for i in [2,3]] list3=[list1[i] for i in [0,1]] Apvec2 = sqa.tensor('Ap2', list1, symm(list1)) OnuB = sqa.term(1.0, [''], [Apvec2, sqa.sfExOp(list2), sqa.sfExOp(list3)]) # Define the normal-ordered A matrix: # Apvec_nu = < O^T_nu [H,O_mu] >.pvec_mu commutator1 = [] for Hterm in H: commutator1 += sqa.commutator(Hterm, OmuA) commutator2 = [] for Hterm in H: commutator2 += sqa.commutator(Hterm, OmuB) result = [] for t in commutator1: result += sqa.normalOrder(sqa.multiplyTerms(OnuA, t)) result += sqa.normalOrder(sqa.multiplyTerms(OnuB, t)) for t in commutator2: result += sqa.normalOrder(sqa.multiplyTerms(OnuA, t)) result += sqa.normalOrder(sqa.multiplyTerms(OnuB, t)) result = simplify_all(result,[deltaC, deltaA, deltaV]) # Write out in INL format Class = 'CAAV' tensors = common_tensors(result,'cAae',pttype='MRLCC',df=True)
HD_CV2 = sqa.term(1.0, [''], [V_CV2, sqa.sfExOp([i1, a1, a2, i2])]) HD_AV1 = sqa.term(1.0, [''], [V_AV1, sqa.sfExOp([x1, a1, x2, a2])]) HD_AV2 = sqa.term(1.0, [''], [V_AV2, sqa.sfExOp([x1, a1, a2, x2])]) # Define the normal-ordered A matrix: # Apvec_nu = < O^T_nu [H,O_mu] >.pvec_mu pvec1 = sqa.tensor('p1', [i, p, q, a], []) pvec2 = sqa.tensor('p2', [i, p, q, a], []) Apvec1 = sqa.tensor('Ap1', [j, r, s, b], []) Apvec2 = sqa.tensor('Ap2', [j, r, s, b], []) OmuA = sqa.term(1.0, [''], [pvec1, sqa.sfExOp([a, i]), sqa.sfExOp([p, q])]) OmuB = sqa.term(1.0, [''], [pvec2, sqa.sfExOp([p, i]), sqa.sfExOp([a, q])]) OnuA = sqa.term(1.0, [''], [Apvec1, sqa.sfExOp([s, r]), sqa.sfExOp([j, b])]) OnuB = sqa.term(1.0, [''], [Apvec2, sqa.sfExOp([s, b]), sqa.sfExOp([j, r])]) commutator1 = [] commutator1 += sqa.commutator(T_C, OmuA) commutator1 += sqa.commutator(T_A, OmuA) commutator1 += sqa.commutator(T_V, OmuA) commutator1 += sqa.commutator(HD_A, OmuA) commutator1 += sqa.commutator(HD_C, OmuA) commutator1 += sqa.commutator(HD_V, OmuA) commutator1 += sqa.commutator(HD_CA1, OmuA) commutator1 += sqa.commutator(HD_CA2, OmuA) commutator1 += sqa.commutator(HD_CV1, OmuA) commutator1 += sqa.commutator(HD_CV2, OmuA) commutator1 += sqa.commutator(HD_AV1, OmuA) commutator1 += sqa.commutator(HD_AV2, OmuA) commutator2 = [] commutator2 += sqa.commutator(T_C, OmuB) commutator2 += sqa.commutator(T_A, OmuB) commutator2 += sqa.commutator(T_V, OmuB)
sqa.term(1.0, [], [ a2, sqa.creOp(dummyInd[2]), sqa.creOp(dummyInd[3]), sqa.desOp(dummyInd[5]), sqa.desOp(dummyInd[4]) ])) a2_terms.append( sqa.term(-1.0, [], [ a2, sqa.creOp(dummyInd[4]), sqa.creOp(dummyInd[5]), sqa.desOp(dummyInd[3]), sqa.desOp(dummyInd[2]) ])) test2_output = sqa.commutator(h1_term, a2_terms) sqa.combine_transpose(test2_output) test2_string_output = '' for t in test2_output: test2_string_output += str(t) + '\n' test2_correct_answer = \ " ( 4.00000) a2(a,b,c,d) h1(a,e) cre(c) cre(d) des(b) des(e) \n" + \ " ( -4.00000) a2(a,b,c,d) h1(c,e) cre(d) cre(e) des(a) des(b) \n" # " ( 4.00000) a2(a,b,c,d) h1(a,e) cre(b) cre(e) des(c) des(d) \n" + \ # " ( -4.00000) a2(a,b,c,d) h1(c,e) cre(a) cre(b) des(d) des(e) \n" print "Test 2 output:" print test2_string_output if test2_string_output == test2_correct_answer: print "Test 2 passed", else: print "Test 2 failed",
K_V = sqa.tensor('int1', [a1, a2], [hsym]) V_A = sqa.tensor('int2', [x1, x2, x3, x4], [Dsym_a, Dsym_b, Dsym_c]) HD_A = sqa.term(0.5, [""], [V_A, sqa.sfExOp([x1, x2, x3, x4])]) T_C = sqa.term(1.0, [""], [K_C, sqa.sfExOp([i1, i2])]) T_A = sqa.term(1.0, [""], [K_A, sqa.sfExOp([x1, x2])]) T_V = sqa.term(1.0, [""], [K_V, sqa.sfExOp([a1, a2])]) #first excitation E_aiEbj1a = sqa.term(1.0, [""], [sqa.sfExOp([a, i]), sqa.sfExOp([p, q])]) E_aiEbj1b = sqa.term(1.0, [""], [sqa.sfExOp([p, i]), sqa.sfExOp([a, q])]) E_aiEbj2a = sqa.term(1.0, [""], [sqa.sfExOp([s, r]), sqa.sfExOp([j, b])]) E_aiEbj2b = sqa.term(1.0, [""], [sqa.sfExOp([s, b]), sqa.sfExOp([j, r])]) commutator = [] commutator += sqa.commutator(HD_A, E_aiEbj1a) commutator += sqa.commutator(T_C, E_aiEbj1a) commutator += sqa.commutator(T_A, E_aiEbj1a) commutator += sqa.commutator(T_V, E_aiEbj1a) result = [] for t in commutator: result += sqa.normalOrder(sqa.multiplyTerms(E_aiEbj2a, t)) for t in result: t.contractDeltaFuncs_new() sqa.removeVirtOps_sf(result) sqa.termChop(result) sqa.combineTerms(result)
T_A = sqa.term(1.0, [''], [K_A, sqa.sfExOp([x1, x2])]) T_V = sqa.term(1.0, [''], [K_V, sqa.sfExOp([a1, a2])]) HD_A = sqa.term(0.5, [''], [V_A, sqa.sfExOp([x1, x2, x3, x4])]) # Define the normal-ordered A matrix: # Apvec_nu = < O^T_nu [H,O_mu] >.pvec_mu pvec1 = sqa.tensor('p1', [i, p, q, a], []) pvec2 = sqa.tensor('p2', [i, p, q, a], []) Apvec1 = sqa.tensor('Ap1', [j, r, s, b], []) Apvec2 = sqa.tensor('Ap2', [j, r, s, b], []) OmuA = sqa.term(1.0, [''], [pvec1, sqa.sfExOp([a, i]), sqa.sfExOp([p, q])]) OmuB = sqa.term(1.0, [''], [pvec2, sqa.sfExOp([p, i]), sqa.sfExOp([a, q])]) OnuA = sqa.term(1.0, [''], [Apvec1, sqa.sfExOp([s, r]), sqa.sfExOp([j, b])]) OnuB = sqa.term(1.0, [''], [Apvec2, sqa.sfExOp([s, b]), sqa.sfExOp([j, r])]) commutator1 = [] commutator1 += sqa.commutator(T_C, OmuA) commutator1 += sqa.commutator(T_A, OmuA) commutator1 += sqa.commutator(T_V, OmuA) commutator1 += sqa.commutator(HD_A, OmuA) commutator2 = [] commutator2 += sqa.commutator(T_C, OmuB) commutator2 += sqa.commutator(T_A, OmuB) commutator2 += sqa.commutator(T_V, OmuB) commutator2 += sqa.commutator(HD_A, OmuB) result = [] for t in commutator1: result += sqa.normalOrder(sqa.multiplyTerms(OnuA, t)) result += sqa.normalOrder(sqa.multiplyTerms(OnuB, t)) for t in commutator2: result += sqa.normalOrder(sqa.multiplyTerms(OnuA, t)) result += sqa.normalOrder(sqa.multiplyTerms(OnuB, t))