PolarizationModeDispersionTimeStepper

class photonforge.PolarizationModeDispersionTimeStepper(*, fir_taps=None)[source]

Time stepper for PolarizationModeDispersionModel.

Applies the model’s Jones matrix \(J(f)\) to the two polarizations as a 2x2 FIR filter on the envelope, so the time domain sees exactly the fibre realization that the S matrix describes. The reverse direction uses \(J^T\), as the model is reciprocal.

A pole-residue fit cannot stand in for this model: a lossless Jones matrix is never fitted passively, and enforcing passivity on the fit makes it lossy.

Parameters:

fir_taps (Annotated[int, exclusiveMinimum=0] | None) – Length of the filter. If None, it is set at setup from the largest delay spread the realization can have.

Note

The model has no common delay, so the filter latency of fir_taps // 2 time steps is added to the output. Like photonforge.abstract.fiber(), it runs in the pulse frame.

Verilog-A export writes the segments themselves, as delays and constant rotations, so the exported model is exact rather than filtered, with the same latency as this stepper.

Methods

bind_native(step, keys[, state, cstate, context])

Bind a compiled step function.

reset()

Reset any internal state of the time stepper.

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, outputs, time_index, ...)

Take a single time step on the given inputs.

update(*args, **kwargs)

Update this time stepper.

write_verilog_a(path, *[, backend, ...])

Write this configured time stepper as one Verilog-A module.

Attributes

parametric_function

Function used to update the time stepper.

parametric_kwargs

Keyword arguments used to update the time stepper.

path_delays

Minimum delay in time steps of each (input key, output key) signal path; missing pairs have no path and None means every input reaches every output within the time step.

properties

Object properties.

random_variables

Random variables associated to the time stepper's parameters.

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

Initialize internal state.

Parameters:
  • component (Component) – Component with a PolarizationModeDispersionModel.

  • 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 construct the time stepper. The carrier should be omitted from the input signals, as it is handled automatically by the time stepper.

  • kwargs (object) – Unused.

Return type:

None