Esempio 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
Esempio 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
Esempio 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))
print ""

result = []
for tag_h1_p in [tag_active, tag_virtual]:
    for tag_h1_q in [tag_active, tag_virtual]:

        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]:
print ""

result = []
for tag_h1_p in [tag_active, tag_virtual]:
    for tag_h1_q in [tag_active, tag_virtual]:

        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]:
Esempio n. 6
0
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])] )



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

'''
result = sqa.normalOrder(sqa.multiplyTerms(E_aiEbj2b, E_aiEbj1b))
for t in result:
    t.contractDeltaFuncs_new()
sqa.removeVirtOps_sf(result)
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
Esempio n. 7
0
result = []
# One-body part ....
for tag_h1_p in [tag_active, tag_virtual]:
    for tag_h1_q in [tag_active, tag_virtual]:

        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, [], E_ijka + [h_pq] + E_pq + E_bnml)

        batch1 = sqa.normalOrder(term1)

        sqa.removeVirtOps_sf(batch1)

        for t in batch1:
            t.contractDeltaFuncs_new()

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

        result += batch1

        term2 = sqa.term(-1.0, [], E_ijka + E_bnml + [h_pq] + E_pq)

        batch2 = sqa.normalOrder(term2)

        for t in batch2:
            t.contractDeltaFuncs_new()
result = []
# One-body part ....
for tag_h1_p in [tag_active, tag_virtual]:
    for tag_h1_q in [tag_active, tag_virtual]:

        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, [], E_ijka + [h_pq] + E_pq + E_bnml)
        
        batch1 = sqa.normalOrder(term1)

        sqa.removeVirtOps_sf(batch1)

        for t in batch1:
            t.contractDeltaFuncs_new()

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

        term2 = sqa.term(-1.0, [], E_ijka + E_bnml + [h_pq] + E_pq)
    
        batch2 = sqa.normalOrder(term2)

        for t in batch2:
            t.contractDeltaFuncs_new()