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.ComponentCircular 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 toFalse. - technology: Component technology. If
None, the default technology is used. - name: Component name.
- model: Model to be used with this component. If
NoneaWaveguideModelis 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))... )