effective_route_length

photonforge.effective_route_length(*, paths=(), component=None, layer=None, port_spec=None, n_eff=None, frequency=None, technology=None, width_rtol=0.2, offset_rtol=0.2, curvature_rtol=0.2, verbose=True, show_progress=True)[source]

Measure the effective length of waveguides.

The effective length of a waveguide is the integral of its effective index along the propagation length:

\[\int n_\text{eff}(s) \, {\rm d}s\]

If provided, the n_eff interpolator can be parametrized by “frequency” or “wavelength”, bend “radius” or “curvature”, waveguide “width”, “offset”, and “angle” (in degrees, useful in anisotropic media). The values used for sampling and numerical integration are derived from the paths provided to the function or found in the component.

When n_eff is not provided, the paths are inspected to define the parameter ranges for “width”, “curvature”, and “angle” (if anisotropic media is used in technology). Then mode solver runs based on port_spec are used to evaluate the effective index and create an interpolator. In particular, the “width” variation is only applied to a single path profile in port_spec, if one can be detected.

Parameters:
  • paths (Sequence[Path]) – Paths to use for effective length calculation.

  • component (Component | None) – Component to look for paths if paths is not given.

  • layer (Sequence[int] | None) – Layer used to look for paths. If None, a best guess based on port_spec will be used.

  • port_spec (PortSpec | None) – Port specification used for the base waveguide. If None, the component will be inspected and a best guess used.

  • n_eff (Interpolator | None) – Interpolator with parametrized effective index values.

  • frequency (Annotated[float, minimum=0, units='Hz'] | None) – Frequency for effective index computation. It must be provided if n_eff is not provided, or if it is parametrized by “frequency” or “wavelength”.

  • technology (Technology | None) – Technology used for mode-solving, if needed.

  • width_rtol (float) – Maximum allowed relative change in path width between consecutive integration points. If less than or equal to 0, width parametrization is disabled.

  • offset_rtol (float) – Maximum allowed relative change in offset between consecutive integration points. If less than or equal to 0, offset parametrization is disabled.

  • curvature_rtol (float) – Maximum allowed relative change in curvature between consecutive integration points. If less than or equal to 0, curvature parametrization is disabled.

  • verbose (bool) – Flag controlling mode solver verbosity.

  • show_progress (bool) – Flag controlling mode solver progress.

Returns:

Effective path length for guided waves.

Return type:

float

See also

route_length()