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
Coldren, L. A., Corzine, S. W., & Ma, M. L. (2012). Diode Lasers and Photonic Integrated Circuits. Wiley.
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_functionFunction used to update a parametric component.
parametric_kwargsKeyword arguments used to update a parametric component.
propertiesObject properties.
random_variablesRandom variables associated to this modles's parameters.
- 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]