DMLaserTimeStepper

class photonforge.DMLaserTimeStepper(*, quantum_efficiency, spontaneous_emission_factor, carrier_lifetime, gain_compression_factor, transparency_carrier_density, differential_gain, n_group, linewidth_enhancement_factor, confinement_factor, photon_lifetime, active_region_volume, rel_intensity_noise=0, linewidth=0, reflection=0, seed=None)[source]

Time-stepper for a directly modulated laser source.

This model solves the single-mode semiconductor laser rate equations for photon density (\(p\)), carrier density (\(n\)), and optical phase (\(\phi\)). The model includes gain compression, and intensity and phase noises (implemented similarly to CWLaserTimeStepper).

The rate equations are:

\[ \begin{align}\begin{aligned}\frac{{\rm d} p}{{\rm d} t} &= \Gamma G(p) (n-n_0) p - \frac{p}{\tau_p} + \frac{\beta\Gamma}{\tau_n}n\\\frac{{\rm d} n}{{\rm d} t} &= \frac{I(t)}{q V_a} - G(p) (n-n_0) p - \frac{n}{\tau_n}\\\frac{{\rm d} \phi}{{\rm d} t} &= \frac{\alpha}{2} \left(\Gamma v_g a_0 (n-n_0) - \frac{1}{\tau_p}\right)\\G(p) &= \frac{c_0}{n_g} \frac{a_0}{1 + \epsilon p}\end{aligned}\end{align} \]

From the solution of the rate equations at each time step, the instantaneous output power and complex field amplitude for a carrier with frequency \(f_c\) are:

\[ \begin{align}\begin{aligned}P_\text{out} &= \frac{\eta_0 h f_c V_a}{2 \Gamma \tau_p} p\\A &= \sqrt{P_\text{out}} e^{j\phi}\end{aligned}\end{align} \]
Parameters:
  • quantum_efficiency (Annotated[float, minimum=0]) – Total quantum efficiency (\(\eta_0\)) for power calibration.

  • spontaneous_emission_factor (Annotated[float, minimum=0]) – Fraction of spontaneous emission coupled into the lasing mode (:math`beta`).

  • carrier_lifetime (Annotated[float, exclusiveMinimum=0, units='s']) – Effective carrier recombination lifetime (\(\tau_n\)).

  • gain_compression_factor (Annotated[float, minimum=0, units='m³']) – Gain compression coefficient (\(\epsilon\)).

  • transparency_carrier_density (Annotated[float, minimum=0, units='m⁻³']) – Transparency carrier density (\(n_0\)).

  • differential_gain (Annotated[float, minimum=0, units='m³/s']) – Differential material gain coefficient (\(a_0\)).

  • n_group (Annotated[float, minimum=0]) – Optical group index in the gain medium (\(n_g\)).

  • linewidth_enhancement_factor (Annotated[float, minimum=0]) – Henry’s α factor (\(\alpha\)) for AM-FM coupling.

  • confinement_factor (Annotated[float, exclusiveMinimum=0]) – Modal confinement in the active region (\(\Gamma\)).

  • photon_lifetime (Annotated[float, exclusiveMinimum=0, units='s']) – Photon lifetime in the optical cavity (\(\tau_p\)).

  • active_region_volume (Annotated[float, exclusiveMinimum=0, units='m³']) – Volume of the active gain region (\(V_a\)).

  • rel_intensity_noise (Annotated[float, minimum=0, units='1/Hz']) – One-sided relative intensity noise (RIN) power spectral density.

  • linewidth (Annotated[float, minimum=0, units='Hz']) – Full-width at half-maximum (FWHM) of the laser’s Lorentzian shape.

  • reflection (complex) – Reflection coefficient for incident fields.

  • seed (Annotated[int, minimum=0] | None) – Random number generator seed to ensure reproducibility.

References

  1. Coldren, L. A., Corzine, S. W., & Ma, M. L. (2012). Diode Lasers and Photonic Integrated Circuits. Wiley.

  2. Agrawal, G. P., & Dutta, N. K. (1993). Semiconductor Lasers. Van Nostrand Reinhold.

Methods

reset()

Reset internal state.

setup(component, time_step, *[, ...])

Initialize the time stepper.

setup_state(*, component, time_step, ...)

Initialize internal state.

step([inputs, steps, time_step, show_progress])

Compute the outputs of this time stepper, given inputs.

step_single(inputs, time_index, ...)

Take a single time step on the given inputs.

update(*args, **kwargs)

Update this time stepper.

Attributes

parametric_function

Function used to update a parametric component.

parametric_kwargs

Keyword arguments used to update a parametric component.

properties

Object properties.

random_variables

Random variables associated to this modles's parameters.

reset()[source]

Reset internal state.

setup_state(*, component, time_step, carrier_frequency, **kwargs)[source]

Initialize internal state.

Parameters:
  • component (Component) – Component representing the laser source.

  • time_step (Annotated[float, minimum=0, units='s']) – The interval between time steps (in seconds).

  • carrier_frequency (Annotated[float, minimum=0, units='Hz']) – The carrier frequency used to determine the photon energy in the model.

  • kwargs – Unused.

step_single(inputs, time_index, update_state, shutdown)[source]

Take a single time step on the given inputs.

Parameters:
  • inputs (dict[str, complex]) – Dictionary containing inputs at the current time step, mapping port names to complex values.

  • time_index (int) – Time series index for the current input.

  • update_state (bool) – Whether to update the internal stepper state.

  • shutdown (bool) – Whether this is the last call to the single stepping function for the provided TimeSeries.

Returns:

Outputs at the current time step.

Return type:

dict[str, complex]