# Define tensors deltaC = sqa.tensor('deltac', [i1,i2], [hsym]) deltaA = sqa.tensor('deltaa', [x1,x2], [hsym]) deltaV = sqa.tensor('deltav', [a1,a2], [hsym]) # Define the normal-ordered overlap Cin = sqa.tensor('V', [i,j,p,a], []) Cout = sqa.tensor('b', [k,l,q,b], []) if (withC): Op1 = sqa.term( 1.0, [''], [Cin, sqa.sfExOp([p, i]) , sqa.sfExOp([a, j])]) Op2 = sqa.term( 1.0, [''], [Cout, sqa.sfExOp([l, b]) , sqa.sfExOp([k, q])]) else: Op1 = sqa.term( 1.0, [''], [sqa.sfExOp([p, i]) , sqa.sfExOp([a, j])]) Op2 = sqa.term( 1.0, [''], [sqa.sfExOp([l, b]) , sqa.sfExOp([k, q])]) result = sqa.normalOrder(sqa.multiplyTerms(Op2, Op1)) # Simplify the result for t in result: t.contractDeltaFuncs_new() sqa.removeVirtOps_sf(result) sqa.termChop(result) sqa.combineTerms(result) extendedR=[] for t in result: extendedR += sqa.contractCoreOps_sf(t) for t in extendedR: t.contractDeltaFuncs_new() sqa.termChop(extendedR) sqa.combineTerms(extendedR) result = []
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)) for t in result: t.contractDeltaFuncs_new() sqa.removeVirtOps_sf(result) sqa.termChop(result) sqa.combineTerms(result) extendedR=[] for t in result: extendedR += sqa.contractCoreOps_sf(t) for t in extendedR: t.contractDeltaFuncs_new() sqa.termChop(extendedR) sqa.combineTerms(extendedR)
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)) result = simplify_all(result, [deltaC, deltaA, deltaV], cumulantE4=cumulantE4) # Perturber-dependent stuff Class = 'AAAC' tensors = common_tensors(result, 'caaa', pttype='MRLCC') tensors = order_tensors(tensors) nbrTensors = write_tensors('MRLCC_' + Class, tensors) nbrEqs = write_code('MRLCC_' + Class, tensors, result) nbr_bVec = bVec(Class, tensors) # Write out GetMethodInfo print ' static void GetMethodInfo(FMethodInfo &Out) {' print ' Out = FMethodInfo();' print ' Out.pName = "MRLCC_' + Class + '";'
commutator2 += sqa.commutator(HD_CA1, E_aiEbj1b) commutator2 += sqa.commutator(HD_CA2, E_aiEbj1b) commutator2 += sqa.commutator(HD_CV1, E_aiEbj1b) commutator2 += sqa.commutator(HD_CV2, E_aiEbj1b) commutator2 += sqa.commutator(HD_AV1, E_aiEbj1b) commutator2 += sqa.commutator(HD_AV2, E_aiEbj1b) commutator2 += sqa.commutator(T_C, E_aiEbj1b) commutator2 += sqa.commutator(T_A, E_aiEbj1b) commutator2 += sqa.commutator(T_V, E_aiEbj1b) result1 = [] result2 = [] result3 = [] result4 = [] for t in commutator1: result1 += sqa.normalOrder(sqa.multiplyTerms(E_aiEbj2a, t)) result2 += sqa.normalOrder(sqa.multiplyTerms(E_aiEbj2b, t)) for t in commutator2: result3 += sqa.normalOrder(sqa.multiplyTerms(E_aiEbj2a, t)) result4 += sqa.normalOrder(sqa.multiplyTerms(E_aiEbj2b, t)) for t in result1+result2+result3+result4: t.contractDeltaFuncs_new() sqa.removeVirtOps_sf(result1) sqa.termChop(result1) sqa.combineTerms(result1) sqa.removeVirtOps_sf(result2) sqa.termChop(result2) sqa.combineTerms(result2) sqa.removeVirtOps_sf(result3) sqa.termChop(result3)
# in this case the pattern is diverse, # and we exclude known patterns and H0 elif pattern(h_term) in pattern_of.values()\ or code(indices_of_ExOp(h_term)) in exop_h0: continue # Loop over Emu and Enu terms of Eq.(1) for left_term in psi1_left: for right_term in psi1_right: # Continue only is total pattern is neutral if is_non_zero([left_term, h_term, right_term]): log_H[H.index(h_term)] = 'evaluated' # Define the normal-ordered A_tau of Eq.(1) Atau = sqa.multiplyTerms( sqa.multiplyTerms(left_term, h_term), right_term) result_for_class = sqa.normalOrder(Atau) result_for_class = simplify_all(result_for_class, [deltaC, deltaA, deltaV]) result += result_for_class # Write out a message about this contribution #if (len(result_for_class)!=0): if print_log: print '// <E_{:3}E_{:3} | E_{:5} | E_{:3}E_{:3}> ={:5} Class:{:6}'.format(\ code(indices_of_ExOp(left_term )[0]),\ code(indices_of_ExOp(left_term )[1]),\ code(indices_of_ExOp(h_term )),\ code(indices_of_ExOp(right_term)[0]),\ code(indices_of_ExOp(right_term)[1]),\ len(result_for_class),\
symm(indTens_H4[tau][:4])) Vtau = sqa.term(factor[code(listtau)] * 0.5, [''], [Wtau, sqa.sfExOp(listtau)]) # <Psi1| bnu = sqa.tensor('b' + indTens_Psi1[nu][-1], indTens_Psi1[nu][4:8], symm(indTens_Psi1[nu][4:8])) Onu = sqa.term( 1.0, [''], [bnu, sqa.sfExOp(listnu[:2]), sqa.sfExOp(listnu[2:4])]) #Onu = sqa.term( 1.0, [''], [bnu, sqa.sfExOp([listnu[i] for i in [0,2,3,1]])]) # Define the normal-ordered: W_nu = <O^T_nu V_tau> W_tau term = sqa.multiplyTerms(Onu, Vtau) #print term result = sqa.normalOrder(term) result = mussardCode.simplify_all(result, [deltaC, deltaA, deltaV], cumulantE4=cumulantE4) # Write out a message about this contribution if (len(result) != 0): global_result += result print '// <Psi1_{:5} | V_{:5} > ={:5} Class:{:6}'.format(\ indExOp_Psi1[nu][-1],\ code(listtau),\ len(result),\ indExOp_H4[tau][-1]) #print '( W'+indTens_Psi1[nu][-1],code(indTens_Psi1[nu][4:8]),code(listnu),')',\
# \\\\\\\\\\\\\\\\ # CAN MODIFY THIS # //////////////// if is_non_zero([leftTerm, hTerm, rightTerm]): log_H[H.index(hTerm)] = 'evaluated' #if is_non_zero([leftTerm,rightTerm]): #if is_non_zero([hTerm]): # log_H[H.index(hTerm)]='evaluated' #if is_non_zero([leftTerm,hTerm]): # log_H[H.index(hTerm)]='evaluated' # \\\\\\\\\\\\\\\\ # CAN MODIFY THIS # //////////////// # Define the normal-ordered: A_tau = D^nu D^mu <E^T_nu E_tau E_mu> term = sqa.multiplyTerms( sqa.multiplyTerms(leftTerm, hTerm), rightTerm) #term=sqa.multiplyTerms(leftTerm, rightTerm) #term=hTerm #term=sqa.multiplyTerms(leftTerm, hTerm) #comm=sqa.commutator(hTerm, rightTerm) #result=[] #for t in comm: # result+=sqa.normalOrder(sqa.multiplyTerms(leftTerm, t)) result = sqa.normalOrder(term) result = simplify_all(result, [deltaC, deltaA, deltaV]) # Write out a message about this contribution #if (len(result)!=0): global_result += result # \\\\\\\\\\\\\\\\
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 = sqa.normalOrder(sqa.multiplyTerms(E_aiEbj2, E_aiEbj)) for t in result: t.contractDeltaFuncs_new() sqa.removeVirtOps_sf(result) sqa.termChop(result) sqa.combineTerms(result) extendedR = [] for t in result: extendedR += sqa.contractCoreOps_sf(t) for t in extendedR: t.contractDeltaFuncs_new() sqa.termChop(extendedR) sqa.combineTerms(extendedR)
#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) extendedR = [] for t in result: extendedR += sqa.contractCoreOps_sf(t) for t in extendedR: t.contractDeltaFuncs_new() sqa.termChop(extendedR) sqa.combineTerms(extendedR)
Cout2b = sqa.tensor('b2', [j, s, r, b], []) if (withC): Op1a = sqa.term(1.0, [''], [Cin1a, sqa.sfExOp([a, i]), sqa.sfExOp([p, q])]) Op1b = sqa.term(1.0, [''], [Cin1b, sqa.sfExOp([p, i]), sqa.sfExOp([a, q])]) Op2a = sqa.term(1.0, [''], [Cout2a, sqa.sfExOp([s, r]), sqa.sfExOp([j, b])]) Op2b = sqa.term(1.0, [''], [Cout2b, sqa.sfExOp([s, b]), sqa.sfExOp([j, r])]) else: Op1a = sqa.term(1.0, [''], [sqa.sfExOp([a, i]), sqa.sfExOp([p, q])]) Op1b = sqa.term(1.0, [''], [sqa.sfExOp([p, i]), sqa.sfExOp([a, q])]) Op2a = sqa.term(1.0, [''], [sqa.sfExOp([s, r]), sqa.sfExOp([j, b])]) Op2b = sqa.term(1.0, [''], [sqa.sfExOp([s, b]), sqa.sfExOp([j, r])]) result = sqa.normalOrder(sqa.multiplyTerms(Op2a, Op1a)) result += sqa.normalOrder(sqa.multiplyTerms(Op2b, Op1a)) result += sqa.normalOrder(sqa.multiplyTerms(Op2a, Op1b)) result += sqa.normalOrder(sqa.multiplyTerms(Op2b, Op1b)) # Simplify the result for t in result: t.contractDeltaFuncs_new() sqa.removeVirtOps_sf(result) sqa.termChop(result) sqa.combineTerms(result) extendedR = [] for t in result: extendedR += sqa.contractCoreOps_sf(t) for t in extendedR: t.contractDeltaFuncs_new()
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, c, d], [Dsym_c]) Cout = sqa.tensor("Ap", [c, d, r, s], [Dsym_c]) #first excitation E_aiEbj = sqa.term(1.0, [""], [sqa.sfExOp([a, p]), sqa.sfExOp([b, q])]) E_aiEbj2 = sqa.term(1.0, [""], [sqa.sfExOp([s, d]), sqa.sfExOp([r, c])]) result = [] result += sqa.normalOrder( sqa.multiplyTerms(sqa.term(1.0, [""], [Cin]), sqa.multiplyTerms(E_aiEbj2, E_aiEbj))) for t in result: t.contractDeltaFuncs_new() sqa.removeVirtOps_sf(result) for t in result: print t sqa.termChop(result) sqa.combineTerms(result) print result for t in result: print t exit(0)
HD2b = sqa.term(1.0, [""], [V_klcd2, sqa.sfExOp([m, e, f, n])]) HD2c = sqa.term(1.0, [""], [V_klcd3, sqa.sfExOp([m, u, n, v])]) HD2d = sqa.term(1.0, [""], [V_klcd4, sqa.sfExOp([m, u, v, n])]) HD2e = sqa.term(1.0, [""], [V_klcd5, sqa.sfExOp([u, e, n, v])]) HD2f = sqa.term(1.0, [""], [V_klcd6, sqa.sfExOp([u, e, v, n])]) HD4 = sqa.term(1.0, [""], [V_kl, sqa.sfExOp([m, n])]) HD5 = sqa.term(1.0, [""], [V_cd, sqa.sfExOp([e, f])]) HD6 = sqa.term(1.0, [""], [V_uv, sqa.sfExOp([u, v])]) #first excitation E_aiEbj = sqa.term(1.0, [""], [sqa.sfExOp([a, i]), sqa.sfExOp([b, q])]) E_aiEbj2 = sqa.term(1.0, [""], [sqa.sfExOp([r, d]), sqa.sfExOp([j, c])]) result = [] result += sqa.normalOrder((sqa.multiplyTerms(E_aiEbj2, E_aiEbj))) for t in result: t.contractDeltaFuncs_new() sqa.removeVirtOps_sf(result) sqa.termChop(result) sqa.combineTerms(result) extendedR = [] for t in result: extendedR += sqa.contractCoreOps_sf(t) for t in extendedR: # print t t.contractDeltaFuncs_new() sqa.termChop(extendedR)
continue # ... except if the class is 'other', # in this case the pattern is diverse, # and we include all "other" signatures elif pattern([hTerm]) in pattern_of.values(): continue # Loop over Emu and Enu terms of 'd_nu w_tau d_mu <E^T_nu E_tau E_mu>' for leftTerm in [Psi1Left[i] for i in list_of_pt2_for_pt3]: for rightTerm in [Psi1Right[i] for i in list_of_pt2_for_pt3]: if is_non_zero([leftTerm,hTerm]): log_H[H.index(hTerm)]='evaluated' # Define the normal-ordered: A_tau = D^nu D^mu <E^T_nu E_tau E_mu> term=sqa.multiplyTerms(leftTerm, hTerm) result=sqa.normalOrder(term) result=simplify_all(result,[deltaC, deltaA, deltaV]) # Write out a message about this contribution #if (len(result)!=0): global_result+=result print '// <E_{:3}E_{:3} | E_{:5}> ={:5} Class:{:6}'.format(\ code([i.indices for i in leftTerm.tensors if isinstance(i,sqa.sfExOp)][0]),\ code([i.indices for i in leftTerm.tensors if isinstance(i,sqa.sfExOp)][1]),\ code([i.indices for i in hTerm.tensors if isinstance(i,sqa.sfExOp)]),\ len(result),\ this_class)
# CALCULATIONS ------------------------------------------------------------------------------------ print '//' print '// The actual calculation yields:' global_result = [] log_H = {} if (True): # Loop over Emu and Enu terms of 'd_nu w_tau d_mu <E^T_nu E_tau E_mu>' for leftTerm in Psi1Left: for rightTerm in Psi1Right: if is_non_zero([leftTerm, rightTerm]): # Define the normal-ordered: A_tau = D^nu D^mu <E^T_nu E_tau E_mu> term = sqa.multiplyTerms(leftTerm, rightTerm) result = sqa.normalOrder(term) result = simplify_all(result, [deltaC, deltaA, deltaV]) # Write out a message about this contribution #if (len(result)!=0): global_result += result print '// <E_{:3}E_{:3} | E_{:3}E_{:3}> ={:5}'.format(\ code([i.indices for i in leftTerm.tensors if isinstance(i,sqa.sfExOp)][0]),\ code([i.indices for i in leftTerm.tensors if isinstance(i,sqa.sfExOp)][1]),\ code([i.indices for i in rightTerm.tensors if isinstance(i,sqa.sfExOp)][0]),\ code([i.indices for i in rightTerm.tensors if isinstance(i,sqa.sfExOp)][1]),\ len(result)) # OUTPUT ------------------------------------------------------------------------------------------