struc_disorder_one = kite.StructuralDisorder(lattice, concentration=conc) struc_disorder_two = kite.StructuralDisorder(lattice, concentration=conc) struc_disorder_one.add_structural_disorder( # in this way we can add onsite disorder in the form [unit cell], 'sublattice', value ([+0, +0], 'Aup', +disorder_strength), ([+0, +0], 'Adown', -disorder_strength), ) # It is possible to add multiple different disorder type which should be forwarded to the export_lattice function # as a list. struc_disorder_two.add_structural_disorder( # in this way we can add onsite disorder in the form [unit cell], 'sublattice', value ([+0, +0], 'Bup', +disorder_strength), ([+0, +0], 'Bdown', -disorder_strength), ) disorder = kite.Disorder(lattice) # Disorder definition disorder_deviation_and = disorder_strength_and / (2 * sqrt(3)) disorder.add_disorder(['Aup', 'Adown'], dis_type='uniform', mean_value=0, standard_deviation=disorder_deviation_and) disorder.add_disorder(['Bup', 'Bdown'], dis_type='uniform', mean_value=0, standard_deviation=disorder_deviation_and) b1, b2 = lattice.reciprocal_vectors() vf = 1.5 * a_cc * np.abs( t) #: [ev * nm] redefined fermi velocity in natural units k = np.abs(energy / vf) #: [nm^-1] find the wavevector length
def square_lattice(onsite=0): a1 = np.array([1, 0]) a2 = np.array([0, 1]) lat = pb.Lattice(a1=a1, a2=a2) lat.add_sublattices(('A', [0, 0], onsite)) lat.add_hoppings(([1, 0], 'A', 'A', -1), ([0, 1], 'A', 'A', -1)) return lat std_dev = W * W / 12.0 mean = 0 lattice = square_lattice() disorder = kite.Disorder(lattice) disorder.add_disorder('A', 'Uniform', mean, std_dev) # min_B = 2.019368814847448*(2048.0/L)*B # mod = kite.Modification(magnetic_field=min_B) nx = ny = 8 lx = ly = L energy = -3.5 # name = 'square_lattice_WL_B' + str(B) + '_W' + str(W) + '_N' + str(N) + '_L' + str(L) + '.h5' name = 'square_lattice_WL' + '_W' + str(W) + '_N' + str(N) + '_L' + str( L) + '.h5' b1, b2 = lattice.reciprocal_vectors() Gamma = [0, 0] R = b1[0:2] + b2[0:2]
def graphene_initial(onsite=(0, 0)): """Return the basic lattice specification for monolayer graphene with nearest neighbor""" theta = np.pi / 3 a1 = np.array([1 + np.cos(theta), np.sin(theta)]) a2 = np.array([0, 2 * np.sin(theta)]) # create a lattice with 2 primitive vectors lat = pb.Lattice(a1=a1, a2=a2) # Add sublattices lat.add_sublattices( # name, position, and onsite potential ('A', [0, 0], onsite[0]), ('B', [1, 0], onsite[1])) # Add hoppings lat.add_hoppings( # inside the main cell, between which atoms, and the value ([0, 0], 'A', 'B', -1 / EnergyScale), # between neighboring cells, between which atoms, and the value ([-1, 0], 'A', 'B', -1 / EnergyScale), ([-1, 1], 'A', 'B', -1 / EnergyScale)) # Add disorder # Each sublattice can have different disorder. If there are multiple orbitals at one sublattice, one needs to add # disorder vector of the same size as the number of orbitals. Type of disorder available are Gaussian, # Deterministic and Uniform. Each of the needs the have mean value, and standard deviation, where standard deviation # of deterministic disorder should be 0. disorder = kite.Disorder(lat) disorder.add_disorder('A', 'Deterministic', 0.0, 0) disorder.add_disorder('B', 'Deterministic', 0.0, 0) # Same procedure as adding the hopping + concentration node0 = [[+0, +0], 'A'] node1 = [[+0, +0], 'B'] node2 = [[+1, +0], 'A'] node3 = [[+0, +1], 'B'] node4 = [[+0, +1], 'A'] node5 = [[-1, +1], 'B'] struc_disorder_one = kite.StructuralDisorder(lat, concentration=0.035) struc_disorder_one.add_structural_disorder( (*node0, *node1, timp / EnergyScale), (*node1, *node2, timp / EnergyScale), (*node2, *node3, timp / EnergyScale), (*node3, *node4, timp / EnergyScale), (*node4, *node5, timp / EnergyScale), (*node5, *node0, timp / EnergyScale), # (*node0, *node2, nu / EnergyScale), (*node2, *node4, nu / EnergyScale), (*node4, *node0, nu / EnergyScale), (*node1, *node3, nu / EnergyScale), (*node3, *node5, nu / EnergyScale), (*node5, *node1, nu / EnergyScale), # (*node0, *node3, rho / EnergyScale), (*node1, *node4, rho / EnergyScale), (*node2, *node5, rho / EnergyScale), # in this way we can add onsite disorder again (*node0, 0.)) # if there is disorder it should be returned separately from the lattice return lat, disorder, [struc_disorder_one]