def pcp_3site(self, Nc): pxp = unlocking_System(np.arange(0, self.base), "open", self.base, 3) pxp.gen_basis() C = clock_Hamiltonian(pxp).site_ops[1] H = Hamiltonian(pxp) H.site_ops[1] = C H.model = np.array([[0, 1, 0]]) H.model_coef = np.array([[1]]) H.gen() H.sector.find_eig() return H
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, -1 / root6 + 1j / 2]]) print(np.shape(spin2clock_u)) print(np.shape(clock2spin_u)) P = np.array([[1, 0, 0], [0, 0, 0], [0, 0, 0]])
'family': 'sans-serif', 'sans-serif': ['Computer Modern'], 'size': 26 }) ## for Palatino and other serif fonts use: #rc('font',**{'family':'serif','serif':['Palatino']}) rc('text', usetex=True) # matplotlib.rcParams['figure.dpi'] = 400 N = 8 base = 3 pxp = unlocking_System([0], "periodic", base, N) pxp.gen_basis() pxp_syms = model_sym_data(pxp, [translational(pxp)]) H = clock_Hamiltonian(pxp, pxp_syms) # H = spin_Hamiltonian(pxp,"x",pxp_syms) # H = clock_Hamiltonian(pxp,pxp_syms) H.gen() H.sector.find_eig() z = zm_state(2, 1, pxp) krylov_dim = 2 * pxp.N def gen_krylov_basis(H, dim, init_state, system, orth=False): krylov_basis = init_state.prod_basis() current_state = krylov_basis for n in range(0, dim): next_state = np.dot(H, current_state) next_state = next_state / np.power(np.vdot(next_state, next_state),