def __init__(self, N, js, Es, ts, Us, Ws=None, gs=None, parasite=0): model = scattering.Model( Es=Es, links=[(i, (i + 1) % N, ts[i]) for i in range(N)], Us=Us, W=Ws) if gs is None: gs = normalize([1, 1]) channels = [] channels.append(scattering.Channel(site=js[0], strength=gs[0])) channels.append(scattering.Channel(site=js[1], strength=gs[1])) parasites = [] if parasite > 0: parasites = [scattering.Channel(site=i, strength=parasite) for i in range(N)] scattering.Setup.__init__(self, model, channels, parasites) self.info = { 'N': N, 'js': js, 'Es': Es, 'ts': ts, 'Us': Us, 'gs': gs, 'parasite': parasite, 'name': 'ring' }
def __init__(self, N, js, Es, ts, Us, gs=None, parasite=0): """ Generate a scattering setup with two main channels connected to a chain of BH sites. O - O - O - O - .. - O 0 1 2 3 N Parameters ---------- N : int Number of sites js : list List of the two sites which the two channels connect to Es : list List of onsite energies ts : list List of values for each hopping, [t0:1, t1:2, ... tN-1:N] Us : list List of values for onsite interaction gs: list List of coupling strengths for each channel. Defaults to normalized. parasite : float Additional uniform decay constant. Defaults to 0. """ model = scattering.Model(Es=Es, links=[(i, i + 1, ts[i]) for i in range(N - 1)], Us=Us) if gs is None: gs = normalize([1, 1]) channels = [] channels.append(scattering.Channel(site=js[0], strength=gs[0])) channels.append(scattering.Channel(site=js[1], strength=gs[1])) parasites = [] if parasite > 0: parasites = [ scattering.Channel(site=i, strength=parasite) for i in range(N) ] scattering.Setup.__init__(self, model, channels, parasites) self.info = { 'N': N, 'js': js, 'Es': Es, 'ts': ts if len(ts) > 0 else [0], 'Us': Us, 'gs': gs, 'parasite': parasite, 'name': 'chain' }
def __init__(self, L, W, H, js, Es, ts, Us, gs=None, parasite=0): N = W * L * H # number of sites # construct links list links = [] i = 0 for x in xrange(L): for y in xrange(W): for z in xrange(H): n = x + L * y + W * L * z if x < L - 1: links.append([n, n + 1, ts[i]]) if y < W - 1: links.append([n, n + L, ts[i]]) if z < H - 1: links.append([n, n + L * W, ts[i]]) i += 1 model = scattering.Model(Es=Es, links=links, Us=Us) if gs is None: gs = normalize([1, 1]) channels = [] channels.append(scattering.Channel(site=js[0], strength=gs[0])) channels.append(scattering.Channel(site=js[1], strength=gs[1])) parasites = [] if np.abs(parasite) > 0: parasites = [ scattering.Channel(site=i, strength=parasite) for i in xrange(N) ] scattering.Setup.__init__(self, model, channels, parasites) self.info = { 'N': N, 'L': L, 'W': W, 'H': H, 'js': js, 'Es': Es, 'ts': ts, 'Us': Us, 'gs': gs, 'parasite': parasite, 'name': 'cube' }
def __init__(self, N, Es, ts, Us, Ws=None, xs=None, gs=None, parasite=0): # defaults Ws = np.zeros((N, N)) if Ws is None else Ws xs = np.zeros((N, 1)) if xs is None else xs # model model = scattering.Model(Es=Es, links=[(i, i + 1, ts[i]) for i in range(N - 1)], Us=Us, W=Ws) # coupling strengths if gs is None: gs = normalize([1, 1]) # sites sites = np.arange(0, N) channels = [] channels.append( scattering.Channel(sites=sites, strengths=gs, positions=xs)) channels.append( scattering.Channel(sites=sites, strengths=gs, positions=-np.array(xs))) parasites = None if parasite > 0: parasites = [ scattering.Channel(site=i, strength=parasite) for i in range(N) ] scattering.Setup.__init__(self, model, channels, parasites) self.info = { 'N': N, 'Es': Es, 'ts': ts, 'Us': Us, 'Ws': Ws, 'gs': gs, 'xs': xs, 'parasite': parasite, 'name': 'proximatechain' }
def __init__(self, L, W, js, Es, ts, Us, gs=None, parasite=0): links = [] i = 0 for x in range(L): for y in range(W): n = x + L * y if x < L - 1: links.append([n, n + 1, ts[i]]) i += 1 if y < W - 1: links.append([n, n + L, ts[i]]) i += 1 model = scattering.Model(Es=Es, links=links, Us=Us) if gs is None: gs = normalize([1, 1]) channels = [] channels.append(scattering.Channel(site=js[0], strength=gs[0])) channels.append(scattering.Channel(site=js[1], strength=gs[1])) N = L * W parasites = [] if parasite > 0: parasites = [ scattering.Channel(site=i, strength=parasite) for i in range(N) ] scattering.Setup.__init__(self, model, channels, parasites) self.info = {} self.info['N'] = W * L self.info['L'] = L # length of chain self.info['W'] = W self.info['js'] = js self.info['Es'] = Es self.info['ts'] = ts self.info['Us'] = Us self.info['gs'] = gs self.info['parasite'] = parasite self.info['name'] = 'plane'