comnum.gn_model#

comnum.gn_model(fiber, freqs, power_dbm, symbol_rate, *, rolloff=0.1, channel=None, coherent=True, resolution_hz=None, raman=None, modulation=None, px=None)#

The GN model of the nonlinear interference of a WDM link (Poggiolini 2012).

The NLI power spectral density at the receiver is the double integral of the GN reference formula, computed on a grid, with the coherent accumulation of the spans (coherent=True, the phased-array factor) or the incoherent one (N_s times a span). Channels have raised-cosine spectra of roll-off rolloff at the symbol rate symbol_rate, centred on freqs (Hz, relative to the carrier), with the launch powers power_dbm (one per channel or one for all, both polarisations).

Returns:

nli_psd and ase_psd (W/Hz, both polarisations, at the frequency of channel channel), snr_db (after a matched filter), eta (NLI PSD per W³ of launch power per channel) and p_opt_dbm (the optimal launch power per channel for equal powers; with raman, eta and p_opt_dbm are those of the profiles of 1 mW per channel).

Return type:

dict

With raman (the keys of fiber.raman, see raman_profile()), the power profiles of the channels along the span replace the exponential decay in the link function (the generalised GN model of Semrau et al. 2019), the noise is the spontaneous Raman noise plus the ASE of the EDFA that restores every channel, and the channels are restored to their launch power after every span.

With modulation (a constellation, a name such as "16-QAM", or "gaussian") and optionally its probabilities px, the NLI is that of the EGN model (Carena et al. 2014): the GN model corrected for the fourth and sixth moments of the symbols (see format_moments()), for the self-channel interference and the cross-channel interference of every other channel.

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 raised-cosine spectra.

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

  • coherent (bool) – coherent accumulation of the spans.

  • resolution_hz (float, optional) – step of the integration grid (Hz).

  • raman (dict, optional) – Raman pumps and ISRS (see raman_profile()).

  • modulation (Constellation | str, optional) – the modulation format of the EGN model.

  • px (array_like, optional) – the probabilities of its points.

Raises:

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