comnum.gn_isrs_closed_form#

comnum.gn_isrs_closed_form(fiber, freqs, power_dbm, symbol_rate, *, rolloff=0.1, channel=None, raman_slope_w_km_thz=0.028, epsilon=None)#

The closed form of the ISRS GN model of Semrau, Killey & Bayvel (2019). It gives the NLI coefficient (J. Lightw. Technol. 37(9), 1924–1936) of a channel of a WDM signal whose power profile along the span is tilted by inter-channel stimulated Raman scattering, in microseconds instead of the minutes of the integral of gn_model(). The SPM of the channel (eq. (10)) and the XPM of every other channel (eq. (11)) are summed over the spans by eq. (5), the SPM coherently as n ** (1 + epsilon), the XPM incoherently; the ISRS enters to first order in the total launch power times the slope raman_slope_w_km_thz of the Raman gain spectrum (0.028 /W/km/THz for standard single-mode fibre; 0 for no ISRS). Channels have rectangular spectra of bandwidth symbol_rate * (1 + rolloff); fiber gives the loss, the dispersion and its slope, the nonlinear coefficient and the number of spans (the span length does not enter: exp(-alpha L) << 1).

The paper’s eq. (10) ends with a term that is not dimensionless; it is left out (see comnum_channel::optical::gn::isrs_closed_form_terms): the closed form follows the dashed curves of Figs. 4a, 4b and 5 of the paper within 0.3 dB away from the band edges (validation/tests/fiber/semrau2019.rs).

Parameters:
  • fiber (FiberParams) – the link.

  • freqs (array_like) – centre frequencies of the channels relative to the carrier (Hz).

  • power_dbm (float | array_like) – launch power of every channel (dBm, both polarisations), one for all or one per channel.

  • symbol_rate (float) – symbol rate of every channel (Bd).

  • rolloff (float) – roll-off of the channels (the bandwidth is symbol_rate * (1 + rolloff)).

  • channel (int, optional) – the channel of interest (the middle one by default).

  • raman_slope_w_km_thz (float) – the slope C_r of the linear regression of the normalised Raman gain spectrum (1/W/km/THz).

  • epsilon (float, optional) – the coherence factor of the SPM; by default Poggiolini’s eq. (22) (J. Lightw. Technol. 30(24), 2012) over the bandwidth of the channel.

Returns:

eta (1/W²: the NLI power of the channel is eta * P**3; divide by the bandwidth for the PSD per W³ of gn_model()), eta_spm and eta_xpm (the two terms, one span), epsilon and snr_db (with the ASE of the EDFAs of fiber in the bandwidth of the channel).

Return type:

dict

Raises:

ValueError – for an invalid parameter or input (the message names it).

Examples

>>> import comnum
>>> fiber = comnum.FiberParams(span_km=100, n_spans=6, gamma_w_km=1.2, slope_ps_nm2_km=0.067)
>>> r = comnum.gn_isrs_closed_form(fiber, comnum.wdm_grid(5, 40.005e9), 0.0, 40e9, rolloff=1e-4)
>>> bool(0.1 < r["epsilon"] < 0.2 and r["eta_xpm"] > r["eta_spm"] > 0)
True