RingRect180DropFilter

class picazzo3.filters.ring.cell.RingRect180DropFilter(*args, **kwargs)

Rectangular ring filter with two straight access waveguide. This component is often called a channel drop filter. The access waveguides are placed north and south of the Ring

The ring shape is a rounded rectangle of which the bend radius can be specified, as well as the horizontal and vertical straight sections. it is also possible to specify the rounding algorithm of the bends.

The waveguide template of the ring and the couplers can be chosen independently.

Parameters
coupler_trace_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>

list of trace_templates for the ring couplers. By default the same template as the ring is taken

ring_trace_template: PCell and _WaveguideTemplate

Trace template for the ring waveguide

couplers: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>

list of coupler PCells

ring_segments: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>

list of Ring PCells

name: String that contains only ISO/IEC 8859-1 (extended ASCII py3) or pure ASCII (py2) characters

The unique name of the pcell

Other Parameters
ring_trace_templates: List with type restriction, allowed types: <class ‘ipkiss3.pcell.cell.pcell.PCell’>, locked

Trace templates for the ring segments. Locked, as there is only one segment in this Ring. Use ‘ring_trace_template’ instead.

Examples

"""This example illustrates the basic ring resonator model without creating a layout.

It also illustrates the effect of resonance peak splitting due to back-reflection in the coupler.
"""
from technologies import silicon_photonics  # noqa: F401
import pylab as plt
import numpy as np

from picazzo3.filters.ring import RingRect180DropFilter

# To get an FSR of 10 nm at 1.55 um, we use the following formula
n_g = 2.86  # default value used in picazzo3, see TECH.PCELLS.WG.DEFAULT
L_fsr_10nm = 1.55**2 / (n_g * 0.01)

# 1. Define the ring
my_ring = RingRect180DropFilter(name="my_example_ring")

# coupler parameters
cp = {
    "cross_coupling1": 1j * 0.0784**0.5,
    "straight_coupling1": 0.9216**0.5,
    "reflection_in1": 1j * 0.030,
}

my_ring_cm = my_ring.CircuitModel(
    ring_length=L_fsr_10nm,  # we can manually specify the ring length
    coupler_parameters=[cp, cp],  # 2 couplers
)

# 2. Simulate
wavelengths = np.linspace(1.54, 1.56, 2000)
R = my_ring_cm.get_smatrix(wavelengths=wavelengths)

# 3. Plot the results
plt.plot(wavelengths, np.abs(R["in1", "out1"]) ** 2, "b", label="pass")
plt.plot(wavelengths, np.abs(R["in1", "out2"]) ** 2, "g", label="drop")
plt.plot(wavelengths, np.abs(R["in1", "in2"]) ** 2, "r", label="add")
plt.legend()
plt.show()
../../../../_images/picazzo3-filters-ring-cell-RingRect180DropFilter-1.png
"""This example illustrates a simulation of a single ring resonator model based on the
layout that is first generated."""
from technologies import silicon_photonics  # noqa: F401
import pylab as plt
import numpy as np

from picazzo3.filters.ring import RingRect180DropFilter

# 1. Define the ring
my_ring = RingRect180DropFilter(name="my_example_ring2")
my_ring.Layout(straights=(6.0, 0.0))

# set model in couplers and ring waveguides TODO: change the models
cp = {"delta_n_eff": 0.02}  # coupler parameters
for coupler in my_ring.couplers:
    coupler.set_default_view(coupler.SimpleCircuitModel)  # based on delta_n_eff
for ring_wg in my_ring.ring_segments:
    ring_wg.set_default_view(ring_wg.CircuitModel)  # based on the actual waveguide length

# ring model
my_ring_cm = my_ring.CircuitModel(coupler_parameters=[cp, cp])  # 2 couplers

# 2. Simulate
wavelengths = np.linspace(1.55, 1.58, 400)
R = my_ring_cm.get_smatrix(wavelengths=wavelengths)

# 3. Plot the results
plt.plot(wavelengths, np.abs(R["in1", "out1"]) ** 2, "b", label="pass")
plt.plot(wavelengths, np.abs(R["in1", "out2"]) ** 2, "g", label="drop")
plt.show()
../../../../_images/picazzo3-filters-ring-cell-RingRect180DropFilter-2.png

Views

Layout = <class 'picazzo3.filters.ring.cell.RingRect180DropFilter.Layout'>