parametric.ring_coupler
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, bus_length: Annotated[float, minimum=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.ComponentRing/straight 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.
- bus_length: Length of the bus waveguide added to each side of the straight coupling section. If both
bus_lengthandcoupling_lengthare 0, the bus waveguide is not included. IfNone, defaults to radius. - euler_fraction: Fraction of the bends that is created using an Euler spiral (see
Path.arc). IfNone, defaults to 0. - coupling_length: Length of straight coupling region. If
None, defaults to 0. - port_bends: Flag controllig whether to set a bend radius for the ports. Not used when
euler_factor > 0. IfNone, defaults toFalse. - technology: Component technology. If
None, the default technology is used. - name: Component name.
- model: Model to be used with this component. If
NoneaDirectionalCouplerCircuitModelis used.
Returns
Coupling component.
Example
>>> # Simple ring coupler>>> component1 = pf.parametric.ring_coupler(... port_spec="Strip", coupling_distance=0.6, radius=5, bus_length=6... )>>> # Racetrack with different profiles>>> component2 = pf.parametric.ring_coupler(... port_spec=("Rib", "Strip"),... coupling_distance=0.6,... radius=5,... euler_fraction=0.5,... bus_length=6,... coupling_length=2,... )>>> layout = pf.Component().add(... pf.Reference(component1), pf.Reference(component2, (15, 0))... )