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