예제 #1
0
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
예제 #2
0
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,