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
예제 #5
0
 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
예제 #6
0
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
예제 #10
0
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
예제 #11
0
    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
예제 #12
0
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
예제 #16
0
 def onsite(site):
     x, y = site.pos
     if abs(x) == length:
         return 4 - 1j
     else:
         return dis * (uniform(repr(site), salt) - .5) + 4
예제 #17
0
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
예제 #21
0
 def onsite(site):
     return dis * (uniform(repr(site), salt) - .5) + 4 + 0.2j
예제 #22
0
 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
예제 #24
0
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
예제 #25
0
def onsite(site):
    return 4 / (n + dis * (uniform(repr(site), salt) - 0.5))**2
예제 #26
0
 def onsite(site):
     x,y=site.pos
     return dis*(uniform(repr(site),salt)-.5)+4#-0.001j
예제 #27
0
def onsite(site):
    return (uniform(repr(site), salt) - 0.5) * 2
예제 #28
0
 def onsite_disorder(site, disorder, salt):
     return disorder * (uniform(repr(site), repr(salt)) - 0.5) * mat
예제 #29
0
 def onsite(site):
     x, y = site.pos
     return (uniform(repr(site), salt) - 0.5) * 4
예제 #30
0
 def V(*args):
     return 2 * strength * (uniform(repr(args), repr(salt)) - 0.5)