mirror of
https://github.com/Telecominfraproject/oopt-gnpy.git
synced 2025-10-30 01:32:21 +00:00
57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
#!/usr/bin/env python3
|
|
# -*- coding: utf-8 -*-
|
|
|
|
"""
|
|
gnpy.core.info
|
|
==============
|
|
|
|
This module contains classes for modelling :class:`SpectralInformation`.
|
|
"""
|
|
|
|
from collections import namedtuple
|
|
from gnpy.core.utils import automatic_nch, lin2db
|
|
|
|
|
|
class Power(namedtuple('Power', 'signal nli ase')):
|
|
"""carriers power in W"""
|
|
|
|
|
|
class Channel(namedtuple('Channel', 'channel_number frequency baud_rate roll_off power chromatic_dispersion pmd')):
|
|
""" Class containing the parameters of a WDM signal.
|
|
|
|
:param channel_number: channel number in the WDM grid
|
|
:param frequency: central frequency of the signal (Hz)
|
|
:param baud_rate: the symbol rate of the signal (Baud)
|
|
:param roll_off: the roll off of the signal. It is a pure number between 0 and 1
|
|
:param power (gnpy.core.info.Power): power of signal, ASE noise and NLI (W)
|
|
:param chromatic_dispersion: chromatic dispersion (s/m)
|
|
:param pmd: polarization mode dispersion (s)
|
|
"""
|
|
|
|
|
|
class Pref(namedtuple('Pref', 'p_span0, p_spani, neq_ch ')):
|
|
"""noiseless reference power in dBm:
|
|
p_span0: inital target carrier power
|
|
p_spani: carrier power after element i
|
|
neq_ch: equivalent channel count in dB"""
|
|
|
|
|
|
class SpectralInformation(namedtuple('SpectralInformation', 'pref carriers')):
|
|
|
|
def __new__(cls, pref, carriers):
|
|
return super().__new__(cls, pref, carriers)
|
|
|
|
|
|
def create_input_spectral_information(f_min, f_max, roll_off, baud_rate, power, spacing):
|
|
# pref in dB : convert power lin into power in dB
|
|
pref = lin2db(power * 1e3)
|
|
nb_channel = automatic_nch(f_min, f_max, spacing)
|
|
si = SpectralInformation(
|
|
pref=Pref(pref, pref, lin2db(nb_channel)),
|
|
carriers=[
|
|
Channel(f, (f_min + spacing * f),
|
|
baud_rate, roll_off, Power(power, 0, 0), 0, 0) for f in range(1, nb_channel + 1)
|
|
]
|
|
)
|
|
return si
|