piel.models.physical.photonic#

Submodules#

Attributes#

Functions#

component_lattice_generic(→ gdsfactory.component.Component)

The shape of the network matrix determines the physical interconnection.

straight_heater_metal_undercut(...)

Returns a thermal phase shifter.

straight_heater_metal_simple(...)

Returns a thermal phase shifter that has properly fixed electrical connectivity to extract a suitable electrical netlist and measurement.

Package Contents#

component_lattice_generic(network: list[list] | None = None, **kwargs) gdsfactory.component.Component[source]#

The shape of the network matrix determines the physical interconnection. Note that there should be at least S+1=N modes based on this formalism of interconnection, and the position of the component implements a connectivity in between the modes, and assumes a 2x2 network encoding. One nice functionality by this component is that it can generate a component lattice for generic variable components with different x and y pitches. Initially this will maximise the surface area required but different placement algorithms can compact the size.

Parameters:

network – A list of lists of components that are to be placed in the lattice.

Returns:

A component lattice that implements the physical network.

Return type:

Component

The placement matrix is in this form: .. math:

M = X & 0 & X
    0 & P & 0
    X & 0 & X
Include-source:

import gdsfactory as gf from gdsfactory.components.mzi import mzi2x2_2x2

example_component_lattice = [

[mzi2x2_2x2(), 0, mzi2x2_2x2()], [0, mzi2x2_2x2(delta_length=30.0), 0], [mzi2x2_2x2(), 0, mzi2x2_2x2()],

] c = gf.components.component_lattice_generic(example_component_lattice)

Another example that demonstrates the generic-nature of this component lattice algorithm can be with an mixed set of actively driven and passiver interferometers. The placement matrix is in this form:

\[M = Y & 0 & A 0 & B & 0 C & 0 & Y\]
Include-source:

import gdsfactory as gf from gdsfactory.components import mzi2x2_2x2_phase_shifter, mzi2x2_2x2

example_mixed_component_lattice = [

[mzi2x2_2x2_phase_shifter(), 0, mzi2x2_2x2(delta_length=20.0)], [0, mzi2x2_2x2(delta_length=30.0), 0], [mzi2x2_2x2(delta_length=15.0), 0, mzi2x2_2x2_phase_shifter()],

] c = gf.components.component_lattice_generic(

network=example_mixed_component_lattice

)

# TODO implement balanced waveguide paths function per stage # TODO automatic electrical fanout? # TODO multiple placement optimization algorithms.

mzi2x2_2x2_phase_shifter#
mzi2x2_2x2#
straight_heater_metal_undercut(length: float = 320.0, length_undercut_spacing: float = 6.0, length_undercut: float = 30.0, length_straight: float = 0.1, length_straight_input: float = 15.0, cross_section: gdsfactory.typings.CrossSectionSpec = 'xs_sc', cross_section_heater: gdsfactory.typings.CrossSectionSpec = 'xs_heater_metal', cross_section_waveguide_heater: gdsfactory.typings.CrossSectionSpec = 'xs_sc_heater_metal', cross_section_heater_undercut: gdsfactory.typings.CrossSectionSpec = 'xs_sc_heater_metal_undercut', with_undercut: bool = True, via_stack: gdsfactory.typings.ComponentSpec | None = 'via_stack_heater_mtop', port_orientation1: int | None = None, port_orientation2: int | None = None, heater_taper_length: float | None = 5.0, ohms_per_square: float | None = None, straight: gdsfactory.typings.ComponentSpec = straight_function) gdsfactory.component.Component[source]#

Returns a thermal phase shifter.

dimensions from https://doi.org/10.1364/OE.27.010456

Parameters:
  • length – of the waveguide.

  • length_undercut_spacing – from undercut regions.

  • length_undercut – length of each undercut section.

  • length_straight – from where the trenches start to the via_stack.

  • length_straight_input – from input port to where trenches start.

  • cross_section – for waveguide connection.

  • cross_section_heater – for heated sections. heater metal only.

  • cross_section_waveguide_heater – for heated sections.

  • cross_section_heater_undercut – for heated sections with undercut.

  • with_undercut – isolation trenches for higher efficiency.

  • via_stack – via stack.

  • port_orientation1 – left via stack port orientation.

  • port_orientation2 – right via stack port orientation.

  • heater_taper_length – minimizes current concentrations from heater to via_stack.

  • ohms_per_square – to calculate resistance.

  • straight – straight component.

straight_heater_metal_simple(length: float = 320.0, cross_section_heater: gdsfactory.typings.CrossSectionSpec = 'xs_heater_metal', cross_section_waveguide_heater: gdsfactory.typings.CrossSectionSpec = 'xs_sc_heater_metal', via_stack: gdsfactory.typings.ComponentSpec | None = 'via_stack_heater_mtop', port_orientation1: int | None = None, port_orientation2: int | None = None, heater_taper_length: float | None = 5.0, ohms_per_square: float | None = None, straight: gdsfactory.typings.ComponentSpec = straight_function) gdsfactory.component.Component[source]#

Returns a thermal phase shifter that has properly fixed electrical connectivity to extract a suitable electrical netlist and measurement. dimensions from https://doi.org/10.1364/OE.27.010456

Parameters:
  • length – of the waveguide.

  • cross_section_heater – for heated sections. heater metal only.

  • cross_section_waveguide_heater – for heated sections.

  • via_stack – via stack.

  • port_orientation1 – left via stack port orientation.

  • port_orientation2 – right via stack port orientation.

  • heater_taper_length – minimizes current concentrations from heater to via_stack.

  • ohms_per_square – to calculate resistance.

  • straight – straight component.