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