nonlinear_ring

photonforge.abstract.nonlinear_ring(*, kappa1=0.3, kappa2=None, n_eff=2.4, length=60, propagation_loss=0.0, n_group=None, reference_frequency=None, dn_dT=0.0, dL_dT=0.0, temperature=293.0, reference_temperature=293.0, effective_area=one, kerr_index=, tpa_coefficient=.0, fca_cross_section=.0, fcd_coefficient=0, confinement=1.0, carrier_lifetime=None, thermal_time_constant=None, thermal_capacity=None, absorbed_fraction=1.0, heater_resistance=None, carrier_samples=401, z0=None, f_3dB=0)[source]

Abstract nonlinear microring resonator.

Based on photonforge.RingTimeStepper.

Parameters:
  • kappa1 (complex) – Complex cross-coupling coefficient of the first bus coupler.

  • kappa2 (complex | None) – Cross-coupling coefficient of the second bus coupler. If None, models a single-bus ring.

  • n_eff (complex) – Effective refractive index (loss can be included here by using complex values).

  • length (Annotated[float, minimum=0, units='μm']) – Round-trip length of the ring.

  • propagation_loss (Annotated[float, minimum=0, units='dB/μm']) – Propagation loss.

  • n_group (float | None) – Group index. If None, the real part of n_eff is used.

  • reference_frequency (Annotated[float, minimum=0, units='Hz'] | None) – Reference frequency the indices are quoted at. If None, the carrier frequency is used.

  • dn_dT (Annotated[complex, units='1/K']) – Temperature sensitivity of n_eff, which is also the coefficient self-heating acts through.

  • dL_dT (Annotated[float, units='dB/μm/K']) – Temperature sensitivity of propagation_loss.

  • temperature (Annotated[float, minimum=0, units='K']) – Operating temperature.

  • reference_temperature (Annotated[float, minimum=0, units='K']) – Reference temperature.

  • effective_area (Annotated[float, exclusiveMinimum=0, units='m²'] | None) – Nonlinear effective area. Required by any of the intensity terms below.

  • kerr_index (Annotated[float, units='m²/W']) – Kerr coefficient n₂. Positive values red-shift the resonance.

  • tpa_coefficient (Annotated[float, minimum=0, units='m/W']) – Two-photon absorption coefficient.

  • fca_cross_section (Annotated[float, minimum=0, units='m²']) – Free-carrier absorption cross-section.

  • fcd_coefficient (Annotated[float, units='m³']) – Free-carrier index change per unit density. Negative for silicon.

  • confinement (Annotated[float, maximum=1, minimum=0]) – Fraction of the optical mode overlapping the two-photon material. It scales the TPA loss and the carriers it generates.

  • carrier_lifetime (Annotated[float, exclusiveMinimum=0, units='s'] | Interpolator | None) – Free-carrier lifetime, a constant in s or an photonforge.Interpolator over carrier density. Required by the free-carrier terms.

  • thermal_time_constant (Annotated[float, exclusiveMinimum=0, units='s'] | None) – Thermal relaxation time. Set together with thermal_capacity to enable self-heating.

  • thermal_capacity (Annotated[float, exclusiveMinimum=0, units='J/K'] | None) – Heat capacity of the heated volume. The steady-state thermal impedance is the ratio of the two.

  • absorbed_fraction (Annotated[float, maximum=1, minimum=0]) – Fraction of the linear loss that is absorption rather than scattering, and so heats the ring.

  • heater_resistance (Annotated[float, exclusiveMinimum=0, units='Ω'] | None) – If set, an electrical heater port is added, contributing V²/R to the thermal source.

  • carrier_samples (Annotated[int, minimum=2]) – Points used to resample an interpolator lifetime at setup.

  • z0 (Annotated[complex, units='Ω'] | None) – Reference impedance of the electrical port.

  • f_3dB (Annotated[float, minimum=0, units='Hz']) – -3 dB cutoff of the electrical drive. Only active for positive values.

Return type:

Component