Skip to content

parametric.circular_spiral

circular_spiral(
*,
port_spec: Annotated[str | photonforge.PortSpec, _] | None = None,
turns: Annotated[float, minimum=0] | None = None,
radius: Annotated[float, exclusiveMinimum=0, units='μm'] | None = None,
separation: Annotated[float, minimum=0, units='μm'] | None = None,
full_length: Annotated[float, exclusiveMinimum=0, units='μm'] = None,
align_ports: bool | None = None,
technology: photonforge.Technology | None = None,
name: str | None = None,
model: photonforge.Model | None = None,
) -> photonforge.Component

Circular spiral.

Args

  • port_spec: Port specification describing waveguide cross-section.
  • turns: Number of turns in each of the 2 spiral arms. Does not need to be an integer.
  • radius: Bend radius for the internal spiral turns.
  • separation: Distance between waveguide centers in parallel sections. If None, defaults to the port width.
  • full_length: Desired spiral length. If set to a positive value, ‘turns’ is calculated automatically.
  • align_ports: Optionally align ports on the same side of the spiral. 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 WaveguideModel is used.

Returns

Component with the spiral section, ports and model.

Note

The full length of the spiral can be computed with the route_length function.

Example

>>> component1 = pf.parametric.circular_spiral(port_spec="Strip", radius=5, turns=1.25)
>>> # Aligned ports
>>> component2 = pf.parametric.circular_spiral(
... port_spec="Strip", radius=5, turns=3, align_ports=True
... )
>>> layout = pf.Component().add(
... pf.Reference(component1), pf.Reference(component2, (40, -8))
... )

circular_spiral