Links¶
-
class
Links.
BaseLink
[source]¶ Base class for fiber-optic links. All link classes should be derived from it.
Link classes simulate the transmission of a fiber input through a series of fiber spans, possibly connected by amplifies.
Any list class should implement the abstract transmit(…) method defined below and set the attributes
- _span_length
- _n_spans
during construction. Users can access them via the read-only properties span_length and n_spans.
-
n_spans
¶ Number of spans in the fiber link.
-
span_length
¶ Length of a fiber span in m.
-
transmit
(input)[source]¶ Simulates the transmission of a fiber input through the link.
Parameters: input (numpy.array(complex)) – Vector of equispaced time domain samples representing the fiber input. Returns: Vector of equispaced time domain samples representing the fiber output. Return type: numpy.array(complex)
-
class
Links.
SMFSplitStep
(dt, dz, nz, alpha=0.0, beta2=1.0, gamma=-1.0, verbose=False, n_spans=1, post_boost=False, noise=False, noise_figure=3, center_frequency=193100000000000.0)[source]¶ Simulates a link with one or several single mode fiber spans connected by EDFA or Raman amplifiers using a split step method based on SSPROP.
Only a single polarization is simulated. Contributions from the other polarization to the ASE noise are not included.
-
__init__
(dt, dz, nz, alpha=0.0, beta2=1.0, gamma=-1.0, verbose=False, n_spans=1, post_boost=False, noise=False, noise_figure=3, center_frequency=193100000000000.0)[source]¶ Constructor.
Parameters: - dt (float) – Time step in s.
- dz (float) – Spatial step in m.
- nz (int) – Number of spatial steps for one fiber span.
- alpha (float or numpy.array(float)) – Fiber loss coefficient in 1/m. It is possible to pass a vector of length nz in order to specify an individual loss coefficient for each of the segments of a span. Noise-free Raman amplification can be implemented using this feature.
- beta2 (float) – Fiber dispersion coefficient in s**2/m.
- gamma (float) – Fiber nonlinearity coefficient in (W m)**(-1).
- verbose (bool) – Set to True for diagnostic ouputs.
- n_spans (int) – Number of fiber spans in the link.
- post_boost (bool) – Accumulated fiber loss is compensated with a gain at the end of each fiber span if True. Requires alpha to be a scalar. EDFA amplification can be implemented using this feature.
- noise (bool) – Add amplified spontaneous emission (ASE) noise at the end of each fiber span. EDFA amplification can be implemented using this feature.
- noise_figure (float) – Noise figure in dB for determining the ASE noise if noise==True.
- center_frequency (float) – Center frequency in Hz for determining the ASE noise if noise==True.
-
transmit
(input)[source]¶ Simulates the transmission of a fiber input through the link.
Parameters: input (numpy.array(complex)) – Vector of equispaced time domain samples representing the fiber input. Returns: Vector of equispaced time domain samples representing the fiber output. Return type: numpy.array(complex)
-