Robochameleon  v1.0
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
NonlinearChannel_v1 Class Reference

Nonlinear fiber optical channel model using SSF method class. More...

Inherits unit.

Public Member Functions

function NonlinearChannel_v1 (in param)
 Class constructor. More...
 
function traverse (in obj, in in)
 Main function call.
 
- Public Member Functions inherited from unit
function traverseNode (in obj)
 Set unique ID when creating a unit. More...
 
function connectOutput (in obj, in uobj, in unitOutput, in nextUnitInput)
 Specify where signal should go next. More...
 
function connectOutputs (in obj, in units, in destInputs)
 Specify where signal should go next. More...
 
function writeInputBuffer (in obj, in sig, in inputId)
 write input buffer
 
function horzcat (in varargin)
 horizontal concatenation
 
function vertcat (in varargin)
 vertical concatenation
 
function setparams (in obj, in params, in REQUIRED_PARAMS, in QUIET_PARAMS)
 set parameters More...
 
function view (in obj)
 Show interactive GUI through unit_view-class.
 

Static Public Member Functions

static function randPolRotation (in in, in lambda)
 

Public Attributes

Property nSpans
 Number of fiber spans (fiber + amplifier)
 
Property L
 Length of each span in km: 1-by-nSpans vector;.
 
Property stepSize
 Step size for the Split Step Fourier Method in km: 1-by-nSpans vector;.
 
Property iterMax
 Maximum of split step iterations.
 
Property alphaa
 Fiber attenuation coefficient for polarization (a) in km^-1: 1-by-nSpans vector;.
 
Property alphab
 Fiber attenuation coefficient for polarization (b) in km^-1: 1-by-nSpans vector;.
 
Property gamma
 Nonlinear coefficient of the fiber in W^-1*km^-1;.
 
Property D
 Dispersion coefficient.
 
Property S
 Dispersion slope.
 
Property EDFAGain
 Gain of each optical amplifier (linear): 1-by-nSpans vector;.
 
Property EDFANF
 Noise figure of the optical amplifiers (linear): 1-by-nSpans vector;.
 
Property dispersionCompensationEnabled
 Dispersion compensation 0/1.
 
Property dispersionCompensationFraction
 Fraction of chromatic dispersion to compensate.
 
Property polarizationMixingEnabled
 Polarization Mixing: 0/1.
 
Property doublePrecisionEnabled
 SSF precision flag.
 
Property noEDFAEnabled
 Don't put EDFA.
 
Property nInputs
 Number of inputs.
 
Property nOutputs
 EDFA spontaneous emission factor (population inversion factor)
 
- Public Attributes inherited from unit
Property inputBuffer
 Buffer for storing inputs as we traverse the graph.
 
Property nextNodes
 Children nodes.
 
Property destInputs
 Destination inputs in children.
 
Property results
 For storing results.
 
Property label
 
Property draw
 enable/disable plotting
 
Property nInputs
 Number of signals traverse expects.
 
Property nOutputs
 Number of outputs traverse expects.
 

Detailed Description

Nonlinear fiber optical channel model using SSF method class.

This class implements the optical channel propagation model based on the numeric solution of the Non-Linear Schrodinger Equation (NLSE) using Split Step Fourier (SSF) method.

Observations:

  1. Please, pay attention to the dimensions. Make sure that the parameters are passed with the correct value in the correspondent unit.
  2. For the traverse method, only the two first columns of the signal vector will be considered (i.e., two polarization modes)
  3. Polarization mixing is implemented as a unitary transformation between spans. Polarization mode dispersion is not currently included. The core fiber model comes from ssprop from the Photonics Research Laboratory at the University of Maryland (Baltimore). ssprop has PMD included, but this unit does not have an interface to support it.

Conventions:

Example:

param.nlinch.nSpans = 2;
param.nlinch.dispersionCompensationEnabled = 1;
param.nlinch.polarizationMixingEnabled = 0;
param.nlinch.L = [50 80];
param.nlinch.stepSize = 5;
param.nlinch.iterMax = 15;
param.nlinch.alpha = 0.2;
param.nlinch.D = 17;
param.nlinch.S = [0.1 0.2];
param.nlinch.gamma = 1.7;
param.nlinch.EDFANF = [3 5];
param.nlinch.EDFAGain = [10 16];
fiberChannel = NonlinearChannel_v1(param.nlinch);
Ein = signal_interface(param.sig);
traverse(obj, Ein, InputPower, InputOSNR);

References:

Author
Edson Porto da Silva
Simone Gaiarin
Version
3

Definition at line 70 of file NonlinearChannel_v1.m.

Constructor & Destructor Documentation

function NonlinearChannel_v1::NonlinearChannel_v1 ( in  param)

Class constructor.

Constructs an object of type NonlinearChannel_v1.

Parameters
param.nSpansNumber of spans to be simulated.
param.LSpan lengths [km]. Vector [1 x nSpans] or scalar. [Default: 80]
param.stepSizeStep size for the SSF method [km]. Vector [1 x nSpans] or scalar. [Default: 10]
param.iterMaxMaximum of SSF iterations per step size [km]. [Default: 10].
param.alphaFiber attenuation coefficients [dB/km]. Vector [1 x nSpans] or scalar. [Default: 0.2]. Not used if alphaa and alphab specified.
param.alphaaFiber attenuation coefficients polarization X [dB/km]. Vector [1 x nSpans] or scalar. [Default: 0.2].
param.alphabFiber attenuation coefficients polarization Y [dB/km]. Vector [1 x nSpans] or scalar. [Default: 0.2]
param.DFiber dispesion coefficients [ps/nm/km].Vector [1 x nSpans] or scalar. [Default: 17]
param.SFiber dispesion slope [ps/nm^2/km]. Vector [1 x nSpans] or scalar. [Default: 0.1]
param.gammaFiber nonlinear coefficients [W^-1*km^-1]. Vector [1 x nSpans] or scalar. [Default: 1.2]
param.noEDFAEnabledIf true and there is only one link, the EDFA is not put at the end of the link
param.EDFANFEDFA's noise figure [dB]. Vector [1 x nSpans] or scalar. [Default: 16]
param.EDFAGainEDFA's gain [dB]. Vector [1 x nSpans] or scalar. [Default: 3]
param.dispersionCompensationEnabledionDispersion compensation flag. [Default: 0]
param.dispersionCompensationFractionFraction of span dispersion to compensate. [Default: 1]
param.polarizationMixingEnabledPolarization mixing flag. [Default: 0]
param.doublePrecisionEnabledPrecision flag. Set to 0 for speed. [Default: 1]

The documentation for this class was generated from the following file: