ModifiedWaveguideGratingPeriod

class picazzo3.wg.grating.cell.ModifiedWaveguideGratingPeriod(*args, **kwargs)

Period for a waveguide with modified parameters. The base definition is taken from the wg_template which is used for the ports. The modify_waveguide_parameters property then creates the blocks with modified widths, by adapting the properties of the individual waveguide template.

Parameters:

modified_waveguide_parameters:

Dict of the parameters of the waveguide template that should be modified for the different sections of the Grating Period.

n_o_sections: int and number > 0

Number of sections in the grating period

wg_template: PCell and _WaveguideTemplate

Waveguide template of start and end of the period (and ports)

name:

The unique name of the pcell

Other Parameters:
 

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

Views

Layout
Parameters:

view_name: str and ( Alphanumeric string or Contains _$ )

The name of the view

section_lengths: list<number >= 0>

List of lengths for the waveguide templates

length: float and Real, number and number >= 0

Length of the grating period.

Examples

""" In this example we build a grating from a modified slot waveguide.
Starting from the basic slot waveguide template, we define grating period sections
with different slot width and core width.
"""
from technologies import silicon_photonics
from ipkiss3 import all as i3
from picazzo3.wg.grating import WaveguideUniformGrating, ModifiedWaveguideGratingPeriod
from picazzo3.traces.slot_wg import SlotWaveguideTemplate

t = SlotWaveguideTemplate(name="slot_t")
t.Layout(core_width=0.6, slot_width=0.15, cladding_width=3.0)

period = ModifiedWaveguideGratingPeriod(name="period",
                                        wg_template=t,
                                        n_o_sections=5)

# we modify the core width and the slot width
period.Layout(section_lengths=[0.1, 0.1, 0.3, 0.1, 0.1],
              modified_waveguide_parameters={'slot_width': [0.15, 0.18, 0.20, 0.18, 0.15],
                                             'core_width': [0.6, 0.59, 0.58, 0.59, 0.6]})

grating = WaveguideUniformGrating(name="my_grating_modifiedwg",
                                  period_cell=period,
                                  n_o_periods=12)
layout = grating.Layout()

layout.visualize(annotate=True)
../../../../_images/picazzo3-wg-grating-cell-ModifiedWaveguideGratingPeriod-1.png