parametric.crossing
crossing( *, port_spec: Annotated[str | photonforge.PortSpec, _] | Annotated[ collections.abc.Sequence[Annotated[str | photonforge.PortSpec, _]], maxItems=2, minItems=2, ] | None = None, arm_length: Annotated[float, exclusiveMinimum=0, units='μm'] | None = None, added_width: Annotated[ float | Annotated[str | photonforge.Expression, _], units='μm' ] | None = None, extra_length: Annotated[float, minimum=0, units='μm'] | None = None, technology: photonforge.Technology | None = None, name: str | None = None, model: photonforge.Model | None = None,) -> photonforge.ComponentWaveguide crossing.
Args
- port_spec: Port specification describing waveguide cross-section. A tuple with 2 values can be used, one for each waveguide.
- arm_length: Length of a single crossing arm.
- added_width: Width added to the arm linearly up to the center. An expression or string (with independent variable
"u") can also be used. IfNone, defaults to 0. - extra_length: Additional length for a straight section at the ports. If
None, defaults to 0. - technology: Component technology. If
None, the default technology is used. - name: Component name.
- model: Model to be used with this component. If
NoneaTidy3DModelis used.
Returns
Component with the crossing, ports and model.
Example
>>> # Linearly tapered crossing>>> component1 = pf.parametric.crossing(... port_spec="Strip", arm_length=2.5, extra_length=0.5, added_width=0.8... )>>> # Cosine-tapered crossing>>> component2 = pf.parametric.crossing(... port_spec="Strip",... arm_length=2.76,... extra_length=0.5,... added_width="0.83 * sin(pi * u)",... )>>> layout = pf.Component().add(... pf.Reference(component1), pf.Reference(component2, (8, 0))... )