Remove Pref, and move ref_carrier definition

Finally, ref_carrier is not meant to change after design since
it is the carrier used for design. So let's move its definition
to networks function. Only ROADM need the ref_carrier baud rate
so let's define a dedicated variable in ROADM to hold it.

Signed-off-by: EstherLerouzic <esther.lerouzic@orange.com>
Change-Id: Ida7e42dd534a04c8df8792b44980f3fd2165ecb6
This commit is contained in:
EstherLerouzic
2022-10-23 08:36:57 +02:00
parent 7034d4c686
commit 139c8cc1e7
10 changed files with 62 additions and 121 deletions

View File

@@ -17,8 +17,7 @@ from copy import deepcopy
from gnpy.core.utils import lin2db, automatic_nch, dbm2watt, power_dbm_to_psd_mw_ghz, watt2dbm, psd2powerdbm
from gnpy.core.network import build_network
from gnpy.core.elements import Roadm
from gnpy.core.info import create_input_spectral_information, Pref, create_arbitrary_spectral_information, \
ReferenceCarrier
from gnpy.core.info import create_input_spectral_information, create_arbitrary_spectral_information, ReferenceCarrier
from gnpy.core.equipment import trx_mode_params
from gnpy.core.exceptions import ConfigurationError
from gnpy.tools.json_io import network_from_json, load_equipment, load_network, _spectrum_from_json, load_json, \
@@ -74,16 +73,15 @@ def test_equalization_combination_degree(delta_pdb_per_channel, degree, equaliza
}
roadm = Roadm(**roadm_config)
roadm.ref_pch_in_dbm['tata'] = 0
roadm.ref_carrier = ReferenceCarrier(baud_rate=32e9, slot_width=50e9)
frequency = 191e12 + array([0, 50e9, 150e9, 225e9, 275e9])
slot_width = array([37.5e9, 50e9, 75e9, 50e9, 37.5e9])
baud_rate = array([32e9, 42e9, 64e9, 42e9, 32e9])
signal = dbm2watt(array([-20.0, -18.0, -22.0, -25.0, -16.0]))
ref_carrier = ReferenceCarrier(baud_rate=32e9, slot_width=50e9)
pref = Pref(ref_carrier=ref_carrier)
si = create_arbitrary_spectral_information(frequency=frequency, slot_width=slot_width,
signal=signal, baud_rate=baud_rate, roll_off=0.15,
delta_pdb_per_channel=delta_pdb_per_channel,
tx_osnr=None, ref_power=pref)
tx_osnr=None)
to_json_before_propagation = {
'uid': 'roadm Lannion_CAS',
'type': 'Roadm',
@@ -216,12 +214,10 @@ def test_low_input_power(target_out, delta_pdb_per_channel, correction):
baud_rate = array([32e9, 42e9, 64e9, 42e9, 32e9])
signal = dbm2watt(array([-20.0, -18.0, -22.0, -25.0, -16.0]))
target = target_out + array(delta_pdb_per_channel)
ref_carrier = ReferenceCarrier(baud_rate=32e9, slot_width=50e9)
pref = Pref(ref_carrier=ref_carrier)
si = create_arbitrary_spectral_information(frequency=frequency, slot_width=slot_width,
signal=signal, baud_rate=baud_rate, roll_off=0.15,
delta_pdb_per_channel=delta_pdb_per_channel,
tx_osnr=None, ref_power=pref)
tx_osnr=None)
roadm_config = {
"uid": "roadm Brest_KLA",
"params": {
@@ -246,6 +242,7 @@ def test_low_input_power(target_out, delta_pdb_per_channel, correction):
}
roadm = Roadm(**roadm_config)
roadm.ref_pch_in_dbm['tata'] = 0
roadm.ref_carrier = ReferenceCarrier(baud_rate=32e9, slot_width=50e9)
si = roadm(si, degree='toto', from_degree='tata')
assert_allclose(watt2dbm(si.signal), target - correction, rtol=1e-5)
# in other words check that if target is below input power, target is applied else power is unchanged
@@ -269,12 +266,10 @@ def test_2low_input_power(target_out, delta_pdb_per_channel, correction):
baud_rate = array([32e9, 42e9, 64e9, 42e9, 32e9])
signal = dbm2watt(array([-20.0, -18.0, -22.0, -25.0, -16.0]))
target = psd2powerdbm(target_out, baud_rate) + array(delta_pdb_per_channel)
ref_carrier = ReferenceCarrier(baud_rate=32e9, slot_width=50e9)
pref = Pref(ref_carrier=ref_carrier)
si = create_arbitrary_spectral_information(frequency=frequency, slot_width=slot_width,
signal=signal, baud_rate=baud_rate, roll_off=0.15,
delta_pdb_per_channel=delta_pdb_per_channel,
tx_osnr=None, ref_power=pref)
tx_osnr=None)
roadm_config = {
"uid": "roadm Brest_KLA",
"params": {
@@ -299,6 +294,7 @@ def test_2low_input_power(target_out, delta_pdb_per_channel, correction):
}
roadm = Roadm(**roadm_config)
roadm.ref_pch_in_dbm['tata'] = 0
roadm.ref_carrier = ReferenceCarrier(baud_rate=32e9, slot_width=50e9)
si = roadm(si, degree='toto', from_degree='tata')
assert_allclose(watt2dbm(si.signal), target - correction, rtol=1e-5)
@@ -511,7 +507,6 @@ def test_equalization(case, deltap, target, mode, slot_width, equalization):
# boosters = ['east edfa in Brest_KLA to Quimper', 'east edfa in Lorient_KMA to Loudeac',
# 'east edfa in Lannion_CAS to Stbrieuc']
target_psd = power_dbm_to_psd_mw_ghz(target, 32e9)
ref = ReferenceCarrier(baud_rate=32e9, slot_width=50e9)
if case == 'SI':
delattr(equipment['Roadm']['default'], 'target_pch_out_db')
setattr(equipment['Roadm']['default'], equalization, target_psd)
@@ -537,7 +532,7 @@ def test_equalization(case, deltap, target, mode, slot_width, equalization):
path = compute_constrained_path(network, req)
si = create_input_spectral_information(
f_min=req.f_min, f_max=req.f_max, roll_off=req.roll_off, baud_rate=req.baud_rate, power=req.power,
spacing=req.spacing, tx_osnr=req.tx_osnr, ref_carrier=ref)
spacing=req.spacing, tx_osnr=req.tx_osnr)
for i, el in enumerate(path):
if isinstance(el, Roadm):
si = el(si, degree=path[i + 1].uid, from_degree=path[i - 1].uid)