mnoptical.link
¶
Module Contents¶
Classes¶
Computation taken from : M. Zirngibl Analytical model of Raman gain effects in massive |
|
The general form of the SRS model as proposed by M. Zirngibl in |
|
SRS model proposed in 'Raman-Induced Power Tilt in Arbitrarily |
|
SRS model proposed in the paper tilted: |
|
A Link refers to the connection between two network nodes (i.e., transceiver-ROADM or |
|
Attributes¶
- mnoptical.link.SpanTuple¶
- class mnoptical.link.SRS_Effect_Model(span)¶
Computation taken from : M. Zirngibl Analytical model of Raman gain effects in massive wavelength division multiplexed transmission systems, 1998. - Equation 10. - Most accurate for uniform loading cases.
- class mnoptical.link.Zirngibl_General_Model(span)¶
The general form of the SRS model as proposed by M. Zirngibl in Analytical model of Raman gain effects in massive wavelength division multiplexed transmission systems, 1998.” - Equation 7 - Most accurate for non-uniform loading cases.
- class mnoptical.link.Sylvestre_SRS_Model(span)¶
SRS model proposed in ‘Raman-Induced Power Tilt in Arbitrarily Large Wavelength-Division-MUltiplexed Systems’ by T. Sylvestre et al., 2005 - Equation 6
- class mnoptical.link.Bigo_SRS_Model(span)¶
SRS model proposed in the paper tilted: ‘Experimental Investigation of Stimulated Raman Scattering Limitation on WDM Transmission Over Various Types of Fiber Infrastructures’ by S.Bigo et al., 1999 - Equation 1 - Simplified form of the srs_effect_model() function
- class mnoptical.link.Link(src_node, dst_node, src_out_port=-1, dst_in_port=-1, boost_amp=None, spans=None, debugger=False, **params)¶
Bases:
object
A Link refers to the connection between two network nodes (i.e., transceiver-ROADM or ROADM-ROADM). In the future we must enable network-element-node to controller-node connectivity.
- srs_models¶
- srs_model¶
- length()¶
- Returns:
link length adding up span lengths in spans attribute
- describe()¶
- __repr__()¶
String representation
- reset()¶
Remove all optical signals from Link
- remove_optical_signal(optical_signal)¶
- include_optical_signal_in(optical_signal, power=None, ase_noise=None, nli_noise=None, tup_key=None)¶
Include optical signal in optical_signals :param optical_signal: OpticalSignal object :param power: power level of OpticalSignal :param ase_noise: ase noise level of OpticalSignal :param nli_noise: nli noise level of OpticalSignal :param tup_key: tuple key composed of (Link, Span)
- include_optical_signal_out(optical_signal, power=None, ase_noise=None, nli_noise=None)¶
Include optical signal in optical_signals_out :param optical_signal: OpticalSignal object :param power: power level of OpticalSignal :param ase_noise: ase noise level of OpticalSignal :param nli_noise: nli noise level of OpticalSignal :param tup_key: tuple key composed of (Link, Span)
- propagate(is_last_port=False, safe_switch=False)¶
Propagate the signals across the link :param is_last_port: boolean, needed for propagation algorithm :param safe_switch: boolean, needed for propagation algorithm :return:
- class mnoptical.link.Span(fibre_type='SMF', length=20.0, debugger=False, **params)¶
Bases:
object
- ids = 1¶
- anonymous = True¶
- describe()¶
- __repr__()¶
String representation
- reset()¶
- get_fibre_spectral_attenuation()¶
Retrieve the WDL of the single mode fibre :return: WDL of the SMF
- attenuation(signal_index=1)¶
Returns the attenuation value for each wavelength by the signal’s index :param signal_index:
- beta2(ref_wavelength=1.55e-06)¶
Returns beta2 from dispersion parameter. Dispersion is entered in ps/nm/km. Translated from the GNPy project source code :param ref_wavelength: can be a numpy array; default: 1550nm
- remove_optical_signal(optical_signal)¶
- include_optical_signal_in(optical_signal, power=None, ase_noise=None, nli_noise=None, in_port=None)¶
Include optical signal in optical_signals :param optical_signal: OpticalSignal object :param power: power level of OpticalSignal :param ase_noise: ase noise level of OpticalSignal :param nli_noise: nli noise level of OpticalSignal
- include_optical_signal_out(optical_signal, power=None, ase_noise=None, nli_noise=None)¶
Include optical signal in optical_signals_out :param optical_signal: OpticalSignal object :param power: power level of OpticalSignal :param ase_noise: ase noise level of OpticalSignal :param nli_noise: nli noise level of OpticalSignal
- set_input_port(*args, **kwargs)¶
- set_output_port(*args, **kwargs)¶
- propagate(optical_signals=None, is_last_port=False, safe_switch=False)¶
- output_nonlinear_noise()¶
Compute GN model and updates state data structures
- gn_model()¶
Computes the nonlinear interference power on a single carrier. Translated from the GNPy project source code The method uses eq. 120 from arXiv:1209.0394. :return: carrier_nli: the amount of nonlinear interference in W on the carrier under analysis
- static psi_factor(carrier, interfering_carrier, beta2, asymptotic_length)¶
Calculates eq. 123 from arXiv:1209.0394 Translated from the GNPy project source code