sys.path.append(file_dir) from Hamiltonian_Classes import Hamiltonian, H_table, clock_Hamiltonian, spin_Hamiltonian from System_Classes import unlocking_System from Symmetry_Classes import translational, parity, model_sym_data, charge_conjugation # from Plotting_Classes import eig_overlap,fidelity,entropy,energy_basis from Non_observables import zm from Construction_functions import bin_to_int_base_m, int_to_bin_base_m, cycle_bits_state from Search_functions import find_index_bisection from State_Classes import zm_state, sym_state, prod_state, bin_state, ref_state from rw_functions import save_obj, load_obj from Calculations import level_stats, fidelity, eig_overlap, entropy, site_precession, site_projection, time_evolve_state pxp = unlocking_System([0], "periodic", 2, 8) pxp.gen_basis() pxp_syms = model_sym_data(pxp, [translational(pxp), parity(pxp)]) def find_hamming_sectors(state_bits): #organize states via hamming distance from Neel hamming_sectors = dict() for n in range(0, pxp.N + 1): hamming_sectors[n] = [] for n in range(0, pxp.dim): h = 0 for m in range(0, pxp.N, 1): if pxp.basis[n][m] != state_bits[m]: h = h + 1 hamming_sectors[int(h)] = np.append(hamming_sectors[int(h)], pxp.basis_refs[n]) return hamming_sectors
from progressbar import ProgressBar from scipy.sparse import linalg as sparse_linalg from Hamiltonian_Classes import Hamiltonian, H_table, clock_Hamiltonian, spin_Hamiltonian from System_Classes import unlocking_System from Symmetry_Classes import translational, parity, model_sym_data, charge_conjugation from Construction_functions import bin_to_int_base_m, int_to_bin_base_m, cycle_bits_state from Search_functions import find_index_bisection from State_Classes import zm_state, sym_state, prod_state from rw_functions import save_obj, load_obj pxp = unlocking_System([0], "periodic", 3, 8) pxp.gen_basis() pxp_syms = model_sym_data(pxp, [ translational(pxp), parity(pxp), ]) # pxp_syms = model_sym_data(pxp,[translational(pxp)]) H1 = clock_Hamiltonian(pxp, pxp_syms) H2 = spin_Hamiltonian(pxp, "x", pxp_syms) e_clock, u_clock = np.linalg.eigh(H1.site_ops[1]) e_spin, u_spin = np.linalg.eigh(H2.site_ops[1]) spin2clock_u = np.dot(u_spin, np.conj(np.transpose(u_clock))) clock2spin_u = np.dot(u_clock, np.conj(np.transpose(u_spin))) root6 = np.power(6, 0.5) root23 = np.power(2 / 3, 0.5) clock2spin_u = np.array([[1 / root6, root23, -1 / root6], [1 / root6 - 1j / 2, -1 / root6, -1 / root6 - 1j / 2], [1 / root6 + 1j / 2, -1 / root6,