Exemple #1
0
    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'
        }
Exemple #2
0
    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'
        }
Exemple #3
0
    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'
        }
Exemple #4
0
    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'
        }
Exemple #5
0
    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'