Skip to content

abstract.nonlinear_ring

nonlinear_ring(
*,
kappa1: complex = 0.3,
kappa2: complex | None = None,
n_eff: complex = 2.4,
length: Annotated[float, minimum=0, units='μm'] = 60,
propagation_loss: Annotated[float, minimum=0, units='dB/μm'] = 0.0,
n_group: float | None = None,
reference_frequency: Annotated[float, minimum=0, units='Hz']
| None = None,
dn_dT: Annotated[complex, units='1/K'] = 0.0,
dL_dT: Annotated[float, units='dB/μm/K'] = 0.0,
temperature: Annotated[float, minimum=0, units='K'] = 293.0,
reference_temperature: Annotated[float, minimum=0, units='K'] = 293.0,
effective_area: Annotated[float, exclusiveMinimum=0, units='m²']
| None = None,
kerr_index: Annotated[float, units='m²/W'] = 0.0,
tpa_coefficient: Annotated[float, minimum=0, units='m/W'] = 0.0,
fca_cross_section: Annotated[float, minimum=0, units='m²'] = 0.0,
fcd_coefficient: Annotated[float, units='m³'] = 0.0,
confinement: Annotated[float, maximum=1, minimum=0] = 1.0,
carrier_lifetime: Annotated[float, exclusiveMinimum=0, units='s']
| photonforge.Interpolator
| None = None,
thermal_time_constant: Annotated[float, exclusiveMinimum=0, units='s']
| None = None,
thermal_capacity: Annotated[float, exclusiveMinimum=0, units='J/K']
| None = None,
absorbed_fraction: Annotated[float, maximum=1, minimum=0] = 1.0,
heater_resistance: Annotated[float, exclusiveMinimum=0, units='Ω']
| None = None,
carrier_samples: Annotated[int, minimum=2] = 401,
z0: Annotated[complex, units='Ω'] | None = None,
f_3dB: Annotated[float, minimum=0, units='Hz'] = 0,
) -> photonforge.Component

Abstract nonlinear microring resonator.

Based on RingTimeStepper.

Args

  • kappa1: Complex cross-coupling coefficient of the first bus coupler.
  • kappa2: Cross-coupling coefficient of the second bus coupler. If None, models a single-bus ring.
  • n_eff: Effective refractive index (loss can be included here by using complex values).
  • length: Round-trip length of the ring.
  • propagation_loss: Propagation loss.
  • n_group: Group index. If None, the real part of n_eff is used.
  • reference_frequency: Reference frequency the indices are quoted at. If None, the carrier frequency is used.
  • dn_dT: Temperature sensitivity of n_eff, which is also the coefficient self-heating acts through.
  • dL_dT: Temperature sensitivity of propagation_loss.
  • temperature: Operating temperature.
  • reference_temperature: Reference temperature.
  • effective_area: Nonlinear effective area. Required by any of the intensity terms below.
  • kerr_index: Kerr coefficient n₂. Positive values red-shift the resonance.
  • tpa_coefficient: Two-photon absorption coefficient.
  • fca_cross_section: Free-carrier absorption cross-section.
  • fcd_coefficient: Free-carrier index change per unit density. Negative for silicon.
  • confinement: Fraction of the optical mode overlapping the two-photon material. It scales the TPA loss and the carriers it generates.
  • carrier_lifetime: Free-carrier lifetime, a constant in s or an Interpolator over carrier density. Required by the free-carrier terms.
  • thermal_time_constant: Thermal relaxation time. Set together with thermal_capacity to enable self-heating.
  • thermal_capacity: Heat capacity of the heated volume. The steady-state thermal impedance is the ratio of the two.
  • absorbed_fraction: Fraction of the linear loss that is absorption rather than scattering, and so heats the ring.
  • heater_resistance: If set, an electrical heater port is added, contributing V²/R to the thermal source.
  • carrier_samples: Points used to resample an interpolator lifetime at setup.
  • z0: Reference impedance of the electrical port.
  • f_3dB: -3 dB cutoff of the electrical drive. Only active for positive values.