Skip to content

parametric.dual_ring_coupler

dual_ring_coupler(
*,
port_spec: Annotated[str | photonforge.PortSpec, _]
| Annotated[
collections.abc.Sequence[Annotated[str | photonforge.PortSpec, _]],
maxItems=2,
minItems=2,
]
| None = None,
coupling_distance: Annotated[float, units='μm'] | None = None,
radius: Annotated[float, exclusiveMinimum=0, units='μm'] | None = None,
euler_fraction: Annotated[float, maximum=1, minimum=0] | None = None,
coupling_length: Annotated[float, minimum=0, units='μm'] | None = None,
port_bends: bool | None = None,
technology: photonforge.Technology | None = None,
name: str | None = None,
model: photonforge.Model | None = None,
) -> photonforge.Component

Dual ring coupling region.

Args

  • port_spec: Port specification describing waveguide cross-section. A tuple with 2 values can be used, one for each coupler side.
  • coupling_distance: Distance between bus and ring waveguide centers.
  • radius: Central ring radius. A tuple with 2 values can be used, one for each coupler side.
  • euler_fraction: Fraction of the bends that is created using an Euler spiral (see Path.arc). If None, defaults to 0.
  • coupling_length: Length of straight coupling region. If None, defaults to 0.
  • port_bends: Flag controlling whether to set a bend radius for the ports. Not used when euler_factor > 0. If None, defaults to False.
  • technology: Component technology. If None, the default technology is used.
  • name: Component name.
  • model: Model to be used with this component. If None a DirectionalCouplerCircuitModel is used.

Returns

Coupling component.

Example

>>> # Racetrack coupler
>>> component = pf.parametric.dual_ring_coupler(
... port_spec="Strip",
... coupling_distance=0.6,
... radius=5,
... euler_fraction=0.5,
... coupling_length=2,
... )

dual_ring_coupler