Hello everyone. I am trying to calculate and plot dispersion relation for a 4x4 matrix model. But I want to use 4 different lattices with names a_up, b_up,a_down, B_down. That is my basis. But I am not able to reproduce the same structure when I am using four different lattices instead 4x4 matrices. Here are my codes
# Code With Matrix use: " #Onsite energy\n", " sys[lat.shape(cube,(0,0,0))] = (C + 2 * D1 + 4 * D2) * s0s0 + (M + 2 * B1 + 4 * B2) *s0sz\n", " #hopping in x direction \n", " sys[kwant.builder.HoppingKind((1, 0,0), lat,lat)] = - D2 * s0s0 - B2 * s0sz +A2 * 0.5j * sxsx\n", " #hopping in y direction \n", " sys[kwant.builder.HoppingKind((0,1,0), lat,lat)] = - D2 *s0s0 -B2 * s0sz + A2 * 0.5j * sysx\n", " #hopping in z direction \n", " sys[kwant.builder.HoppingKind((0,0,1), lat,lat)] = - D1 * s0s0 -B1 * s0sz + A1 * 0.5j * szsx \n", #Code with lattice desription: "a_up = kwant.lattice.general([(1,0,0),(0,1,0),(0,0,1)], name= 'a_up')\n", "b_up = kwant.lattice.general([(1,0,0),(0,1,0),(0,0,1)], name= 'b_up')\n", "a_down = kwant.lattice.general([(1,0,0),(0,1,0),(0,0,1)], name= 'a_down')\n", "b_down= kwant.lattice.general([(1,0,0),(0,1,0),(0,0,1)], name= 'b_down')" " # ONSITE POTENTIAL\n", " \n", " \n", " sys[a_up.shape(cube,(0,0,0))] = (M + 2 * B1 + 4 * B2)\n", " sys[b_up.shape(cube,(0,0,0))] = -(M + 2 * B1 + 4 * B2)\n", " sys[a_down.shape(cube,(0,0,0))] = (M + 2 * B1 + 4 * B2)\n", " sys[b_down.shape(cube,(0,0,0))] = -(M + 2 * B1 + 4 * B2)\n", " \n", " # HoppING TERM along x-direction\n", " \n", " #1. Diagonal terms\n", " sys[kwant.builder.HoppingKind((1,0,0),a_up, a_up)] = -B2\n", " sys[kwant.builder.HoppingKind((1,0,0),b_up, b_up)] = B2\n", " sys[kwant.builder.HoppingKind((1,0,0),a_down, a_down)] = -B2\n", " sys[kwant.builder.HoppingKind((1,0,0),b_down, b_down)] = B2\n", " \n", " #2. Non-Diagonal terms\n", " sys[kwant.builder.HoppingKind((1,0,0), a_up,b_down)] = A2 * 0.5j\n", " sys[kwant.builder.HoppingKind((1,0,0), a_down,b_up)] = A2 * 0.5j\n", " sys[kwant.builder.HoppingKind((1,0,0), b_down,a_up)] = A2 * 0.5j\n", " sys[kwant.builder.HoppingKind((1,0,0), b_up,a_down)] = A2 * 0.5j\n", " \n", " \n", " # Hopping along y-direction\n", " \n", " #1. Diagonal Terms\n", " sys[kwant.builder.HoppingKind((0,1,0),a_up, a_up)] = -B2\n", " sys[kwant.builder.HoppingKind((0,1,0),b_up, b_up)] = B2\n", " sys[kwant.builder.HoppingKind((0,1,0),a_down, a_down)] = -B2\n", " sys[kwant.builder.HoppingKind((0,1,0),b_down, b_down)] = B2\n", " \n", " #2. non diagoal terms\n", " sys[kwant.builder.HoppingKind((0,1,0), a_up,b_down)] = -1j* A2 * 0.5j\n", " sys[kwant.builder.HoppingKind((0,1,0), a_down,b_up)] = -1j* A2 * 0.5j\n", " sys[kwant.builder.HoppingKind((0,1,0), b_down,a_up)] = 1j* A2 * 0.5j\n", " sys[kwant.builder.HoppingKind((0,1,0), b_up,a_down)] = 1j* A2 * 0.5j\n", " \n", " \n", " \n", " # Hopping along z-direction\n", " \n", " #1. Diagonal Terms\n", " sys[kwant.builder.HoppingKind((0,0,1),a_up, a_up)] = -B1\n", " sys[kwant.builder.HoppingKind((0,0,1),b_up, b_up)] = B1\n", " sys[kwant.builder.HoppingKind((0,0,1),a_down, a_down)] = -B1\n", " sys[kwant.builder.HoppingKind((0,0,1),b_down, b_down)] = B1\n", " \n", " #2. non diagoal terms\n", " sys[kwant.builder.HoppingKind((0,0,1), b_up,a_up)] = A1 * 0.5j\n", " sys[kwant.builder.HoppingKind((0,0,1), a_up,b_up)] = A1 * 0.5j\n", " sys[kwant.builder.HoppingKind((0,0,1), b_down,a_down)] = A1 * 0.5j\n", " sys[kwant.builder.HoppingKind((0,0,1), b_down,b_down)] = A1 * 0.5j\n", " \n", My problem is I am not getting the same band structure from both the codes. I know there is some problem with the way I have put my hoppings in the second code. But I have no clear idea about hoppingkind function. I think I should not use in the later case. Please help me correct the problem. Thanks! ANANT VIJAY VARMA Research Scholar IISER-KOLKATA WEST BENGAL.