Exemplo n.º 1
0
def mzi4(freqs):
    y1 = siepic.YBranch()
    gc1 = siepic.GratingCoupler()
    wg1 = siepic.Waveguide(length=67.730e-6)
    wg2 = siepic.Waveguide(length=297.394e-6)
    y2 = siepic.YBranch()
    gc2 = siepic.GratingCoupler()
    wg3 = siepic.Waveguide(length=256.152e-6)
    simulator = SweepSimulator(freqs[0], freqs[-1], len(freqs))

    y1.rename_pins("N$0", "N$2", "N$1")
    gc1.rename_pins("ebeam_gc_te1550_detector2", "N$0")
    wg1.rename_pins("N$1", "N$4")
    wg2.rename_pins("N$2", "N$5")
    y2.rename_pins("N$6", "N$5", "N$4")
    gc2.rename_pins("ebeam_gc_te1550_laser1", "N$3")
    wg3.rename_pins("N$6", "N$3")

    y1.multiconnect(gc1["N$0"], wg2, wg1)
    y2.multiconnect(wg3, wg2, wg1)
    wg3.connect(gc2["N$3"])

    simulator.multiconnect(gc2, gc1)

    return simulator.circuit
Exemplo n.º 2
0
def mzi():
    gc_input = siepic.GratingCoupler()
    y_splitter = siepic.YBranch()
    wg_long = siepic.Waveguide(length=150e-6)
    wg_short = siepic.Waveguide(length=50e-6)
    y_recombiner = siepic.YBranch()
    gc_output = siepic.GratingCoupler()

    y_splitter.multiconnect(gc_input, wg_long, wg_short)
    y_recombiner.multiconnect(gc_output, wg_short, wg_long)

    return y_splitter.circuit
Exemplo n.º 3
0
def y1():
    return siepic.YBranch()
Exemplo n.º 4
0
# Copyright © Simphony Project Contributors
# Licensed under the terms of the MIT License
# (see simphony/__init__.py for details)

import matplotlib.pyplot as plt

from simphony.libraries import siepic
from simphony.simulators import MonteCarloSweepSimulator, SweepSimulator

# first we initialize all of the components in the MZI circuit
gc_input = siepic.GratingCoupler()
y_splitter = siepic.YBranch()
wg_long = siepic.Waveguide(length=150e-6)
wg_short = siepic.Waveguide(length=50e-6)
y_recombiner = siepic.YBranch()
gc_output = siepic.GratingCoupler()

# next we connect the components to each other
# you can connect pins directly:
y_splitter["pin1"].connect(gc_input["pin1"])

# or connect components with components:
# (when using components to make connections, their first unconnected pin will
# be used to make the connection.)
y_splitter.connect(wg_long)

# or any combination of the two:
y_splitter["pin3"].connect(wg_short)
# y_splitter.connect(wg_short["pin1"])

# when making multiple connections, it is often simpler to use `multiconnect`