ring_coupler

photonforge.parametric.ring_coupler(*, port_spec, coupling_distance, radius=None, bus_length, euler_fraction=0.0, coupling_length=0.0, technology=None, name='', tidy3d_model_kwargs={})

Ring/straight coupling region.

Parameters:
  • port_spec (str | PortSpec | tuple) – Port specification describing waveguide cross-section. A tuple with 2 values can be used, one for each coupler side.

  • coupling_distance (float) – Distance between bus and ring waveguide centers.

  • radius (float | None) – Central ring radius.

  • bus_length (float) – Length of the bus waveguide added on both sides of the stright coupling section. If both bus_length and coupling_length are 0, the bus waveguide is not included.

  • euler_fraction (float) – Fraction of the bends that is created using an Euler spiral (see photonforge.Path.arc()).

  • coupling_length (float) – Length of straigh coupling region.

  • technology (Technology) – Component technology. If None, the default technology is used.

  • name (str) – Component name.

  • tidy3d_model_kwargs (dict[str, Any]) – Dictionary of keyword arguments passed to the component’s photonforge.Tidy3DModel.

Returns:

Coupling component.

Return type:

Component

# Simple ring coupler
component1 = ring_coupler(port_spec="Strip", coupling_distance=0.6, radius=5, bus_length=6)

# Racetrack with different profiles
component2 = ring_coupler(
    port_spec=("Rib", "Strip"),
    coupling_distance=0.6,
    radius=5,
    euler_fraction=0.5,
    bus_length=6,
    coupling_length=2,
)
ring_coupler