###### construct user_basis # define maps dict maps = dict( T_block=(translation, N, 0, T_args), P_block=(parity, 2, 0, P_args), ) # define particle conservation and op dicts op_dict = dict(op=op, op_args=op_args) # define pre_check_state pre_check_state = (pre_check_state, pre_check_state_args ) # None gives a null pinter to args # create user basis basis = user_basis(np.uint32, N, op_dict, allowed_ops=set("xyz"), sps=2, pre_check_state=pre_check_state, Ns_block_est=300000, **maps) # print basis print(basis) # ###### construct Hamiltonian # site-coupling lists h_list = [[1.0, i] for i in range(N)] # operator string lists static = [ ["x", h_list], ] # compute Hamiltonian, no checks have been implemented no_checks = dict(check_symm=False, check_pcon=False, check_herm=False)
) # define particle conservation and op dicts pcon_dict = dict(Np=Np, next_state=next_state, next_state_args=next_state_args, get_Ns_pcon=get_Ns_pcon, get_s0_pcon=get_s0_pcon, count_particles=count_particles, count_particles_args=count_particles_args, n_sectors=n_sectors) op_dict = dict(op=op, op_args=op_args) # create user basiss basis = user_basis(np.uint32, N, op_dict, allowed_ops=set("+-nI"), sps=2, pcon_dict=pcon_dict, **maps) # # # ############ create same spinless fermion basis_1d object ############# basis_1d = spinless_fermion_basis_1d(N, Nf=Np, kblock=0, pblock=1) # # # print(basis) print(basis_1d) # ############ create Hamiltonians ############# #
# define maps dict maps = dict() # define particle conservation and op dicts FW = function_wrapper(external_basis) noncommuting_bits = [(np.arange(N_half), -1)] pcon_dict = dict(Np=Np, next_state=next_state, next_state_args=next_state_args, get_Ns_pcon=FW.get_Ns_pcon, get_s0_pcon=FW.get_s0_pcon) op_dict = dict(op=op, op_args=op_args) # create user basis basis = user_basis(np.uint32, N, op_dict, allowed_ops=set("n+-"), sps=2, pcon_dict=pcon_dict, noncommuting_bits=noncommuting_bits, **maps) # create basis for subsystem noncommuting_bits = [(np.arange(3), -1)] subsys_basis = user_basis(np.uint32, 6, op_dict, allowed_ops=set("n+-"), sps=2, noncommuting_bits=noncommuting_bits) # pure state in full basis psi = np.random.normal(0, 1, size=(basis.Ns, )) psi /= np.linalg.norm(psi)
) # define particle conservation and op dicts pcon_dict = dict(Np=Np, next_state=next_state, next_state_args=next_state_args, get_Ns_pcon=get_Ns_pcon, get_s0_pcon=get_s0_pcon, count_particles=count_particles, count_particles_args=count_particles_args, n_sectors=n_sectors) op_dict = dict(op=op, op_args=op_args) # create user basiss basis = user_basis(np.uint32, N, op_dict, allowed_ops=set("+-nI"), sps=2, pcon_dict=pcon_dict, noncommuting_bits=noncommuting_bits, **maps) # # # ############ create same spinless fermion basis_1d object ############# basis_1d = spinless_fermion_basis_1d(N, Nf=Np, kblock=0, pblock=1) # # # print(basis) print(basis_1d) # ############ create Hamiltonians ############# #
P_args = np.array([N - 1], dtype=np.uint32) # ###### construct user_basis # define maps dict maps = dict( T_block=(translation, N, 0, T_args), P_block=(parity, 2, 0, P_args), ) #maps = dict(P_block=(parity,2,0,P_args), ) #maps = dict(T_block=(translation,N,0,T_args) ) op_dict = dict(op=op, op_args=op_args) # create user basiss basis = user_basis(np.uint32, N, op_dict, allowed_ops=set("xy+-nI"), sps=2, **maps) # # print(basis) # ############ create and compare Hamiltonians ############# # ##### Hamiltonian in using Majoranas # J = -np.sqrt(2.0) # hoppping U = +1.0 # nn interaction # hop_term_p = [[+0.5j * J, j, (j + 1) % N] for j in range(N)] hop_term_m = [[-0.5j * J, j, (j + 1) % N] for j in range(N)]