def sublattice_state(v1,v2,system):
    state_bits = np.zeros(system.N)
    for n in range(0,np.size(v1)):
        state_bits[2*v1[n]] = 1
    for n in range(0,np.size(v2)):
        state_bits[2*v2[n]+1] = 1
    return bin_state(state_bits,system)
Hp[0].model_coef = np.array([1])

Hp[1] = Hamiltonian(pxp, pxp_syms)
Hp[1].site_ops[1] = np.array([[0, 0], [1, 0]])
Hp[1].site_ops[2] = np.array([[0, 1], [0, 0]])
Hp[1].model = np.array([[0, 1, 2, 0, 0], [0, 0, 1, 2, 0]])
Hp[1].model_coef = np.array([1, 1])

Hp[2] = Hamiltonian(pxp, pxp_syms)
Hp[2].site_ops[1] = np.array([[0, 0], [1, 0]])
Hp[2].site_ops[2] = np.array([[0, 1], [0, 0]])
Hp[2].site_ops[4] = np.array([[0, 0], [0, 1]])
Hp[2].model = np.array([[0, 4, 0, 1, 2, 0], [0, 1, 2, 0, 4, 0]])
Hp[2].model_coef = np.array([1, 1])

psi = bin_state(np.array([0, 1, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 0, 0]), pxp)
k = pxp_syms.find_k_ref(psi.ref)

for n in range(0, len(Hp)):
    for m in range(0, np.size(k, axis=0)):
        Hp[n].gen(k[m])

coef = np.load("./data/xy,pert_coef,10.npy")
Hp_total = deepcopy(Hp[0])
for n in range(1, len(Hp)):
    Hp_total = H_operations.add(Hp_total, Hp[n], np.array([1, coef[n - 1]]))

Hp = Hp_total
Hm = Hp_total.herm_conj()

H = H_operations.add(Hp, Hm, np.array([1, 1]))
Esempio n. 3
0
for n in range(0, np.size(root_sectors, axis=0)):
    print("\n")
    for m in range(0, np.size(root_refs[perm_key(root_sectors[n])], axis=0)):
        ref = root_refs[perm_key(root_sectors[n])][m]
        print(pxp.basis[pxp.keys[ref]], basis_perm_labels[pxp.keys[ref]])

# smaller hypercubes + hamming, for subcube identification
sub_cube_systems = dict()
sub_cube_hamming = dict()
for n in range(int(pxp.N / 2), 1, -1):
    sub_cube_systems[n] = unlocking_System([0, 1], "open", 2, n)
    sub_cube_systems[n].gen_basis()
    z_temp = np.ones(sub_cube_systems[n].N)
    z_temp[np.size(z_temp, axis=0) - 1] = 0
    z_temp = bin_state(z_temp, sub_cube_systems[n])
    sub_cube_hamming[n] = find_hamming_sectors(z_temp.bits,
                                               sub_cube_systems[n])

#find pos of zeros + ones for subcubes
#loc of poss 1 that is zero
for n in range(0, np.size(root_sectors, axis=0)):
    for m in range(0, np.size(root_refs[perm_key(root_sectors[n])], axis=0)):
        ref = root_refs[perm_key(root_sectors[n])][m]
        state = pxp.basis[pxp.keys[ref]]
        poss_zero_loc = []
        for i in range(0, np.size(state, axis=0)):
            if i % 2 != 0:
                if state[i] == 0:
                    if i == 0:
                        im1 = pxp.N - 1
Esempio n. 4
0
H.model_coef = np.array([V,1,1])
# H.model = np.array([[0,1]])
# H.model_coef = np.array([1])

k=[0]
H.gen(k)
H.sector.find_eig(k)

block_refs = pxp_syms.find_block_refs(k)
block_keys = dict()
for n in range(0,np.size(block_refs,axis=0)):
    block_keys[block_refs[n]] = n

neel=zm_state(2,1,pxp,1)
pol = ref_state(0,pxp)
all_ones = bin_state(np.append([0],np.ones(pxp.N-1)),pxp)

neel_trans = np.zeros(np.size(block_refs))
pol_trans = np.zeros(np.size(block_refs))
all_ones_trans = np.zeros(np.size(block_refs))

neel_trans[block_keys[neel.ref]] = 1
pol_trans[block_keys[pol.ref]] = 1
all_ones_trans[block_keys[all_ones.ref]] = 1

neel_trans_energy = np.dot(np.conj(np.transpose(H.sector.eigvectors(k))),neel_trans)
pol_trans_energy = np.dot(np.conj(np.transpose(H.sector.eigvectors(k))),pol_trans)
all_ones_trans_energy = np.dot(np.conj(np.transpose(H.sector.eigvectors(k))),all_ones_trans)

t=np.arange(0,80,0.01)
f_neel = np.zeros(np.size(t))