def hopp_qsvh(site1, site2): x1, y1 = site1.pos x2, y2 = site2.pos hop_a_dis = (m2 - uniform(repr(site1), salt) * dis) * 1j * sz hop_b_dis = -(m2 - uniform(repr(site1), salt) * dis) * 1j * sz hop_a = m2 * 1j * sz hop_b = -m2 * 1j * sz # if yl+d<y1<yu-d: # return hop_a if site1.family == A else hop_b # else: # return hop_a_dis if site1.family == A else hop_b_dis return hop_a if site1.family == A else hop_b
def hopp_qsvh(site1, site2): x1, y1 = site1.pos x2, y2 = site2.pos hop_a_dis = (m2 + (uniform(repr(site1), salt) - .5) * dis) * 1j * sz hop_b_dis = -(m2 + (uniform(repr(site1), salt) - .5) * dis) * 1j * sz hop_a = m2 * 1j * sz hop_b = -m2 * 1j * sz if yl + d < y1 < yu - d: return hop_a if site1.family == A else hop_b if yl < y1 <= yl + d or yu - d <= y1 < yu: return hop_a_dis if site1.family == A else hop_b_dis else: return np.zeros([2, 2])
def onsite(site): x, y = site.pos if abs(y) > 1.5: return (uniform(repr(site), salt) - 0.5) * dis + m1 * (1 if site.family == a else -1) else: return 0
def nnn(site1, site2): x, y = site1.pos if abs(x) < length * ratio and y > width - 5: ## return 1j * m2 * choices(population, weights)[0] * sz return 1j * m2 * (1 - 2 * uniform(repr(site1), salt) * dis) * sz else: return 1j * m2 * sz
def onsite(site): x, y = site.pos # return dis*(uniform(repr(site),salt)-.5)+4 if y > width - 10: return 4 else: return dis * (uniform(repr(site), salt) - .5) + 4
def onsite(site): x,y=site.pos if x<10: return 4/((n-n1)/10*x+n1)**2 elif x>110: return 4/((n2-n)/10*(x-110)+n)**2 else: return 4/n**2+.5*(uniform(repr(site),salt)-.5)
def hopping(site1, site2): alpha = uniform(repr(site1), salt) * 2 * np.pi beta = np.arccos(1 - 2 * uniform(repr(site1.pos), salt)) / 2 gamma = uniform(repr(site2), salt) * 2 * np.pi # np.random.seed(seed=salt) # alpha=np.random.rand()*2*np.pi # beta=np.arccos(1-2*np.random.rand())/2 # gamma=np.random.rand()*2*np.pi return -tinyarray.array([[ cmath.exp(1j * alpha) * math.cos(beta), cmath.exp(1j * gamma) * math.sin(beta) ], [ -cmath.exp(-1j * gamma) * math.sin(beta), cmath.exp(-1j * alpha) * math.cos(beta) ]])
def nnn(site1, site2): x, y = site1.pos # return 1j*m2 if abs(x) < length and y > width - di: # return 1j * m2 * (1-2*uniform(repr(site1.tag),salt)*1) return 1j * m2 * np.sign(uniform(repr(site1.tag), salt) - alpha) else: return 1j * m2
def nnn(site1, site2): x, y = site1.pos if abs(x) < length * ratio and y > width - 5: # return 1j * m2 * (uniform(repr(site1),salt)-0.5) * 2 * sz return 1j * m2 * (1 - 2 * uniform(repr(site1), salt) * 0) * sz # return 1j *m2 * sz else: return 1j * m2 * sz
def onsite_qsvh(site): x, y = site.pos if yl < y < yu: # return np.zeros([2,2]) return dis2 * (uniform(repr(site), salt) - .5) * s0 else: onsite_a = m1 * s0 onsite_b = -m1 * s0 return onsite_a if site.family == A else onsite_b
def nnn_d(site1, site2): x, y = site1.pos if y <= bo: return 0 # elif x**2+(y+delta-3)**2<9: elif y < 10 and abs(x) < length: return 1j * m2 * 2 * (uniform(repr(site1), salt) - 0.5) else: return -1j * m2
def onsite(site): x, y = site.pos # if x**2+(y-1)**2<5: # return .4 * (1 if site.family == a else -1) if y > 0: return m1 * ((uniform(repr(site), salt) - 0.5) * dis + 1) * (1 if site.family == a else -1) else: return -m1 * (1 if site.family == a else -1)
def onsite(site): x, y = site.pos if command == 'crystal': if (x % 2 == 0) & (y % 2 == 0): return 2 else: return 0 else: if abs(x) < length: # add clean region return dis * (uniform(repr(site), salt) - .5) + 4 else: return 4
def onsite(site): x, y, z = site.pos return (uniform(repr(site), seed) - 0.5) * dis
def onsite(site): return (uniform(repr(site),seed)-0.5)*dis
def onsite(site): x, y = site.pos if abs(x) == length: return 4 - 1j else: return dis * (uniform(repr(site), salt) - .5) + 4
def onsite(site): onsite_a = m + (uniform(repr(site), salt) - .5) * dis onsite_b = -m + (uniform(repr(site), salt) - .5) * dis return onsite_a if site.family == A else onsite_b
def onsite_qsvh(site): x, y = site.pos # return np.zeros([2,2]) return dis2 * (uniform(repr(site), salt) - .5) * s0
def spin_orbit(site1, site2): return 1j * (m2 + dis * (uniform(repr(site1), salt) - .5)) * sz
def onsite(site): return dis * (uniform(repr(site), salt) - .5) + 4 - 1j * gamma
def onsite(site): return dis * (uniform(repr(site), salt) - .5) + 4 + 0.2j
def onsite(site): x, y = site.pos if y > -30: return (uniform(repr(site), salt) - 0.5) * dis else: return 0
def onsite(site): return 4/(n+.15*(np.sign(uniform(repr(site),salt)-0.5)+1))**2
def onsite_qvh(site): onsite_a = m1 + dis2 * (uniform(repr(site), salt) - .5) onsite_b = -m1 + dis2 * (uniform(repr(site), salt) - .5) return onsite_a if site.family == A else onsite_b
def onsite(site): return 4 / (n + dis * (uniform(repr(site), salt) - 0.5))**2
def onsite(site): x,y=site.pos return dis*(uniform(repr(site),salt)-.5)+4#-0.001j
def onsite(site): return (uniform(repr(site), salt) - 0.5) * 2
def onsite_disorder(site, disorder, salt): return disorder * (uniform(repr(site), repr(salt)) - 0.5) * mat
def onsite(site): x, y = site.pos return (uniform(repr(site), salt) - 0.5) * 4
def V(*args): return 2 * strength * (uniform(repr(args), repr(salt)) - 0.5)