Skip to content

parametric.crossing45

crossing45(
*,
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,
radius: Annotated[float, exclusiveMinimum=0, units='μm'] | None = None,
euler_fraction: Annotated[float, maximum=1, minimum=0] | None = None,
technology: photonforge.Technology | None = None,
name: str | None = None,
model: photonforge.Model | None = None,
) -> photonforge.Component

45° waveguide 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. If None, 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.
  • radius: Radius used for arm bends.
  • euler_fraction: Fraction of the bends that is created using an Euler spiral (see Path.arc). If None, defaults to 0.
  • name: Component name.
  • model: Model to be used with this component. If None a Tidy3DModel is used.

Returns

Component with the crossing, ports and model.

Example

>>> component = pf.parametric.crossing45(
... port_spec="Strip", arm_length=2.5, added_width=0.8, radius=10, euler_fraction=0.5
... )

crossing45