'size': 26 }) ## for Palatino and other serif fonts use: #rc('font',**{'family':'serif','serif':['Palatino']}) rc('text', usetex=True) # matplotlib.rcParams['figure.dpi'] = 400 import numpy as np import scipy as sp import math from Calculations import plot_adjacency_graph N = 12 pxp = unlocking_System([0], "periodic", 2, N) pxp.gen_basis() pxp_syms = model_sym_data(pxp, [translational(pxp)]) H = Hamiltonian(pxp, pxp_syms) H.site_ops[1] = np.array([[0, 0], [1, 0]]) H.site_ops[2] = np.array([[0, 1], [0, 0]]) H.model = np.array([[0, 1, 2, 0], [0, 2, 1, 0]]) H.model_coef = np.array([1, 1]) k = [0] H.gen(k) # H.gen() # H0=spin_Hamiltonian(pxp,"x",pxp_syms) # H0.gen(k) # # H = H_operations.add(H0,H,np.array([1,1/2])) # H = H_operations.add(H0,H,np.array([1,1]))
from matplotlib import rc rc('font', **{ '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 = 18 pxp = unlocking_System([0], "periodic", 2, N) pxp.gen_basis() pxp_syms = model_sym_data(pxp, [parity(pxp), translational(pxp)]) H = spin_Hamiltonian(pxp, "x", pxp_syms) k = [0, 0] H.gen(k) H.sector.find_eig(k) e = H.sector.eigvalues(k) to_del = [] for n in range(0, np.size(e, axis=0)): if np.abs(e[n]) < 1e-10: to_del = np.append(to_del, n) for n in range(np.size(to_del, axis=0) - 1, -1, -1): e = np.delete(e, to_del[n]) #rectangular billiards # n_max = 200
return psi / np.power(np.vdot(psi, psi), 0.5) def exp(Q, psi): return np.vdot(psi, np.dot(Q, psi)) def var(Q, psi): Q2 = np.dot(Q, Q) return exp(Q2, psi) - exp(Q, psi)**2 N = 12 pxp = unlocking_System([0], "periodic", 2, N) pxp.gen_basis() pxp_syms = model_sym_data(pxp, [translational_general(pxp, order=4), PT(pxp)]) H = Hamiltonian(pxp, pxp_syms) H.site_ops[1] = np.array([[0, 1], [1, 0]]) H.model = np.array([[0, 1, 0], [0, 1, 1, 1, 0], [0, 1, 1, 1, 0]]) H.model_coef = np.array([1, -1, -1]) H.uc_size = np.array([1, 4, 4]) H.uc_pos = np.array([0, 3, 1]) H.gen() H.sector.find_eig() z = zm_state(4, 1, pxp) eig_overlap(z, H).plot() plt.show() fidelity(z, H).plot(np.arange(0, 20, 0.01), z)
import matplotlib.pyplot as plt 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,
from matplotlib import rc rc('font', **{ '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):
'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 = 10 J = 1 hx = 1 hz = 1 #init system system = unlocking_System([0, 1], "periodic", 2, N) system.gen_basis() system_syms = model_sym_data(system, [translational(system)]) #create Hamiltonian H = Hamiltonian(system, system_syms) H.site_ops[1] = np.array([[0, 1], [1, 0]]) H.site_ops[2] = np.array([[-1, 0], [0, 1]]) H.model = np.array([[1, 1], [2], [1]]) H.model_coef = np.array([J, hz, hx]) #dynamics following quench from |00000> psi = ref_state(0, system) k = system_syms.find_k_ref(psi.ref) for n in range(0, np.size(k, axis=0)): H.gen(k[n]) H.sector.find_eig(k[n]) print(H.sector.eigvalues(k[n]))
system = unlocking_System([0, 1], "periodic", 2, 4) n = 2 #no singlets to add sites = np.arange(0, system.N) #combinatrocs, all possible site indexes to modify 2n spins, to insert n singlets singlet_sites = np.array((list(itertools.combinations(sites, 2 * n)))) #of these sites, form all possible pairs (all possible singlet couplings) no_pairs = int(np.size(singlet_sites, axis=1) / 2) #For each pair, two ways to insert a singlet. either the first index has spin #up, second down or vice versa. Label as 0,1; find all poss ways unique up to inversion pair_basis_system = unlocking_System([0, 1], "periodic", 2, no_pairs) if no_pairs > 1: pair_sym = model_sym_data(pair_basis_system, [inversion(pair_basis_system)]) unique_pair_refs = pair_sym.find_block_refs([0]) unique_pair_bits = np.zeros((np.size(unique_pair_refs), no_pairs), dtype=int) for n in range(0, np.size(unique_pair_refs, axis=0)): unique_pair_bits[n] = pair_basis_system.basis[pair_basis_system.keys[ unique_pair_refs[n]]] else: unique_pair_bits = np.array([[0]]) # print(unique_pair_bits) ref_pairs = np.zeros(2) from combinatorics import all_pairs for i in range(0, np.size(singlet_sites, axis=0)): # print(" ") for pair in all_pairs(list(singlet_sites[i])):
return Hp class su2LW_data: def __init__(self, raisingKey, lw, casimir_Eig, Hz_Eig): self.raisingKey = raisingKey self.lw = lw self.casimir_Eig = casimir_Eig self.Hz_Eig = Hz_Eig #init system N = 18 pxp = unlocking_System([0], "periodic", 2, N) pxp.gen_basis() pxp_syms = model_sym_data(pxp, [translational(pxp), parity(pxp)]) uc_size = 2 decompBasis = unlocking_System([0, 1], "periodic", 2, uc_size) decompBasis.gen_basis() decompSym = model_sym_data(decompBasis, [inversion(decompBasis)]) block_refs = decompSym.find_block_refs([0]) block_refs = np.delete(block_refs, 0, axis=0) block_basis = np.zeros((np.size(block_refs), uc_size)) for n in range(0, np.size(block_refs, axis=0)): block_basis[n] = decompBasis.basis[decompBasis.keys[block_refs[n]]] from Diagnostics import print_wf su2RootData = dict() count = 0 pbar = ProgressBar()