Ejemplo n.º 1
0
def cleanup_normalordered(result, deltas):
    t0 = time.clock()
    length = len(result)
    for t in result:
        t.contractDeltaFuncs_new()
    sqa.removeVirtOps_sf(result)
    sqa.termChop(result)
    sqa.combineTerms(result)
    result2 = []
    for t in result:
        result2 += sqa.contractCoreOps_sf(t)
    for t in result2:
        t.contractDeltaFuncs_new()
    sqa.termChop(result2)
    sqa.combineTerms(result2)
    result = []
    for r in result2:
        item1 = geraldCode.replaceRepeatIndicesWithDeltas(r, deltas)
        item2 = geraldCode.replaceSingleKdeltaWithDeltas(item1, deltas)
        result.append(geraldCode.replaceAllKdeltaWithDeltas(item2, deltas))
    print 'cleanup time: (', length, '->', len(result), ')', time.clock() - t0
    del result2
Ejemplo n.º 2
0
def simplify_all(result, deltas, cumulantE4=False, cumulantE3=False):
    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 = []
    for r in extendedR:
        item1 = replaceRepeatIndicesWithDeltas(r, deltas)
        item2 = replaceSingleKdeltaWithDeltas(item1, deltas)
        result.append(replaceAllKdeltaWithDeltas(item2, deltas))
    if (cumulantE4):
        x1 = sqa.index('Ax1', [sqa.options.active_type], True)
        x2 = sqa.index('Ax2', [sqa.options.active_type], True)
        x3 = sqa.index('Ax3', [sqa.options.active_type], True)
        x4 = sqa.index('Ax4', [sqa.options.active_type], True)
        x5 = sqa.index('Ax5', [sqa.options.active_type], True)
        x6 = sqa.index('Ax6', [sqa.options.active_type], True)
        sqa.decomp_4rdms_to_3rdms_sf(result, 'E4', sqa.sfExOp([x1, x2]),
                                     sqa.sfExOp([x1, x2, x3, x4]),
                                     sqa.sfExOp([x1, x2, x3, x4]),
                                     sqa.sfExOp([x1, x2, x3, x4]),
                                     sqa.sfExOp([x1, x2, x3, x4, x5, x6]))
    if (cumulantE3):
        x1 = sqa.index('Ax1', [sqa.options.active_type], True)
        x2 = sqa.index('Ax2', [sqa.options.active_type], True)
        x3 = sqa.index('Ax3', [sqa.options.active_type], True)
        x4 = sqa.index('Ax4', [sqa.options.active_type], True)
        sqa.decomp_3rdms_to_2rdms_sf(result, 'E3', sqa.sfExOp([x1, x2]),
                                     sqa.sfExOp([x1, x2, x3, x4]))
    return result
Ejemplo n.º 3
0
# 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 = []
rdmDelta = [deltaC, deltaA, deltaV]
for r in extendedR:
    item1=geraldCode.replaceRepeatIndicesWithDeltas(r, rdmDelta)
    item2=geraldCode.replaceSingleKdeltaWithDeltas(item1, rdmDelta)
    result.append(geraldCode.replaceAllKdeltaWithDeltas(item2, rdmDelta))
        p = sqa.index('p', [tag_h1_p], True)
        q = sqa.index('q', [tag_h1_q], True)
        E_pq = [sqa.sfExOp([p, q])]
        h_pq = sqa.tensor('h', [p, q], [hsym])

        term1 = sqa.term(1.0, [], [h_pq] + E_pq + T_klmc + E_cmlk)

        batch1 = sqa.normalOrder(term1)

        sqa.removeVirtOps_sf(batch1)

        for t in batch1:
            t.contractDeltaFuncs_new()

        sqa.combineTerms(batch1)
        sqa.termChop(batch1)

        result += batch1

        sqa.combineTerms(result)
        sqa.termChop(result)

for tag_h2_p in [tag_active, tag_virtual]:
    for tag_h2_q in [tag_active, tag_virtual]:
        for tag_h2_r in [tag_active, tag_virtual]:
            for tag_h2_s in [tag_active, tag_virtual]:

                p = sqa.index('p', [tag_h2_p], True)
                q = sqa.index('q', [tag_h2_q], True)
                r = sqa.index('r', [tag_h2_r], True)
                s = sqa.index('s', [tag_h2_s], True)
        p = sqa.index('p', [tag_h1_p], True)
        q = sqa.index('q', [tag_h1_q], True)
        E_pq = [sqa.sfExOp([p, q])]
        h_pq = sqa.tensor('h', [p, q], [hsym])
        
        term1 = sqa.term( 1.0, [], [h_pq] + E_pq + T_klmc + E_cmlk)
        
        batch1 = sqa.normalOrder(term1)

        sqa.removeVirtOps_sf(batch1)

        for t in batch1:
            t.contractDeltaFuncs_new()

        sqa.combineTerms(batch1)
        sqa.termChop(batch1)
                
        result += batch1

        sqa.combineTerms(result)
        sqa.termChop(result)                

for tag_h2_p in [tag_active, tag_virtual]:
    for tag_h2_q in [tag_active, tag_virtual]:
        for tag_h2_r in [tag_active, tag_virtual]:
            for tag_h2_s in [tag_active, tag_virtual]: 
        
                p = sqa.index('p', [tag_h2_p], True)
                q = sqa.index('q', [tag_h2_q], True)
                r = sqa.index('r', [tag_h2_r], True)
                s = sqa.index('s', [tag_h2_s], True)
Ejemplo n.º 6
0
print "HF Fermi expectation form"
result = []
for t in Nterms2:
    tmp = sqa.HFFermi( t )
    result.append( tmp )
    print tmp
print ""

print "contract form"
for t in result:
    t.contractDeltaFuncs()
    print t
print ""

print "remove near zero terms"
sqa.termChop(result)
for t in result:
    print t
print ""

#sqa.combineTerms(result, maxThreads = 5)
sqa.combineTerms(result)
print "combined terms"
for t in result:
    print t
print ""

print "change idx"
result2 = []
for t in result:
    tmp = sqa.idxname( t )
Ejemplo n.º 7
0
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)
sqa.combineTerms(result3)
sqa.removeVirtOps_sf(result4)
sqa.termChop(result4)
sqa.combineTerms(result4)

extendedR1=[]
for t in result1:
    extendedR1 += sqa.contractCoreOps_sf(t)
for t in extendedR1: