Esempio n. 1
0
import secondQuantizationAlgebra as sqa
from tools_for_sqa import *
from tools_for_pt import *
sqa.options.verbose = False

# Make H0
H = h0('NEVPT', df=True)

# Define Omu
list1 = gimme('vaaa')
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)
Esempio n. 2
0
    [gimme('va'), gimme('va')],  # vvaa
    [gimme('ac'), gimme('ac')],  # ccaa
    [gimme('vc'), gimme('aa')],  # vaca
    [gimme('ac'), gimme('va')],  # avca
    [gimme('va'), gimme('aa')],  # vaaa
    [gimme('ac'), gimme('aa')]
]  # caaa

# Construct |Psi_1> and <Psi_1|
psi1_right = []
psi1_left = []
for i in range(9):
    basis1 = sqa.sfExOp(basis[i][0])
    basis2 = sqa.sfExOp(basis[i][1])
    unique = unique_tensor(reorga_two_to_one(basis1, basis2))
    tensor = sqa.tensor('D' + class_names[i], unique, [])  #symm(unique)) #NO!
    psi1_right.append(sqa.term(1.0, [''], [tensor, basis1, basis2]))

    basis1 = sqa.sfExOp([basis[i][1][t] for t in [1, 0]])
    basis2 = sqa.sfExOp([basis[i][0][t] for t in [1, 0]])
    unique = unique_tensor(reorga_two_to_one(basis1, basis2))
    tensor = sqa.tensor('D' + class_names[i], unique, [])  #symm(unique)) #NO!
    psi1_left.append(sqa.term(1.0, [''], [tensor, basis1, basis2]))

# (LOG if want to debug)
if print_log:
    print '//'
    print '// With the unique tensors found, |Psi1> is:'
    for right_term in psi1_right:
        print '// d_{:5} E_{:2} E_{:2}        Class:{:6} OccPattern:{:9}'.format(\
                              code(indices_of_Tensor(right_term)[0]),\
Esempio n. 3
0
i4 = sqa.index('Cp',  [tag_core],    True)
a1 = sqa.index('Vg',  [tag_virtual], True)
a2 = sqa.index('Vh',  [tag_virtual], True)
a3 = sqa.index('Ve',  [tag_virtual], True)
a4 = sqa.index('Vf',  [tag_virtual], True)

L = sqa.index('La',  [tag_auxiliary], True)

# Define symmetry classes
hsym   = sqa.symmetry((1,0), 1)
Dsym_a = sqa.symmetry((2,1, 0,3), 1)
Dsym_b = sqa.symmetry((0,3, 2,1), 1)
Dsym_c = sqa.symmetry((1,0, 3,2), 1)

# Define tensors
K_C    = sqa.tensor('int1c', [i1,i2], [hsym])
K_A    = sqa.tensor('int1a', [x1,x2], [hsym])
K_V    = sqa.tensor('int1v', [a1,a2], [hsym])
V_Al   = sqa.tensor('int2Laa', [L,x1,x3], [])
V_Ar   = sqa.tensor('int2Laa', [L,x2,x4], [])
deltaC = sqa.tensor('deltac', [i1,i2], [hsym])
deltaA = sqa.tensor('deltaa', [x1,x2], [hsym])
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:
Esempio n. 4
0
import secondQuantizationAlgebra as sqa
from tools_for_sqa import *
from tools_for_pt  import *
sqa.options.verbose = False

# Make H0
H=h0('MRLCC',df=True)

# Define Omu
list1=gimme('caav')
list2=[list1[i] for i in [3,0]]
list3=[list1[i] for i in [1,2]]
pvec1  = sqa.tensor('p1', list1, symm(list1))
OmuA   = sqa.term(1.0, [''],  [pvec1,  sqa.sfExOp(list2), sqa.sfExOp(list3)])
list2=[list1[i] for i in [1,0]]
list3=[list1[i] for i in [3,2]]
pvec2  = sqa.tensor('p2', list1, symm(list1))
OmuB   = sqa.term(1.0, [''],  [pvec2,  sqa.sfExOp(list2), sqa.sfExOp(list3)])

# 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:
Esempio n. 5
0
sqa.options.verbose = False
# definitions
tg_c = sqa.options.core_type
tg_a = sqa.options.active_type
tg_v = sqa.options.virtual_type
tg_t = tg_c + tg_a + tg_v

i  = [sqa.index('i%i' %j, [tg_c], True) for j in range(8)]
r  = [sqa.index('r%i' %j, [tg_a], True) for j in range(8)]
a  = [sqa.index('a%i' %j, [tg_v], True) for j in range(8)]
m  = [sqa.index('m%i' %j, [tg_t], True) for j in range(8)]

t_sym = [ sqa.symmetry((1,0,3,2),1) ]
W_sym = [ sqa.symmetry((1,0,3,2),1), sqa.symmetry((0,3,2,1),1) ]

t_ts_ket_1 = [ sqa.tensor('t2', [a[0], a[3], i[0], i[1]], t_sym) ]
t_ops_ket_1= [ sqa.sfExOp([i[0], i[1], a[0], a[3]]) ] 
W_ts_ket_1 = [ sqa.tensor('W', [a[1], a[2], a[3], i[2]], W_sym) ]
W_ops_ket_1= [ sqa.sfExOp([a[3], i[2], a[1], a[2]]) ] 

t_ts_ket_2 = [ sqa.tensor('t2', [a[0], a[1], i[0], i[3]], t_sym) ]
t_ops_ket_2= [ sqa.sfExOp([i[0], i[3], a[0], a[1]]) ] 
W_ts_ket_2 = [ sqa.tensor('W', [i[3], a[2], i[1], i[2]], W_sym) ]
W_ops_ket_2= [ sqa.sfExOp([i[1], i[2], i[3], a[2]]) ] 

t_ts_bra_1 = [ sqa.tensor('t2', [i[4], i[5], a[4], a[7]], t_sym) ]
t_ops_bra_1= [ sqa.sfExOp([a[4], a[7], i[4], i[5]]) ] 
W_ts_bra_1 = [ sqa.tensor('W', [a[7], i[6], a[5], a[6]], W_sym) ]
W_ops_bra_1= [ sqa.sfExOp([a[5], a[6], a[7], i[6]]) ] 

t_ts_bra_2 = [ sqa.tensor('t2', [i[4], i[7], a[4], a[5]], t_sym) ]
Esempio n. 6
0
                       " (   1.00000) cre(j3) cre(j4) des(j1) des(j2) \n"
print "Test 1 output:"
print test1_string_output
if test1_string_output == test1_correct_answer:
    print "Test 1 passed",
else:
    print "Test 1 failed",
print " (%.3f seconds)\n" % (time.time() - startTime)

# Test 2: Commutator of all alpha 1e hamiltonian with all alpha 2 electron amplitude (without index types)
#         The result is transpose equated, so that symmetrization is required in the resulting Hamiltonian
print ""
print "Starting test 2"
print ""
startTime = time.time()
h1 = sqa.tensor('h1', dummyInd[0:2], h1sym)
a2 = sqa.tensor('a2', dummyInd[2:6], a2sym_aaaa)
h1_term = sqa.term(1.0, [],
                   [h1, sqa.creOp(dummyInd[0]),
                    sqa.desOp(dummyInd[1])])
a2_terms = []
a2_terms.append(
    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, [], [
Esempio n. 7
0
       'ccaa','vaca','avca','vaaa','caaa']
basis=[[gimme('vc'),gimme('vc')],\
       [gimme('vc'),gimme('va')],\
       [gimme('ac'),gimme('vc')],\
       [gimme('va'),gimme('va')],\
       [gimme('ac'),gimme('ac')],\
       [gimme('vc'),gimme('aa')],\
       [gimme('ac'),gimme('va')],\
       [gimme('va'),gimme('aa')],\
       [gimme('ac'),gimme('aa')]]
Psi1Right = []
Psi1Left = []
for i in range(9):
    basis1 = sqa.sfExOp(basis[i][0])
    basis2 = sqa.sfExOp(basis[i][1])
    tensor = sqa.tensor('D' + ClassNames[i],
                        unique_tensor(from_basis(basis1, basis2)), [])
    Psi1Right.append(sqa.term(1.0, [''], [tensor, basis1, basis2]))

    basis1 = sqa.sfExOp([basis[i][1][t] for t in [1, 0]])
    basis2 = sqa.sfExOp([basis[i][0][t] for t in [1, 0]])
    tensor = sqa.tensor('D' + ClassNames[i],
                        unique_tensor(from_basis(basis1, basis2)), [])
    Psi1Left.append(sqa.term(1.0, [''], [tensor, basis1, basis2]))

# PRINT OUT STUFF
print '//'
print '// With the unique tensors found, |Psi1> is:'
for el in Psi1Right:
    print '// d_{:5} E_{:2} E_{:2}        Class:{:6} OccPattern:{:9}'.format(\
                          code([i.indices for i in el.tensors if not isinstance(i,sqa.sfExOp)][0]),\
                          code([i.indices for i in el.tensors if     isinstance(i,sqa.sfExOp)][0]),\
Esempio n. 8
0
basis=[[gimme('vc'),gimme('vc')],\
       [gimme('vc'),gimme('va')],\
       [gimme('ac'),gimme('vc')],\
       [gimme('va'),gimme('va')],\
       [gimme('ac'),gimme('ac')],\
       [gimme('vc'),gimme('aa')],\
       [gimme('ac'),gimme('va')],\
       [gimme('va'),gimme('aa')],\
       [gimme('ac'),gimme('aa')]]
Psi1Right = []
Psi1Left = []
for i in range(9):
    basis1 = sqa.sfExOp(basis[i][0])
    basis2 = sqa.sfExOp(basis[i][1])
    unique = unique_tensor(reorga_two_to_one(basis1, basis2))
    tensor = sqa.tensor('D' + ClassNames[i], unique, symm(unique))
    Psi1Right.append(sqa.term(1.0, [''], [tensor, basis1, basis2]))

    basis1 = sqa.sfExOp([basis[i][1][t] for t in [1, 0]])
    basis2 = sqa.sfExOp([basis[i][0][t] for t in [1, 0]])
    unique = unique_tensor(reorga_two_to_one(basis1, basis2))
    tensor = sqa.tensor('D' + ClassNames[i], unique, symm(unique))
    Psi1Left.append(sqa.term(1.0, [''], [tensor, basis1, basis2]))

# PRINT OUT STUFF
if print_log:
    print '//'
    print '// With the unique tensors found, |Psi1> is:'
    for el in Psi1Right:
        print '// d_{:5} E_{:2} E_{:2}        Class:{:6} OccPattern:{:9}'.format(\
                              code([i.indices for i in el.tensors if not isinstance(i,sqa.sfExOp)][0]),\
Esempio n. 9
0
x4 = sqa.index('Ax', [tag_active], True)
i1 = sqa.index('Cm', [tag_core], True)
i2 = sqa.index('Cn', [tag_core], True)
i3 = sqa.index('Co', [tag_core], True)
i4 = sqa.index('Co1', [tag_core], True)
a1 = sqa.index('Vg', [tag_virtual], True)
a2 = sqa.index('Vh', [tag_virtual], True)
a3 = sqa.index('Ve', [tag_virtual], True)
a4 = sqa.index('Vf', [tag_virtual], True)

#h0 one body term
hsym = sqa.symmetry((1, 0), 1)
Dsym_a = sqa.symmetry((2, 1, 0, 3), 1)
Dsym_b = sqa.symmetry((0, 3, 2, 1), 1)
Dsym_c = sqa.symmetry((1, 0, 3, 2), 1)
K_C = sqa.tensor('int1', [i1, i2], [hsym])
K_A = sqa.tensor('int1', [x1, x2], [hsym])
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])])
Esempio n. 10
0
i2 = sqa.index('Cn', [tag_core], True)
i3 = sqa.index('Co', [tag_core], True)
i4 = sqa.index('Cp', [tag_core], True)
a1 = sqa.index('Vg', [tag_virtual], True)
a2 = sqa.index('Vh', [tag_virtual], True)
a3 = sqa.index('Ve', [tag_virtual], True)
a4 = sqa.index('Vf', [tag_virtual], True)

# Define symmetry classes
hsym = sqa.symmetry((1, 0), 1)
Dsym_a = sqa.symmetry((2, 1, 0, 3), 1)
Dsym_b = sqa.symmetry((0, 3, 2, 1), 1)
Dsym_c = sqa.symmetry((1, 0, 3, 2), 1)

# Define tensors
K_C = sqa.tensor('Wcc', [i1, i2], [hsym])
K_A = sqa.tensor('Waa', [x1, x2], [hsym])
K_V = sqa.tensor('Wvv', [a1, a2], [hsym])
V_A = sqa.tensor('Waaaa', [x1, x2, x3, x4], [Dsym_a, Dsym_b, Dsym_c])
deltaC = sqa.tensor('deltac', [i1, i2], [hsym])
deltaA = sqa.tensor('deltaa', [x1, x2], [hsym])
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_A, sqa.sfExOp([x1, x2, x3, x4])])

# Define the normal-ordered A matrix:
# Apvec_nu = < O^T_nu [H,O_mu] >.pvec_mu
Esempio n. 11
0
x1 = sqa.index('Au', [tag_active], True)
x2 = sqa.index('Av', [tag_active], True)
i1 = sqa.index('Cm', [tag_core], True)
i2 = sqa.index('Cn', [tag_core], True)
a1 = sqa.index('Vg', [tag_virtual], True)
a2 = sqa.index('Vh', [tag_virtual], True)

# Define symmetry classes
hsym = sqa.symmetry((1, 0), 1)
Dsym_a = sqa.symmetry((2, 1, 0, 3), 1)
Dsym_b = sqa.symmetry((0, 3, 2, 1), 1)
Dsym_c = sqa.symmetry((1, 0, 3, 2), 1)

# 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', [a, p, q, r], [])
Cout = sqa.tensor('b', [b, u, v, w], [])
if (withC):
    Op1 = sqa.term(1.0, [''], [Cin, sqa.sfExOp([a, q]), sqa.sfExOp([p, r])])
    Op2 = sqa.term(1.0, [''], [Cout, sqa.sfExOp([w, u]), sqa.sfExOp([v, b])])
else:
    Op1 = sqa.term(1.0, [''], [sqa.sfExOp([a, q]), sqa.sfExOp([p, r])])
    Op2 = sqa.term(1.0, [''], [sqa.sfExOp([w, u]), sqa.sfExOp([v, b])])
result = sqa.normalOrder(sqa.multiplyTerms(Op2, Op1))

# Simplify the result
Esempio n. 12
0
sqa.options.verbose = False
# definitions
tg_c = sqa.options.core_type
tg_a = sqa.options.active_type
tg_v = sqa.options.virtual_type
tg_t = tg_c + tg_a + tg_v

i  = [sqa.index('i%i' %j, [tg_c], True) for j in range(8)]
r  = [sqa.index('r%i' %j, [tg_a], True) for j in range(8)]
a  = [sqa.index('a%i' %j, [tg_v], True) for j in range(8)]
m  = [sqa.index('m%i' %j, [tg_t], True) for j in range(8)]

t_sym = [ sqa.symmetry((1,0,3,2),1) ]
W_sym = [ sqa.symmetry((1,0,3,2),1), sqa.symmetry((0,3,2,1),1) ]

tW_ts_ket_1 = [ sqa.tensor('t2Wk', [a[0], a[1], a[2], i[0], i[1], i[2]], []) ]
tW_ops_ket_1= [ sqa.sfExOp([i[0], i[1], i[2], a[0], a[1], a[2]]) ] 

tW_ts_bra_1 = [ sqa.tensor('t2Wb', [i[3], i[4], i[5], a[3], a[4], a[5]], []) ]
tW_ops_bra_1= [ sqa.sfExOp([a[3], a[4], a[5], i[3], i[4], i[5]]) ] 

#
#t_ts_ket_2 = [ sqa.tensor('t2', [a[0], a[1], i[0], i[3]], []) ]
#t_ops_ket_2= [ sqa.sfExOp([i[0], i[3], a[0], a[1]]) ] 
#W_ts_ket_2 = [ sqa.tensor('W', [i[3], a[2], i[1], i[2]], W_sym) ]
#W_ops_ket_2= [ sqa.sfExOp([i[1], i[2], i[3], a[2]]) ] 
#
#t_ts_bra_1 = [ sqa.tensor('t2', [i[4], i[5], a[4], a[7]], t_sym) ]
#t_ops_bra_1= [ sqa.sfExOp([a[4], a[7], i[4], i[5]]) ] 
#W_ts_bra_1 = [ sqa.tensor('W', [a[7], i[6], a[5], a[6]], W_sym) ]
#W_ops_bra_1= [ sqa.sfExOp([a[5], a[6], a[7], i[6]]) ] 
Esempio n. 13
0
i4 = sqa.index('Cp', [tag_core], True)
a1 = sqa.index('Vg', [tag_virtual], True)
a2 = sqa.index('Vh', [tag_virtual], True)
a3 = sqa.index('Ve', [tag_virtual], True)
a4 = sqa.index('Vf', [tag_virtual], True)

L = sqa.index('La', [tag_auxiliary], True)

# Define symmetry classes
hsym = sqa.symmetry((1, 0), 1)
Dsym_a = sqa.symmetry((2, 1, 0, 3), 1)
Dsym_b = sqa.symmetry((0, 3, 2, 1), 1)
Dsym_c = sqa.symmetry((1, 0, 3, 2), 1)

# Define tensors
K_C = sqa.tensor('int1c', [i1, i2], [hsym])
K_A = sqa.tensor('int1a', [x1, x2], [hsym])
K_V = sqa.tensor('int1v', [a1, a2], [hsym])
V_CA1l = sqa.tensor('int2Lcc', [L, i1, i2], [])
V_CA1r = sqa.tensor('int2Laa', [L, x1, x2], [])
V_CA2l = sqa.tensor('int2Lca', [L, i1, x2], [])
V_CA2r = sqa.tensor('int2Lac', [L, x1, i2], [])
V_CV1l = sqa.tensor('int2Lcc', [L, i1, i2], [])
V_CV1r = sqa.tensor('int2Lvv', [L, a1, a2], [])
V_CV2l = sqa.tensor('int2Lcv', [L, i1, a2], [])
V_CV2r = sqa.tensor('int2Lvc', [L, a1, i2], [])
V_AV1l = sqa.tensor('int2Laa', [L, x1, x2], [])
V_AV1r = sqa.tensor('int2Lvv', [L, a1, a2], [])
V_AV2l = sqa.tensor('int2Lav', [L, x1, a2], [])
V_AV2r = sqa.tensor('int2Lva', [L, a1, x2], [])
V_Cl = sqa.tensor('int2Lcc', [L, i1, i3], [])
# definitions
tg_c = sqa.options.core_type
tg_a = sqa.options.active_type
tg_v = sqa.options.virtual_type
tg_t = tg_c + tg_a + tg_v

i = [sqa.index('i%i' % j, [tg_c], True) for j in range(8)]
r = [sqa.index('r%i' % j, [tg_a], True) for j in range(8)]
a = [sqa.index('a%i' % j, [tg_v], True) for j in range(8)]
m = [sqa.index('m%i' % j, [tg_t], True) for j in range(8)]
n = [sqa.index('n%i' % j, [tg_t], True) for j in range(8)]

#t_sym = [ sqa.symmetry((1,0,3,2),1) ]
#W_sym = [ sqa.symmetry((1,0,3,2),1), sqa.symmetry((0,3,2,1),1) ]

W_ts_ket = [sqa.tensor('W', [a[1], i[1]], [])]
W_ops_ket = [sqa.sfExOp([i[1], a[1]])]

t_ts_bra = [sqa.tensor('t2', [i[0], a[0]], [])]
t_ops_bra = [sqa.sfExOp([a[0], i[0]])]

terms = []
#Op1   = t_ts_ket_1 + t_ops_ket_1 + W_ts_ket_1 + W_ops_ket_1 + W_ts_bra_1 + W_ops_bra_1 + t_ts_bra_1 + t_ops_bra_1
#terms.append( sqa.term( 1.0, [], Op1) )
#Op2 = t_ts_ket_2 + t_ops_ket_2 + W_ts_ket_2 + W_ops_ket_2 + W_ts_bra_1 + W_ops_bra_1 + t_ts_bra_1 + t_ops_bra_1
#terms.append( sqa.term( 1.0, [], Op2) )
#Op3 = t_ts_ket_1 + t_ops_ket_1 + W_ts_ket_1 + W_ops_ket_1 + W_ts_bra_2 + W_ops_bra_2 + t_ts_bra_2 + t_ops_bra_2
#terms.append( sqa.term( 1.0, [], Op3) )
#Op4 = t_ts_ket_2 + t_ops_ket_2 + W_ts_ket_2 + W_ops_ket_2 + W_ts_bra_2 + W_ops_bra_2 + t_ts_bra_2 + t_ops_bra_2
#Op4 = t_ops_ket_2 + W_ops_ket_2 + W_ops_bra_2 + t_ops_bra_2
#Op4 = t_ops_ket_2 + W_ops_ket_2
tag_active = sqa.options.active_type
tag_virtual = sqa.options.virtual_type

k = sqa.index('Ak', [tag_active], True)
l = sqa.index('Al', [tag_active], True)
m = sqa.index('Am', [tag_active], True)
c = sqa.index('Vc', [tag_virtual], True)

hsym = sqa.symmetry((1, 0), 1)
Dsym_a = sqa.symmetry((2, 1, 0, 3), 1)
Dsym_b = sqa.symmetry((0, 3, 2, 1), 1)
Dsym_c = sqa.symmetry((1, 0, 3, 2), 1)
Tsym = sqa.symmetry((0, 1, 2, 3), 1)

E_cmlk = [sqa.sfExOp([c, m, l, k])]
T_klmc = [sqa.tensor('T2', [k, l, m, c], [Tsym])]

print ""
print "Evaluation of the IC-MRCI Hamiltonian elements"
print "based on the spin-free generator"
print ""
print "!!!!! The operator space is L: <Psi|", E_cmlk[0], "|Psi>: R !!!!!"
print "@@@ SIGMA_0 <-- sum_{klcd} H(0; Vd, Vc, Al, Ak) T(Ak, Al, Vc, Vd)"
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)
a = sqa.index('Va', [tag_virtual], False)

l = sqa.index('Al', [tag_active], True)
m = sqa.index('Am', [tag_active], True)
n = sqa.index('An', [tag_active], True)
b = sqa.index('Vb', [tag_virtual], True)

hsym = sqa.symmetry((1, 0), 1)
Dsym_a = sqa.symmetry((2, 1, 0, 3), 1)
Dsym_b = sqa.symmetry((0, 3, 2, 1), 1)
Dsym_c = sqa.symmetry((1, 0, 3, 2), 1)

E_ijka = [sqa.sfExOp([i, j, k, a])]
E_bnml = [sqa.sfExOp([b, n, m, l])]

T_bnml = [sqa.tensor('T2', [l, m, n, b])]

print ""
print "Evaluation of the IC-MRCI Hamiltonian elements based on"
print "the spin-free generator and the commutator technique"
print ""
print "!!!!! The operator space is L: <Psi|", E_ijka[0], ", ", E_bnml[
    0], "|Psi>: R !!!!!"
print "@@@ SIGMA(Ai, Aj, Ak, Va) <-- H(Ai, Aj, Ak, Va; Vb, Am, Al, Ak) T(Ak, Al, Am, Vb)"
print ""

result = []
# One-body part
for tag_h1_p in [tag_active, tag_virtual]:
    for tag_h1_q in [tag_active, tag_virtual]:
tc = sqa.options.core_type
tt = sqa.options.active_type
tv = sqa.options.virtual_type

# Define core indices
ac = [sqa.index('c%i' %i, [ta,tc], False) for i in range(10)]
bc = [sqa.index('c%i' %i, [tb,tc], False) for i in range(10)]

# Define active indices
at = [sqa.index('a%i' %i, [ta,tt], True) for i in range(10)]
bt = [sqa.index('a%i' %i, [tb,tt], True) for i in range(10)]

terms = []
terms.append(sqa.term(1.0, [], [sqa.creOp(ac[0]), sqa.desOp(ac[0])]))
terms.append(sqa.term(1.0, [], [sqa.creOp(ac[0]), sqa.creOp(ac[1]), sqa.desOp(ac[1])]))
terms.append(sqa.term(1.0, [], [sqa.creOp(at[0]), sqa.creOp(ac[0]), sqa.tensor('r0', [at[0], at[1]], []), sqa.creOp(ac[1]), \
                                sqa.desOp(ac[0]), sqa.desOp(at[1])]))
terms.append(sqa.term(1.0, [], [sqa.creOp(at[0]), sqa.creOp(ac[0]), sqa.creOp(ac[1]), \
                                sqa.desOp(ac[0]), sqa.desOp(at[1]), sqa.desOp(ac[1])]))
terms.append(sqa.term(1.0, [], [sqa.creOp(ac[0]), sqa.creOp(ac[1]), sqa.creOp(ac[0]), \
                                sqa.desOp(ac[0]), sqa.desOp(at[1]), sqa.desOp(ac[1])]))
terms.append(sqa.term(1.0, [], [sqa.creOp(at[0]), sqa.creOp(ac[1]), sqa.creOp(ac[0]), \
                                sqa.desOp(ac[1]), sqa.desOp(ac[0]), sqa.desOp(ac[1])]))

print ""
print "Testing removeCoreOpPairs function."
print ""
print "Core indices labeled with c."
print "Active indices labeled with a."

print ""
Esempio n. 18
0
x1 = sqa.index('Au',  [tag_active],  True)
x2 = sqa.index('Av',  [tag_active],  True)
i1 = sqa.index('Cm',  [tag_core],    True)
i2 = sqa.index('Cn',  [tag_core],    True)
a1 = sqa.index('Vg',  [tag_virtual], True)
a2 = sqa.index('Vh',  [tag_virtual], True)

# Define symmetry classes
hsym   = sqa.symmetry((1,0), 1)
Dsym_a = sqa.symmetry((2,1, 0,3), 1)
Dsym_b = sqa.symmetry((0,3, 2,1), 1)
Dsym_c = sqa.symmetry((1,0, 3,2), 1)

# 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', [a,b,i,q], [])
Cout = sqa.tensor('b', [c,d,j,r], [])
if (withC):
  Op1 = sqa.term( 1.0, [''],  [Cin,  sqa.sfExOp([a, i]) , sqa.sfExOp([b, q])])
  Op2 = sqa.term( 1.0, [''],  [Cout, sqa.sfExOp([r, d]) , sqa.sfExOp([j, c])])
else:
  Op1 = sqa.term( 1.0, [''],  [sqa.sfExOp([a, i]) , sqa.sfExOp([b, q])])
  Op2 = sqa.term( 1.0, [''],  [sqa.sfExOp([r, d]) , sqa.sfExOp([j, c])])
result = sqa.normalOrder(sqa.multiplyTerms(Op2, Op1))

# Simplify the result
Esempio n. 19
0
i2 = sqa.index('Cn', [tag_core], True)
i3 = sqa.index('Co', [tag_core], True)
i4 = sqa.index('Cp', [tag_core], True)
a1 = sqa.index('Vg', [tag_virtual], True)
a2 = sqa.index('Vh', [tag_virtual], True)
a3 = sqa.index('Ve', [tag_virtual], True)
a4 = sqa.index('Vf', [tag_virtual], True)

# Define symmetry classes
hsym = sqa.symmetry((1, 0), 1)
Dsym_a = sqa.symmetry((2, 1, 0, 3), 1)
Dsym_b = sqa.symmetry((0, 3, 2, 1), 1)
Dsym_c = sqa.symmetry((1, 0, 3, 2), 1)

# Define tensors
K_C = sqa.tensor('Wcc', [i1, i2], [hsym])
K_A = sqa.tensor('Waa', [x1, x2], [hsym])
K_V = sqa.tensor('Wvv', [a1, a2], [hsym])
V_A = sqa.tensor('Waaaa', [x1, x2, x3, x4], [Dsym_a, Dsym_b, Dsym_c])
deltaC = sqa.tensor('deltac', [i1, i2], [hsym])
deltaA = sqa.tensor('deltaa', [x1, x2], [hsym])
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_A, sqa.sfExOp([x1, x2, x3, x4])])

# Define the normal-ordered A matrix:
# Apvec_nu = < O^T_nu [H,O_mu] >.pvec_mu
print ""
print "Evaluation of the IC-MRCI Hamiltonian elements"
print "based on the spin-free generator"
print ""
print "!!!!! The operator space is L: <Psi|", E_iajb[0], E_dlck[0], "|Psi>: R !!!!!"
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, [], E_iajb + [h_pq] + E_pq + E_dlck)
        
        batch1 = sqa.normalOrder(term1)

        sqa.removeVirtOps_sf(batch1)

        for t in batch1:
            t.contractDeltaFuncs_new()

        sqa.combineTerms(batch1)
        sqa.termChop(batch1)
                
        result += batch1
Esempio n. 21
0
i3 = sqa.index('Co',  [tag_core],    True)
i4 = sqa.index('Cp',  [tag_core],    True)
a1 = sqa.index('Vg',  [tag_virtual], True)
a2 = sqa.index('Vh',  [tag_virtual], True)
a3 = sqa.index('Ve',  [tag_virtual], True)
a4 = sqa.index('Vf',  [tag_virtual], True)


# Define symmetry classes
hsym   = sqa.symmetry((1,0), 1)
Dsym_a = sqa.symmetry((2,1, 0,3), 1)
Dsym_b = sqa.symmetry((0,3, 2,1), 1)
Dsym_c = sqa.symmetry((1,0, 3,2), 1)

# Define tensors
K_C    = sqa.tensor('int1c', [i1,i2], [hsym])
K_A    = sqa.tensor('int1a', [x1,x2], [hsym])
K_V    = sqa.tensor('int1v', [a1,a2], [hsym])
V_A    = sqa.tensor('int2a', [x1,x2, x3,x4], [Dsym_a, Dsym_b, Dsym_c])
V_C    = sqa.tensor('int2c', [i1,i2, i3,i4], [Dsym_a, Dsym_b, Dsym_c])
V_V    = sqa.tensor('int2v', [a1,a2, a3,a4], [Dsym_a, Dsym_b, Dsym_c])
V_CA1  = sqa.tensor('int2ca1', [i1,x1, i2,x2], [Dsym_a, Dsym_b])
V_CA2  = sqa.tensor('int2ca2', [i1,x1, x2,i2], [])
V_CV1  = sqa.tensor('int2cv1', [i1,a1, i2,a2], [Dsym_a, Dsym_b])
V_CV2  = sqa.tensor('int2cv2', [i1,a1, a2,i2], [])
V_AV1  = sqa.tensor('int2av1', [x1,a1, x2,a2], [Dsym_a, Dsym_b])
V_AV2  = sqa.tensor('int2av2', [x1,a1, a2,x2], [])
deltaC = sqa.tensor('deltac', [i1,i2], [hsym])
deltaA = sqa.tensor('deltaa', [x1,x2], [hsym])
deltaV = sqa.tensor('deltav', [a1,a2], [hsym])
Esempio n. 22
0
lX = sqa.index('ClX', [tag_core], True)
pX = sqa.index('ApX', [tag_active], True)
qX = sqa.index('AqX', [tag_active], True)
rX = sqa.index('ArX', [tag_active], True)
sX = sqa.index('AsX', [tag_active], True)
aX = sqa.index('VaX', [tag_virtual], True)
bX = sqa.index('VbX', [tag_virtual], True)
cX = sqa.index('VcX', [tag_virtual], True)
dX = sqa.index('VdX', [tag_virtual], True)

# Define delta functions
hsym = sqa.symmetry((1, 0), 1)
Dsym_a = sqa.symmetry((2, 1, 0, 3), 1)
Dsym_b = sqa.symmetry((0, 3, 2, 1), 1)
Dsym_c = sqa.symmetry((1, 0, 3, 2), 1)
deltaC = sqa.tensor('deltac', [id1, id2], [hsym])
deltaA = sqa.tensor('deltaa', [pd1, pd2], [hsym])
deltaV = sqa.tensor('deltav', [ad1, ad2], [hsym])

# Occupation pattern of the classes
ClassNames = [
    'vvcc', 'vvca', 'ccav', 'vvaa', 'ccaa', 'vaca', 'avca', 'vaaa', 'caaa'
]

occupations = {}
occupations['vvcc'] = [-2, 0, 2]
occupations['vvca'] = [-1, -1, 2]
occupations['ccav'] = [-2, 1, 1]
occupations['vvaa'] = [0, -2, 2]
occupations['ccaa'] = [-2, 2, 0]
occupations['vaca'] = [-1, 0, 1]
Esempio n. 23
0
print "the spin-free generator and the commutator technique"
print ""
print "!!!!! The operator space is L: <Psi|", E_ijka[0], ", ", E_bnml[
    0], "|Psi>: R !!!!!"
print "@@@ SIGMA(Ai, Aj, Ak, Va) <-- H(Ai, Aj, Ak, Va; Vb, Am, Al, Ak) T(Ak, Al, Am, Vb)"
print ""

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
Esempio n. 24
0
    [gimme('va'), gimme('va')],  # vvaa
    [gimme('ac'), gimme('ac')],  # ccaa
    [gimme('vc'), gimme('aa')],  # vaca
    [gimme('ac'), gimme('va')],  # avca
    [gimme('va'), gimme('aa')],  # vaaa
    [gimme('ac'), gimme('aa')]
]  # caaa

# Construct |Psi_1> and <Psi_1|
psi1_right = []
psi1_left = []
for i in range(9):
    basis1 = sqa.sfExOp(basis[i][0])
    basis2 = sqa.sfExOp(basis[i][1])
    unique = unique_tensor(reorga_two_to_one(basis1, basis2))
    tensor = sqa.tensor('D' + class_names[i], unique, [])  #symm(unique)) #NO!
    psi1_right.append(sqa.term(1.0, [''], [tensor, basis1, basis2]))

    basis1 = sqa.sfExOp([basis[i][1][t] for t in [1, 0]])
    basis2 = sqa.sfExOp([basis[i][0][t] for t in [1, 0]])
    unique = unique_tensor(reorga_two_to_one(basis1, basis2))
    tensor = sqa.tensor('D' + class_names[i], unique, [])  #symm(unique)) #NO!
    psi1_left.append(sqa.term(1.0, [''], [tensor, basis1, basis2]))

# (LOG if want to debug)
if print_log:
    print '//'
    print '// With the unique tensors found, |Psi1> is:'
    for right_term in psi1_right:
        print '// d_{:5} E_{:2} E_{:2}        Class:{:6} OccPattern:{:9}'.format(\
                              code(indices_of_Tensor(right_term)[0]),\
k = sqa.index('Ak', [tag_active],  True)
l = sqa.index('Al', [tag_active],  True)
c = sqa.index('Vc', [tag_virtual], True)
d = sqa.index('Vd', [tag_virtual], True)

hsym   = sqa.symmetry((1,0), 1)
Dsym_a = sqa.symmetry((2,1, 0,3), 1)
Dsym_b = sqa.symmetry((0,3, 2,1), 1)
Dsym_c = sqa.symmetry((1,0, 3,2), 1)
Tsym   = sqa.symmetry((0,1, 2,3), 1)

E_ijab = [sqa.sfExOp([i, j, a, b])]
E_dclk = [sqa.sfExOp([d, c, l, k])]

T_dclk = [sqa.tensor('T2', [k, l, c, d], [Tsym])]

print ""
print "Evaluation of the IC-MRCI Hamiltonian elements"
print "based on the spin-free generator"
print ""
print "!!!!! The operator space is L: <Psi|", E_ijab[0], E_dclk[0], "|Psi>: R !!!!!"
print "@@@ SIGMA(Ai, Aj, Va, Vb) <-- sum_{klcd} H(Ai, Aj, Va, Vb; Vd, Vc, Al, Ak) T(Ak, Al, Vc, Vd)"
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)
Esempio n. 26
0
x1 = sqa.index('Au', [tag_active], True)
x2 = sqa.index('Av', [tag_active], True)
i1 = sqa.index('Cm', [tag_core], True)
i2 = sqa.index('Cn', [tag_core], True)
a1 = sqa.index('Vg', [tag_virtual], True)
a2 = sqa.index('Vh', [tag_virtual], True)

# Define symmetry classes
hsym = sqa.symmetry((1, 0), 1)
Dsym_a = sqa.symmetry((2, 1, 0, 3), 1)
Dsym_b = sqa.symmetry((0, 3, 2, 1), 1)
Dsym_c = sqa.symmetry((1, 0, 3, 2), 1)

# 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', [a, b, i, j], [Dsym_c])
Cout = sqa.tensor('b', [c, d, l, k], [Dsym_c])
if (withC):
    Op1 = sqa.term(1.0, [''], [Cin, sqa.sfExOp([a, i]), sqa.sfExOp([b, j])])
    Op2 = sqa.term(1.0, [''], [Cout, sqa.sfExOp([k, d]), sqa.sfExOp([l, c])])
else:
    Op1 = sqa.term(1.0, [''], [sqa.sfExOp([a, i]), sqa.sfExOp([b, j])])
    Op2 = sqa.term(1.0, [''], [sqa.sfExOp([k, d]), sqa.sfExOp([l, c])])
result = sqa.normalOrder(sqa.multiplyTerms(Op2, Op1))

# Simplify the result
tag_active  = sqa.options.active_type
tag_virtual = sqa.options.virtual_type

k = sqa.index('Ak', [tag_active],  True)
l = sqa.index('Al', [tag_active],  True)
m = sqa.index('Am', [tag_active], True)
c = sqa.index('Vc', [tag_virtual], True)

hsym   = sqa.symmetry((1,0), 1)
Dsym_a = sqa.symmetry((2,1, 0,3), 1)
Dsym_b = sqa.symmetry((0,3, 2,1), 1)
Dsym_c = sqa.symmetry((1,0, 3,2), 1)
Tsym   = sqa.symmetry((0,1, 2,3), 1)

E_cmlk = [sqa.sfExOp([c, m, l, k])]
T_klmc = [sqa.tensor('T2', [k, l, m, c], [Tsym])]

print ""
print "Evaluation of the IC-MRCI Hamiltonian elements"
print "based on the spin-free generator"
print ""
print "!!!!! The operator space is L: <Psi|",  E_cmlk[0], "|Psi>: R !!!!!"
print "@@@ SIGMA_0 <-- sum_{klcd} H(0; Vd, Vc, Al, Ak) T(Ak, Al, Vc, Vd)"
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)
Esempio n. 28
0
i4 = sqa.index('Cp',  [tag_core],    True)
a1 = sqa.index('Vg',  [tag_virtual], True)
a2 = sqa.index('Vh',  [tag_virtual], True)
a3 = sqa.index('Ve',  [tag_virtual], True)
a4 = sqa.index('Vf',  [tag_virtual], True)

L = sqa.index('La',  [tag_auxiliary], True)

# Define symmetry classes
hsym   = sqa.symmetry((1,0), 1)
Dsym_a = sqa.symmetry((2,1, 0,3), 1)
Dsym_b = sqa.symmetry((0,3, 2,1), 1)
Dsym_c = sqa.symmetry((1,0, 3,2), 1)

# Define tensors
K_C    = sqa.tensor('int1c', [i1,i2], [hsym])
K_A    = sqa.tensor('int1a', [x1,x2], [hsym])
K_V    = sqa.tensor('int1v', [a1,a2], [hsym])
V_CA1l = sqa.tensor('int2Lcc', [L,i1,i2], [])
V_CA1r = sqa.tensor('int2Laa', [L,x1,x2], [])
V_CA2l = sqa.tensor('int2Lca', [L,i1,x2], [])
V_CA2r = sqa.tensor('int2Lac', [L,x1,i2], [])
V_CV1l = sqa.tensor('int2Lcc', [L,i1,i2], [])
V_CV1r = sqa.tensor('int2Lvv', [L,a1,a2], [])
V_CV2l = sqa.tensor('int2Lcv', [L,i1,a2], [])
V_CV2r = sqa.tensor('int2Lvc', [L,a1,i2], [])
V_AV1l = sqa.tensor('int2Laa', [L,x1,x2], [])
V_AV1r = sqa.tensor('int2Lvv', [L,a1,a2], [])
V_AV2l = sqa.tensor('int2Lav', [L,x1,a2], [])
V_AV2r = sqa.tensor('int2Lva', [L,a1,x2], [])
V_Cl   = sqa.tensor('int2Lcc', [L,i1,i3], [])
Esempio n. 29
0
i1  = sqa.index('Cm',  [tag_core],    True)
i2  = sqa.index('Cn',  [tag_core],    True)
i3  = sqa.index('Co',  [tag_core],    True)
i4  = sqa.index('Co1',  [tag_core],    True)
a1  = sqa.index('Vg',  [tag_virtual], True)
a2  = sqa.index('Vh',  [tag_virtual], True)
a3  = sqa.index('Ve',  [tag_virtual], True)
a4  = sqa.index('Vf',  [tag_virtual], True)


#h0 one body term
hsym   = sqa.symmetry((1,0), 1)
Dsym_a = sqa.symmetry((2,1, 0,3), 1)
Dsym_b = sqa.symmetry((0,3, 2,1), 1)
Dsym_c = sqa.symmetry((1,0, 3,2), 1)
K_C = sqa.tensor('int1c', [i1,i2], [hsym])
K_A = sqa.tensor('int1a', [x1,x2], [hsym])
K_V = sqa.tensor('int1v', [a1,a2], [hsym])
V_CA1 = sqa.tensor('int2ca1', [i1,x1, i2,x2], [Dsym_a, Dsym_b])
V_CA2 = sqa.tensor('int2ca2', [i1,x1, x2,i2], [])

V_CV1 = sqa.tensor('int2cv1', [i1,a1, i2,a2], [Dsym_a, Dsym_b])
V_CV2 = sqa.tensor('int2cv2', [i1,a1, a2,i2], [])

V_AV1 = sqa.tensor('int2av1', [x1,a1, x2,a2], [Dsym_a, Dsym_b])
V_AV2 = sqa.tensor('int2av2', [x1,a1, a2,x2], [])

V_C = sqa.tensor('int2c', [i1,i2, i3,i4], [Dsym_a, Dsym_b, Dsym_c])
V_A = sqa.tensor('int2a', [x1,x2, x3,x4], [Dsym_a, Dsym_b, Dsym_c])
V_V = sqa.tensor('int2v', [a1,a2, a3,a4], [Dsym_a, Dsym_b, Dsym_c])
Esempio n. 30
0
       'ccaa','vaca','avca','vaaa','caaa']
basis=[[gimme('vc'),gimme('vc')],\
       [gimme('vc'),gimme('va')],\
       [gimme('ac'),gimme('vc')],\
       [gimme('va'),gimme('va')],\
       [gimme('ac'),gimme('ac')],\
       [gimme('vc'),gimme('aa')],\
       [gimme('ac'),gimme('va')],\
       [gimme('va'),gimme('aa')],\
       [gimme('ac'),gimme('aa')]]
Psi1Right = []
Psi1Left = []
for i in range(9):
    basis1 = sqa.sfExOp(basis[i][0])
    basis2 = sqa.sfExOp(basis[i][1])
    tensor = sqa.tensor('D' + names[i],
                        unique_tensor(from_basis(basis1, basis2)), [])
    print '1:',code(unique_tensor (from_basis(basis1,basis2))),\
               code(unique_tensor_old(from_basis(basis1,basis2)))
    Psi1Right.append(sqa.term(1.0, [''], [tensor, basis1, basis2]))

    basis1 = sqa.sfExOp([basis[i][1][t] for t in [1, 0]])
    basis2 = sqa.sfExOp([basis[i][0][t] for t in [1, 0]])
    tensor = sqa.tensor('D' + names[i],
                        unique_tensor(from_basis(basis1, basis2)), [])
    print '1:',code(unique_tensor (from_basis(basis1,basis2))),\
               code(unique_tensor_old(from_basis(basis1,basis2)))
    Psi1Left.append(sqa.term(1.0, [''], [tensor, basis1, basis2]))

# H -----------------------------------------------------------------------------------------------
#   H = t E2 + w E4
#   where for "E4":
Esempio n. 31
0
i2 = sqa.index('Cn', [tag_core], True)
i3 = sqa.index('Co', [tag_core], True)
i4 = sqa.index('Cp', [tag_core], True)
a1 = sqa.index('Vg', [tag_virtual], True)
a2 = sqa.index('Vh', [tag_virtual], True)
a3 = sqa.index('Ve', [tag_virtual], True)
a4 = sqa.index('Vf', [tag_virtual], True)

# Define symmetry classes
hsym = sqa.symmetry((1, 0), 1)
Dsym_a = sqa.symmetry((2, 1, 0, 3), 1)
Dsym_b = sqa.symmetry((0, 3, 2, 1), 1)
Dsym_c = sqa.symmetry((1, 0, 3, 2), 1)

# Define tensors
K_C = sqa.tensor('Wcc', [i1, i2], [hsym])
K_A = sqa.tensor('Waa', [x1, x2], [hsym])
K_V = sqa.tensor('Wvv', [a1, a2], [hsym])
V_A = sqa.tensor('Waaaa', [x1, x2, x3, x4], [Dsym_a, Dsym_b, Dsym_c])
V_C = sqa.tensor('Wcccc', [i1, i2, i3, i4], [Dsym_a, Dsym_b, Dsym_c])
V_V = sqa.tensor('Wvvvv', [a1, a2, a3, a4], [Dsym_a, Dsym_b, Dsym_c])
V_CA1 = sqa.tensor('Wcaca', [i1, x1, i2, x2], [Dsym_a, Dsym_b])
V_CA2 = sqa.tensor('Wcaac', [i1, x1, x2, i2], [])
V_CV1 = sqa.tensor('Wcvcv', [i1, a1, i2, a2], [Dsym_a, Dsym_b])
V_CV2 = sqa.tensor('Wcvvc', [i1, a1, a2, i2], [])
V_AV1 = sqa.tensor('Wavav', [x1, a1, x2, a2], [Dsym_a, Dsym_b])
V_AV2 = sqa.tensor('Wavva', [x1, a1, a2, x2], [])
deltaC = sqa.tensor('deltac', [i1, i2], [hsym])
deltaA = sqa.tensor('deltaa', [x1, x2], [hsym])
deltaV = sqa.tensor('deltav', [a1, a2], [hsym])
Esempio n. 32
0
# definitions
tg_c = sqa.options.core_type
tg_a = sqa.options.active_type
tg_v = sqa.options.virtual_type
tg_t = tg_c + tg_a + tg_v

i = [sqa.index('i%i' % j, [tg_c], True) for j in range(8)]
r = [sqa.index('r%i' % j, [tg_a], True) for j in range(8)]
a = [sqa.index('a%i' % j, [tg_v], True) for j in range(8)]
m = [sqa.index('m%i' % j, [tg_t], True) for j in range(8)]
n = [sqa.index('n%i' % j, [tg_t], True) for j in range(8)]

t_sym = [sqa.symmetry((1, 0, 3, 2), 1)]
W_sym = [sqa.symmetry((1, 0, 3, 2), 1), sqa.symmetry((0, 3, 2, 1), 1)]

W_ts_ket = [sqa.tensor('W', [a[2], a[3], i[2], i[3]], W_sym)]
W_ops_ket = [sqa.sfExOp([i[2], i[3], a[2], a[3]])]

t_ts_bra = [sqa.tensor('t2', [i[0], i[1], a[0], a[1]], t_sym)]
t_ops_bra = [sqa.sfExOp([a[0], a[1], i[0], i[1]])]

terms = []
#Op1   = t_ts_ket_1 + t_ops_ket_1 + W_ts_ket_1 + W_ops_ket_1 + W_ts_bra_1 + W_ops_bra_1 + t_ts_bra_1 + t_ops_bra_1
#terms.append( sqa.term( 1.0, [], Op1) )
#Op2 = t_ts_ket_2 + t_ops_ket_2 + W_ts_ket_2 + W_ops_ket_2 + W_ts_bra_1 + W_ops_bra_1 + t_ts_bra_1 + t_ops_bra_1
#terms.append( sqa.term( 1.0, [], Op2) )
#Op3 = t_ts_ket_1 + t_ops_ket_1 + W_ts_ket_1 + W_ops_ket_1 + W_ts_bra_2 + W_ops_bra_2 + t_ts_bra_2 + t_ops_bra_2
#terms.append( sqa.term( 1.0, [], Op3) )
#Op4 = t_ts_ket_2 + t_ops_ket_2 + W_ts_ket_2 + W_ops_ket_2 + W_ts_bra_2 + W_ops_bra_2 + t_ts_bra_2 + t_ops_bra_2
#Op4 = t_ops_ket_2 + W_ops_ket_2 + W_ops_bra_2 + t_ops_bra_2
#Op4 = t_ops_ket_2 + W_ops_ket_2
Esempio n. 33
0
x1 = sqa.index('Au',  [tag_active],  True)
x2 = sqa.index('Av',  [tag_active],  True)
i1 = sqa.index('Cm',  [tag_core],    True)
i2 = sqa.index('Cn',  [tag_core],    True)
a1 = sqa.index('Vg',  [tag_virtual], True)
a2 = sqa.index('Vh',  [tag_virtual], True)

# Define symmetry classes
hsym   = sqa.symmetry((1,0), 1)
Dsym_a = sqa.symmetry((2,1, 0,3), 1)
Dsym_b = sqa.symmetry((0,3, 2,1), 1)
Dsym_c = sqa.symmetry((1,0, 3,2), 1)

# 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
print ""
print "Evaluation of the IC-MRCI Hamiltonian elements"
print "based on the spin-free generator"
print ""
print "!!!!! The operator space is L: <Psi|", E_ijka , "|Psi>: R !!!!!"
print "@@@ SIGMA(Ai, Aj, Ak, Va) <--  H(Ai, Aj, Ak, Va;0) T(0)"
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, ["T0"], E_ijka + [h_pq] + E_pq)
        
        batch1 = sqa.normalOrder(term1)

        sqa.removeVirtOps_sf(batch1)

        for t in batch1:
            t.contractDeltaFuncs_new()

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