コード例 #1
0
ファイル: O_ccav.py プロジェクト: norikcentaure/holder
# 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 = []
コード例 #2
0
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)
コード例 #3
0
ファイル: lcc_aaac.py プロジェクト: norikcentaure/holder
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 + '";'
コード例 #4
0
ファイル: lcc_caav.py プロジェクト: norikcentaure/holder
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)
コード例 #5
0
ファイル: lcc_3rd.py プロジェクト: norikcentaure/holder
        # 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),\
コード例 #6
0
ファイル: v.py プロジェクト: norikcentaure/holder
                                  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),')',\
コード例 #7
0
                # \\\\\\\\\\\\\\\\
                # 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

                    # \\\\\\\\\\\\\\\\
コード例 #8
0
ファイル: lcc_ccaa_O.py プロジェクト: norikcentaure/holder
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)
コード例 #9
0
ファイル: nev_caav.py プロジェクト: norikcentaure/holder
#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)
コード例 #10
0
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()
コード例 #11
0
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)
コード例 #12
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)
コード例 #13
0
ファイル: lcc_E2.py プロジェクト: norikcentaure/holder
        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)

コード例 #14
0
ファイル: lcc_ovlpPsi1.py プロジェクト: norikcentaure/holder
# 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 ------------------------------------------------------------------------------------------