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)

NFDMLab

Navigation

  • Installation
  • Getting Started
  • Code documentation
    • Constellations
    • Filters
    • Helpers
    • Normalization
    • Links
    • Modulators
    • Quality Assessment
    • Examples
  • Videos

Related Topics

  • Documentation overview
    • Code documentation
      • Previous: Normalization
      • Next: Modulators

Quick search

©. | Powered by Sphinx 1.8.4 & Alabaster 0.7.12 | Page source