Add tilt computation for design targets

Compute the tilts only if raman-flag in sim_params is turned on.
Use actual input power in fiber (according to expected propagation
during design).
Creates a function that computes the expected tilt after propagation
in a span, and returns the normalized power difference at the center
frequency of each band, and the tilt experenced between lower and
upper frequency in each band.
Include the expected tilt when computing target gains of amplifiers.
Current function requires that the bands remain in the same order.
(ordering is ensured when creating the objects).

Change-Id: I28bdf13f2010153175e8b6d199fd8eea15d7b292
This commit is contained in:
EstherLerouzic
2024-02-12 15:05:46 +01:00
committed by Esther Le Rouzic
parent 24f4503020
commit f621ca6fe7
20 changed files with 418 additions and 50 deletions

View File

@@ -913,19 +913,22 @@ class Edfa(_Node):
@property
def to_json(self):
return {'uid': self.uid,
'type': type(self).__name__,
'type_variety': self.params.type_variety,
'operational': {
'gain_target': round(self.effective_gain, 6) if self.effective_gain else None,
'delta_p': self.delta_p,
'tilt_target': self.tilt_target, # defined per lambda on the amp band
'out_voa': self.out_voa
},
'metadata': {
'location': self.metadata['location']._asdict()
}
}
_to_json = {
'uid': self.uid,
'type': type(self).__name__,
'type_variety': self.params.type_variety,
'operational': {
'gain_target': round(self.effective_gain, 6) if self.effective_gain else None,
'delta_p': self.delta_p,
'tilt_target': round(self.tilt_target, 5) if self.tilt_target is not None else None,
# defined per lambda on the amp band
'out_voa': self.out_voa
},
'metadata': {
'location': self.metadata['location']._asdict()
}
}
return _to_json
def __repr__(self):
return (f'{type(self).__name__}(uid={self.uid!r}, '
@@ -947,7 +950,8 @@ class Edfa(_Node):
return '\n'.join([f'{type(self).__name__} {self.uid}',
f' type_variety: {self.params.type_variety}',
f' effective gain(dB): {self.effective_gain:.2f}',
f' (before att_in and before output VOA)',
' (before att_in and before output VOA)',
f' tilt-target(dB) {self.tilt_target:.2f}',
f' noise figure (dB): {nf:.2f}',
f' (including att_in)',
f' pad att_in (dB): {self.att_in:.2f}',

View File

@@ -12,12 +12,13 @@ from operator import attrgetter
from collections import namedtuple
from functools import reduce
from logging import getLogger
from typing import Tuple, List, Optional, Union
from typing import Tuple, List, Optional, Union, Dict
from networkx import DiGraph
from numpy import allclose
import warnings
from gnpy.core import elements
from gnpy.core.equipment import find_type_varieties
from gnpy.core.equipment import find_type_variety, find_type_varieties
from gnpy.core.exceptions import ConfigurationError, NetworkTopologyError
from gnpy.core.utils import round2float, convert_length, psd2powerdbm, lin2db, watt2dbm, dbm2watt, automatic_nch, \
find_common_range
@@ -137,7 +138,7 @@ def select_edfa(raman_allowed: bool, gain_target: float, power_target: float, ed
return selected_edfa.variety, power_reduction
def target_power(network, node, equipment): # get_fiber_dp
def target_power(network, node, equipment, deviation_db): # get_fiber_dp
"""Computes target power using J. -L. Auge, V. Curri and E. Le Rouzic,
Open Design for Multi-Vendor Optical Networks, OFC 2019.
equation 4
@@ -148,7 +149,8 @@ def target_power(network, node, equipment): # get_fiber_dp
SPAN_LOSS_REF = 20
POWER_SLOPE = 0.3
dp_range = list(equipment['Span']['default'].delta_power_range_db)
node_loss = span_loss(network, node, equipment)
node_loss = span_loss(network, node, equipment) + deviation_db
try:
dp = round2float((node_loss - SPAN_LOSS_REF) * POWER_SLOPE, dp_range[2])
dp = max(dp_range[0], dp)
@@ -264,6 +266,154 @@ def span_loss(network, node, equipment, input_power=None):
return loss - gain
def estimate_srs_power_deviation(network: DiGraph, last_node, equipment: dict, design_bands: dict, input_powers: dict) \
-> List[dict]:
"""Estimate tilt of power accross the design bands.
If Raman flag is on (sim-params), then estimate the bands center frequency power and the
power tilt within each band.
Uses stimulated_raman_scattering loss_profile. This may be time consuming.
Args:
network: The network object.
last_node: The last node (Fiber or RamanFiber) of the considered span. The span may be made of
a succession of fiber and fused elements
equipment: The equipment parameters dictionary.
design_bands: The dictionary of design bands.
input_powers: The dictionary of input powers in the fiber span for each design band.
Returns:
A list of dictionnary containing the power at band centers and the tilt within each band.
"""
# Get reference channel parameters
roll_off = equipment['SI']['default'].roll_off
baud_rate = equipment['SI']['default'].baud_rate
spacing = equipment['SI']['default'].spacing
tx_osnr = equipment['SI']['default'].tx_osnr
# Create input spectral information for the first design band
band_name0 = list(design_bands.keys())[0]
band0 = design_bands[band_name0]
spectral_information = \
create_input_spectral_information(f_min=band0['f_min'], f_max=band0['f_max'], roll_off=roll_off,
baud_rate=baud_rate, spacing=spacing,
tx_osnr=tx_osnr, tx_power=input_powers[band_name0])
# Create input spectral information for the remaining design bands
for band_name, band in list(design_bands.items())[1:]:
spectral_information = spectral_information + \
create_input_spectral_information(f_min=band['f_min'], f_max=band['f_max'], roll_off=roll_off,
baud_rate=baud_rate, spacing=spacing,
tx_osnr=tx_osnr, tx_power=input_powers[band_name])
# collect preceding nodes Fiber and Fused
prev_nodes = [n for n in prev_node_generator(network, last_node)]
prev_nodes.append(last_node)
for elem in prev_nodes:
# compute SRS tilt
if isinstance(elem, elements.Fiber):
# computes the power profile and resulting srs_power_deviation after each fiber span
srs = RamanSolver.calculate_stimulated_raman_scattering(spectral_information, fiber=elem)
# records per band
srs_power_deviation = []
center_frequency_powers = []
for band_name, band in design_bands.items():
# find center frequency power
center_frequency = (band['f_max'] + band['f_min']) / 2
center_frequency_index = abs(srs.frequency - center_frequency).argmin()
center_frequency_power = srs.power_profile[center_frequency_index][-1]
center_frequency_powers.append(center_frequency_power / input_powers[band_name])
index_f_min = abs(srs.frequency - band['f_min']).argmin()
index_f_max = abs(srs.frequency - band['f_max']).argmin()
srs_power_deviation.append({'center_frequency_power': center_frequency_power / input_powers[band_name],
'in_band_power_deviation_db': watt2dbm(srs.power_profile[index_f_min][-1])
- watt2dbm(srs.power_profile[index_f_max][-1])})
# apply the attenuation due to the fiber losses
# apply attenuation for possible next fiber in the list
# (computes the srs_power_deviation for the whole list)
attenuation_fiber = srs.loss_profile[:spectral_information.number_of_channels, -1]
spectral_information.apply_attenuation_lin(attenuation_fiber)
elif isinstance(elem, elements.Fused):
spectral_information.apply_attenuation_db(elem.loss)
else:
# to be removed when patch is finished
raise ValueError('unexpected type. supported types for srs_power_deviation estimation are Fiber and Fused')
return srs_power_deviation
def compute_band_power_deviation_and_tilt(srs_power_deviation, design_bands: dict, ratio: float = 0.8):
"""Compute the power difference between bands (at center frequency) and the power tilt within each
band.
Args:
srs_power_deviation: The list of dictionnary containing the power at band centers and the tilt within each band.
ratio: the ratio applied to compute the band tilt
Returns:
A tupple of dict containing the relative power deviation with respect to max value, per band in dB and the tilt
target to apply for each band.
"""
# if there is no SRS computed, there is no tilt, and the result should be zero for tilt estimation
# else, let's use the power difference between bands (due to SRS) to estimate the tilt between bands,
# and apply these values with a ratio to the next amplifier gain target, to compensate for this difference.
deviation_db = {}
tilt_target = {}
max_center_frequency_powers = max([e['center_frequency_power'] for e in srs_power_deviation])
for band_name, tilt_elem in zip(design_bands.keys(), srs_power_deviation):
deviation_db[band_name] = watt2dbm(ratio * max_center_frequency_powers) \
- watt2dbm(tilt_elem['center_frequency_power'])
tilt_target[band_name] = tilt_elem['in_band_power_deviation_db']
if allclose([t['in_band_power_deviation_db'] for t in srs_power_deviation], 0, atol=1e-9):
for band_name in design_bands.keys():
deviation_db[band_name] = 0.0
tilt_target[band_name] = 0.0
return deviation_db, tilt_target
def compute_tilt_using_previous_and_next_spans(prev_node, next_node, design_bands: List[str],
input_powers: Dict[str, float], equipment: dict, network: DiGraph, prev_weight: float = 1.0,
next_weight: float = 0) -> Tuple[Dict[str, float], Dict[str, float]]:
"""Compute the power deviation per band and the tilt target based on previous and next spans.
This function estimates the power deviation between center frequencies due to previous span and
the tilt within each band using the previous and next fiber spans with a weight (default ony uses
previous span contribution).
Args:
prev_node: The previous node in the network.
next_node: The next node in the network.
design_bands (List[str]): A list of design bands for which the tilt is computed.
input_powers (Dict[str, float]): A dictionary of input powers for each design band.
equipment (dict): Equipment specifications.
network (DiGraph): The network graph.
prev_weight (float): Weight for the previous tilt in the target calculation (default is 1.0).
next_weight (float): Weight for the next tilt in the target calculation (default is 0.0).
Returns:
Tuple[Dict[str, float], Dict[str, float]]:
- A dictionary containing the tilt estimation for each design band.
- A dictionary containing the tilt target for each design band.
"""
tilt_estimation = {band: 0 for band in design_bands}
prev_tilt_target = {band: 0 for band in design_bands}
next_tilt_target = {band: 0 for band in design_bands}
if isinstance(prev_node, (elements.Fiber)):
# get the estimated tilt on previous span
srs_power_deviation = estimate_srs_power_deviation(network, prev_node, equipment, design_bands=design_bands,
input_powers=input_powers)
tilt_estimation, prev_tilt_target = compute_band_power_deviation_and_tilt(srs_power_deviation,
design_bands=design_bands, ratio=0.86)
if isinstance(next_node, (elements.Fiber)):
# get estimated tilt on next span
# use the same input powers (approximation!) since current amp dp and voa have not yet been computed
srs_power_deviation = estimate_srs_power_deviation(network, find_last_node(network, next_node), equipment,
design_bands=design_bands, input_powers=input_powers)
_, next_tilt_target = compute_band_power_deviation_and_tilt(srs_power_deviation, design_bands=design_bands,
ratio=0.86)
tilt_target = {band_name: prev_weight * prev_t + next_weight * next_tilt_target[band_name]
for band_name, prev_t in prev_tilt_target.items()}
return tilt_estimation, tilt_target
def find_first_node(network, node):
"""Fused node interest:
returns the 1st node at the origin of a succession of fused nodes
@@ -340,8 +490,8 @@ def check_oms_single_type(oms_edges: List[Tuple]) -> List[str]:
return list(types)
def compute_gain_power_target(node: elements.Edfa, prev_node, next_node, power_mode: bool, prev_voa: float, prev_dp: float,
pref_total_db: float, network: DiGraph, equipment: dict) \
def compute_gain_power_and_tilt_target(node: elements.Edfa, prev_node, next_node, power_mode: bool, prev_voa: float, prev_dp: float,
pref_total_db: float, network: DiGraph, equipment: dict, deviation_db: float, tilt_target: float) \
-> Tuple[float, float, float, float, float]:
"""Computes the gain and power targets for a given EDFA node.
@@ -355,6 +505,8 @@ def compute_gain_power_target(node: elements.Edfa, prev_node, next_node, power_m
pref_total_db (float): The reference total power in dB.
network (DiGraph): The network.
equipment (dict): A dictionary containing equipment specifications.
deviation_db (float): Power deviation due to band tilt during propagation before crossing this node.
tilt_target (float) : Tilt target to be configured on this amp for its amplification band.
Returns:
Tuple[float, float, float, float, float]: A tuple containing:
@@ -367,18 +519,22 @@ def compute_gain_power_target(node: elements.Edfa, prev_node, next_node, power_m
node_loss = span_loss(network, prev_node, equipment)
voa = node.out_voa if node.out_voa else 0
if node.operational.delta_p is None:
dp = target_power(network, next_node, equipment) + voa
dp = target_power(network, next_node, equipment, deviation_db) + voa
else:
dp = node.operational.delta_p
if node.effective_gain is None or power_mode:
gain_target = node_loss + dp - prev_dp + prev_voa
gain_target = node_loss + deviation_db + dp - prev_dp + prev_voa
else: # gain mode with effective_gain
gain_target = node.effective_gain
dp = prev_dp - node_loss - prev_voa + gain_target
dp = prev_dp - (node_loss + deviation_db) - prev_voa + gain_target
if node.operational.tilt_target is None:
_tilt_target = -tilt_target
else:
_tilt_target = node.operational.tilt_target
power_target = pref_total_db + dp
return gain_target, power_target, dp, voa, node_loss
return gain_target, power_target, _tilt_target, dp, voa, node_loss
def filter_edfa_list_based_on_targets(edfa_eqpt: dict, power_target: float, gain_target: float,
@@ -472,8 +628,8 @@ def filter_edfa_list_based_on_targets(edfa_eqpt: dict, power_target: float, gain
def preselect_multiband_amps(_amplifiers: dict, prev_node, next_node, power_mode: bool, prev_voa: dict, prev_dp: dict,
pref_total_db: float, network: DiGraph, equipment: dict, restrictions: List,
_design_bands: dict):
"""Preselect multiband amplifiers that are eligible with respect to power and gain target
_design_bands: dict, deviation_db: dict, tilt_target: dict):
"""Preselect multiband amplifiers that are eligible with respect to power, gain and tilt target
on all the bands.
At this point, the restrictions list already includes constraint related to variety_list,
@@ -493,6 +649,8 @@ def preselect_multiband_amps(_amplifiers: dict, prev_node, next_node, power_mode
equipment: The equipment.
restrictions (list of equipment name): The restrictions.
_design_bands (dict): The design bands.
deviation_db (dict): The tilt power per band.
tilt_target (dict): The tilt target in each band.
Returns:
list: A list of preselected multiband amplifiers that are eligible for all the bands.
@@ -508,12 +666,12 @@ def preselect_multiband_amps(_amplifiers: dict, prev_node, next_node, power_mode
for m in _selected_type_varieties for t in equipment['Edfa'][m].multi_band
if equipment['Edfa'][t].f_min <= _design_bands[band]['f_min']
and equipment['Edfa'][t].f_max >= _design_bands[band]['f_max']}
# get the target gain and power based on previous propagation
gain_target, power_target, _, _, _ = \
compute_gain_power_target(amp, prev_node, next_node, power_mode, prev_voa[band], prev_dp[band],
pref_total_db, network, equipment)
# get the target gain, power and tilt based on previous propagation
gain_target, power_target, _tilt_target, _, _, _ = \
compute_gain_power_and_tilt_target(amp, prev_node, next_node, power_mode, prev_voa[band], prev_dp[band],
pref_total_db, network, equipment, deviation_db[band], tilt_target[band])
_selection = [a.variety
for a in filter_edfa_list_based_on_targets(edfa_eqpt, power_target, gain_target, None,
for a in filter_edfa_list_based_on_targets(edfa_eqpt, power_target, gain_target, _tilt_target,
target_extended_gain)]
listes = find_type_varieties(_selection, equipment)
_selected_type_varieties = []
@@ -525,8 +683,9 @@ def preselect_multiband_amps(_amplifiers: dict, prev_node, next_node, power_mode
def set_one_amplifier(node: elements.Edfa, prev_node, next_node, power_mode: bool, prev_voa: float, prev_dp: float,
pref_ch_db: float, pref_total_db: float, network: DiGraph, restrictions: List[str],
equipment: dict, verbose: bool) -> Tuple[float, float]:
pref_ch_db: float, pref_total_db: float, network: DiGraph, restrictions: List[str],
equipment: dict, verbose: bool, deviation_db: float = 0.0, tilt_target: float = 0.0) \
-> Tuple[float, float]:
"""Set the EDFA amplifier configuration based on power targets:
This function adjusts the amplifier settings according to the specified parameters and
@@ -550,9 +709,9 @@ def set_one_amplifier(node: elements.Edfa, prev_node, next_node, power_mode: boo
Returns:
tuple[float, float]: The updated delta power and variable optical attenuator values.
"""
gain_target, power_target, dp, voa, node_loss = \
compute_gain_power_target(node, prev_node, next_node, power_mode, prev_voa, prev_dp,
pref_total_db, network, equipment)
gain_target, power_target, _tilt_target, dp, voa, node_loss = \
compute_gain_power_and_tilt_target(node, prev_node, next_node, power_mode, prev_voa, prev_dp,
pref_total_db, network, equipment, deviation_db, tilt_target)
if isinstance(prev_node, elements.Fiber):
max_fiber_lineic_loss_for_raman = \
equipment['Span']['default'].max_fiber_lineic_loss_for_raman * 1e-3 # dB/m
@@ -604,6 +763,7 @@ def set_one_amplifier(node: elements.Edfa, prev_node, next_node, power_mode: boo
node.delta_p = dp if power_mode else None
node.effective_gain = gain_target
node.tilt_target = _tilt_target
# if voa is not set, then set it and possibly optimize it with gain and update delta_p and
# effective_gain values
set_amplifier_voa(node, power_target, power_mode)
@@ -730,7 +890,12 @@ def set_egress_amplifier(network: DiGraph, this_node: Union[elements.Roadm, elem
voa[band_name] = 0
for node, next_node in oms_nodes:
# go through all nodes in the OMS (loop until next Roadm instance)
# go through all nodes in the OMS
input_powers = {band_name: dbm2watt(pref_ch_db + prev_dp[band_name] - prev_voa[band_name])
for band_name in _design_bands}
deviation_db, tilt_target = \
compute_tilt_using_previous_and_next_spans(prev_node, next_node, _design_bands, input_powers,
equipment, network)
if isinstance(node, elements.Edfa):
band_name, _ = next((n, b) for n, b in _design_bands.items())
restrictions = get_node_restrictions(node, prev_node, next_node, equipment, _design_bands)
@@ -755,7 +920,8 @@ def set_egress_amplifier(network: DiGraph, this_node: Union[elements.Roadm, elem
restrictions_edfa = \
preselect_multiband_amps(node.amplifiers, prev_node, next_node, power_mode,
prev_voa, prev_dp, pref_total_db,
network, equipment, restrictions_multi, _design_bands)
network, equipment, restrictions_multi, _design_bands,
deviation_db=deviation_db, tilt_target=tilt_target)
for band_name, amp in node.amplifiers.items():
_restrictions = [n for n in restrictions_edfa
if equipment['Edfa'][n].f_min <= _design_bands[band_name]['f_min']
@@ -763,7 +929,16 @@ def set_egress_amplifier(network: DiGraph, this_node: Union[elements.Roadm, elem
dp[band_name], voa[band_name] = \
set_one_amplifier(amp, prev_node, next_node, power_mode,
prev_voa[band_name], prev_dp[band_name],
pref_ch_db, pref_total_db, network, _restrictions, equipment, verbose)
pref_ch_db, pref_total_db, network, _restrictions, equipment, verbose,
deviation_db=deviation_db[band_name], tilt_target=tilt_target[band_name])
amps_type_varieties = [a.type_variety for a in node.amplifiers.values()]
try:
node.type_variety = find_type_variety(amps_type_varieties, equipment)
except ConfigurationError as e:
# should never come here... only for debugging
msg = f'In {node.uid}: {e}'
raise ConfigurationError(msg)
prev_dp.update(**dp)
prev_voa.update(**voa)
prev_node = node

View File

@@ -604,7 +604,7 @@ class EdfaOperational:
'gain_target': None,
'delta_p': None,
'out_voa': None,
'tilt_target': 0
'tilt_target': None
}
def __init__(self, **operational):

View File

@@ -162,6 +162,7 @@
}
],
"SI": [{
"type_variety": "default",
"f_min": 191.3e12,
"f_max": 196.1e12,
"baud_rate": 32e9,
@@ -171,7 +172,7 @@
"roll_off": 0.15,
"tx_osnr": 100,
"sys_margins": 0
}],
}],
"Transceiver":[
{
"type_variety": "vendorA_trx-type1",

View File

@@ -35,6 +35,7 @@ Multiband_amplifier east edfa in Site_A to Site_B
type_variety: std_medium_gain_C type_variety: std_medium_gain_L
effective gain(dB): 20.90 effective gain(dB): 22.19
(before att_in and before output VOA) (before att_in and before output VOA)
tilt-target(dB) 0.00 tilt-target(dB) 0.00
noise figure (dB): 6.38 noise figure (dB): 6.19
(including att_in) (including att_in)
pad att_in (dB): 0.00 pad att_in (dB): 0.00
@@ -58,6 +59,7 @@ Multiband_amplifier east edfa in Site_B to Site_C
type_variety: std_medium_gain_C type_variety: std_medium_gain_L
effective gain(dB): 18.00 effective gain(dB): 18.00
(before att_in and before output VOA) (before att_in and before output VOA)
tilt-target(dB) 0.00 tilt-target(dB) 0.00
noise figure (dB): 7.38 noise figure (dB): 7.38
(including att_in) (including att_in)
pad att_in (dB): 0.00 pad att_in (dB): 0.00
@@ -81,6 +83,7 @@ Multiband_amplifier east edfa in Site_C to Site_D
type_variety: std_medium_gain_C type_variety: std_medium_gain_L
effective gain(dB): 19.80 effective gain(dB): 19.80
(before att_in and before output VOA) (before att_in and before output VOA)
tilt-target(dB) 0.00 tilt-target(dB) 0.00
noise figure (dB): 6.63 noise figure (dB): 6.63
(including att_in) (including att_in)
pad att_in (dB): 0.00 pad att_in (dB): 0.00
@@ -104,6 +107,7 @@ Multiband_amplifier west edfa in Site_D to Site_C
type_variety: std_medium_gain_C type_variety: std_medium_gain_L
effective gain(dB): 21.70 effective gain(dB): 21.70
(before att_in and before output VOA) (before att_in and before output VOA)
tilt-target(dB) 0.00 tilt-target(dB) 0.00
noise figure (dB): 6.25 noise figure (dB): 6.25
(including att_in) (including att_in)
pad att_in (dB): 0.00 pad att_in (dB): 0.00

View File

@@ -33,6 +33,7 @@ Edfa Edfa_booster_roadm_Stockholm_to_fiber (Stockholm → Norrköping)_(1/2)
type_variety: openroadm_mw_mw_booster
effective gain(dB): 22.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): -inf
(including att_in)
pad att_in (dB): 0.00
@@ -55,6 +56,7 @@ Edfa Edfa_fiber (Stockholm → Norrköping)_(1/2)
type_variety: openroadm_ila_low_noise
effective gain(dB): 16.33
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.01
(including att_in)
pad att_in (dB): 0.00
@@ -77,6 +79,7 @@ Edfa Edfa_preamp_roadm_Norrköping_from_fiber (Stockholm → Norrköping)_(2/2)
type_variety: openroadm_mw_mw_preamp
effective gain(dB): 16.33
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 12.59
(including att_in)
pad att_in (dB): 0.00
@@ -96,6 +99,7 @@ Edfa Edfa_booster_roadm_Norrköping_to_fiber (Norrköping → Linköping)
type_variety: openroadm_mw_mw_booster
effective gain(dB): 22.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): -inf
(including att_in)
pad att_in (dB): 0.00
@@ -118,6 +122,7 @@ Edfa Edfa_preamp_roadm_Linköping_from_fiber (Norrköping → Linköping)
type_variety: openroadm_mw_mw_preamp
effective gain(dB): 11.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 16.00
(including att_in)
pad att_in (dB): 0.00
@@ -137,6 +142,7 @@ Edfa Edfa_booster_roadm_Linköping_to_fiber (Linköping → Jönköping)
type_variety: openroadm_mw_mw_booster
effective gain(dB): 22.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): -inf
(including att_in)
pad att_in (dB): 0.00
@@ -159,6 +165,7 @@ Edfa Edfa_preamp_roadm_Jönköping_from_fiber (Linköping → Jönköping)
type_variety: openroadm_mw_mw_preamp
effective gain(dB): 26.80
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.09
(including att_in)
pad att_in (dB): 0.00
@@ -178,6 +185,7 @@ Edfa Edfa_booster_roadm_Jönköping_to_fiber (Jönköping → Borås)
type_variety: openroadm_mw_mw_booster
effective gain(dB): 22.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): -inf
(including att_in)
pad att_in (dB): 0.00
@@ -200,6 +208,7 @@ Edfa Edfa_preamp_roadm_Borås_from_fiber (Jönköping → Borås)
type_variety: openroadm_mw_mw_preamp
effective gain(dB): 17.82
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 11.94
(including att_in)
pad att_in (dB): 0.00
@@ -219,6 +228,7 @@ Edfa Edfa_booster_roadm_Borås_to_fiber (Borås → Gothenburg)
type_variety: openroadm_mw_mw_booster
effective gain(dB): 22.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): -inf
(including att_in)
pad att_in (dB): 0.00
@@ -241,6 +251,7 @@ Edfa Edfa_preamp_roadm_Gothenburg_from_fiber (Borås → Gothenburg)
type_variety: openroadm_mw_mw_preamp
effective gain(dB): 13.53
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 13.78
(including att_in)
pad att_in (dB): 0.00

View File

@@ -33,6 +33,7 @@ Edfa Edfa_booster_roadm_Stockholm_to_fiber (Stockholm → Norrköping)_(1/2)
type_variety: openroadm_mw_mw_booster
effective gain(dB): 22.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): -inf
(including att_in)
pad att_in (dB): 0.00
@@ -55,6 +56,7 @@ Edfa Edfa_fiber (Stockholm → Norrköping)_(1/2)
type_variety: openroadm_ila_low_noise
effective gain(dB): 16.33
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.01
(including att_in)
pad att_in (dB): 0.00
@@ -77,6 +79,7 @@ Edfa Edfa_preamp_roadm_Norrköping_from_fiber (Stockholm → Norrköping)_(2/2)
type_variety: openroadm_mw_mw_preamp_worstcase_ver5
effective gain(dB): 16.33
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 11.43
(including att_in)
pad att_in (dB): 0.00
@@ -96,6 +99,7 @@ Edfa Edfa_booster_roadm_Norrköping_to_fiber (Norrköping → Linköping)
type_variety: openroadm_mw_mw_booster
effective gain(dB): 22.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): -inf
(including att_in)
pad att_in (dB): 0.00
@@ -118,6 +122,7 @@ Edfa Edfa_preamp_roadm_Linköping_from_fiber (Norrköping → Linköping)
type_variety: openroadm_mw_mw_preamp_worstcase_ver5
effective gain(dB): 11.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 16.00
(including att_in)
pad att_in (dB): 0.00
@@ -137,6 +142,7 @@ Edfa Edfa_booster_roadm_Linköping_to_fiber (Linköping → Jönköping)
type_variety: openroadm_mw_mw_booster
effective gain(dB): 22.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): -inf
(including att_in)
pad att_in (dB): 0.00
@@ -159,6 +165,7 @@ Edfa Edfa_preamp_roadm_Jönköping_from_fiber (Linköping → Jönköping)
type_variety: openroadm_mw_mw_preamp_worstcase_ver5
effective gain(dB): 26.80
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.01
(including att_in)
pad att_in (dB): 0.00
@@ -178,6 +185,7 @@ Edfa Edfa_booster_roadm_Jönköping_to_fiber (Jönköping → Borås)
type_variety: openroadm_mw_mw_booster
effective gain(dB): 22.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): -inf
(including att_in)
pad att_in (dB): 0.00
@@ -200,6 +208,7 @@ Edfa Edfa_preamp_roadm_Borås_from_fiber (Jönköping → Borås)
type_variety: openroadm_mw_mw_preamp_worstcase_ver5
effective gain(dB): 17.82
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 10.54
(including att_in)
pad att_in (dB): 0.00
@@ -219,6 +228,7 @@ Edfa Edfa_booster_roadm_Borås_to_fiber (Borås → Gothenburg)
type_variety: openroadm_mw_mw_booster
effective gain(dB): 22.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): -inf
(including att_in)
pad att_in (dB): 0.00
@@ -241,6 +251,7 @@ Edfa Edfa_preamp_roadm_Gothenburg_from_fiber (Borås → Gothenburg)
type_variety: openroadm_mw_mw_preamp_worstcase_ver5
effective gain(dB): 13.53
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 13.54
(including att_in)
pad att_in (dB): 0.00

View File

@@ -34,6 +34,7 @@ Edfa east edfa in Lannion_CAS to Corlay
type_variety: std_medium_gain
effective gain(dB): 21.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.36
(including att_in)
pad att_in (dB): 0.00
@@ -78,6 +79,7 @@ Edfa west edfa in Lorient_KMA to Loudeac
type_variety: std_high_gain
effective gain(dB): 28.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 5.92
(including att_in)
pad att_in (dB): 0.00

View File

@@ -34,6 +34,7 @@ Edfa east edfa in Lannion_CAS to Corlay
type_variety: std_medium_gain
effective gain(dB): 21.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.36
(including att_in)
pad att_in (dB): 0.00
@@ -78,6 +79,7 @@ Edfa west edfa in Lorient_KMA to Loudeac
type_variety: std_high_gain
effective gain(dB): 28.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 5.92
(including att_in)
pad att_in (dB): 0.00

View File

@@ -34,6 +34,7 @@ Edfa booster A
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -56,6 +57,7 @@ Edfa Edfa1
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -78,6 +80,7 @@ Edfa Edfa2
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -100,6 +103,7 @@ Edfa Edfa3
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -122,6 +126,7 @@ Edfa Edfa4
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -144,6 +149,7 @@ Edfa Edfa5
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -163,6 +169,7 @@ Edfa booster C
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -185,6 +192,7 @@ Edfa Edfa6
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -207,6 +215,7 @@ Edfa Edfa7
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -229,6 +238,7 @@ Edfa Edfa8
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -251,6 +261,7 @@ Edfa Edfa9
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -273,6 +284,7 @@ Edfa Edfa10
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -292,6 +304,7 @@ Edfa booster D
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -314,6 +327,7 @@ Edfa Edfa11
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -336,6 +350,7 @@ Edfa Edfa12
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -355,6 +370,7 @@ Edfa booster E
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -377,6 +393,7 @@ Edfa Edfa13
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -399,6 +416,7 @@ Edfa Edfa14
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -421,6 +439,7 @@ Edfa Edfa15
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00

View File

@@ -34,6 +34,7 @@ Edfa booster A
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -56,6 +57,7 @@ Edfa Edfa1
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -78,6 +80,7 @@ Edfa Edfa2
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -100,6 +103,7 @@ Edfa Edfa3
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -122,6 +126,7 @@ Edfa Edfa4
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -144,6 +149,7 @@ Edfa Edfa5
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -163,6 +169,7 @@ Edfa booster C
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -185,6 +192,7 @@ Edfa Edfa6
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -207,6 +215,7 @@ Edfa Edfa7
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -229,6 +238,7 @@ Edfa Edfa8
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -251,6 +261,7 @@ Edfa Edfa9
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -273,6 +284,7 @@ Edfa Edfa10
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -292,6 +304,7 @@ Edfa booster D
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -314,6 +327,7 @@ Edfa Edfa11
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -336,6 +350,7 @@ Edfa Edfa12
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -355,6 +370,7 @@ Edfa booster E
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -377,6 +393,7 @@ Edfa Edfa13
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -399,6 +416,7 @@ Edfa Edfa14
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -421,6 +439,7 @@ Edfa Edfa15
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00

View File

@@ -34,6 +34,7 @@ Edfa booster A
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -56,6 +57,7 @@ Edfa Edfa1
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -78,6 +80,7 @@ Edfa Edfa2
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -100,6 +103,7 @@ Edfa Edfa3
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -122,6 +126,7 @@ Edfa Edfa4
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -144,6 +149,7 @@ Edfa Edfa5
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -163,6 +169,7 @@ Edfa booster C
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -185,6 +192,7 @@ Edfa Edfa6
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -207,6 +215,7 @@ Edfa Edfa7
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -229,6 +238,7 @@ Edfa Edfa8
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -251,6 +261,7 @@ Edfa Edfa9
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -273,6 +284,7 @@ Edfa Edfa10
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -292,6 +304,7 @@ Edfa booster D
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -314,6 +327,7 @@ Edfa Edfa11
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -336,6 +350,7 @@ Edfa Edfa12
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -355,6 +370,7 @@ Edfa booster E
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -377,6 +393,7 @@ Edfa Edfa13
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -399,6 +416,7 @@ Edfa Edfa14
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -421,6 +439,7 @@ Edfa Edfa15
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00

View File

@@ -36,6 +36,7 @@ Edfa Edfa1
type_variety: std_low_gain
effective gain(dB): 15.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.62
(including att_in)
pad att_in (dB): 0.00

View File

@@ -40,6 +40,7 @@ Edfa Edfa1
type_variety: std_low_gain
effective gain(dB): 5.26
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 13.74
(including att_in)
pad att_in (dB): 2.74

View File

@@ -33,6 +33,7 @@ Edfa booster A
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -55,6 +56,7 @@ Edfa Edfa1
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -77,6 +79,7 @@ Edfa Edfa2
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -99,6 +102,7 @@ Edfa Edfa3
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -121,6 +125,7 @@ Edfa Edfa4
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -143,6 +148,7 @@ Edfa Edfa5
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -162,6 +168,7 @@ Edfa booster C
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -184,6 +191,7 @@ Edfa Edfa6
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -206,6 +214,7 @@ Edfa Edfa7
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -228,6 +237,7 @@ Edfa Edfa8
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -250,6 +260,7 @@ Edfa Edfa9
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -272,6 +283,7 @@ Edfa Edfa10
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -291,6 +303,7 @@ Edfa booster D
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -313,6 +326,7 @@ Edfa Edfa11
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -335,6 +349,7 @@ Edfa Edfa12
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -354,6 +369,7 @@ Edfa booster E
type_variety: std_medium_gain
effective gain(dB): 20.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.58
(including att_in)
pad att_in (dB): 0.00
@@ -376,6 +392,7 @@ Edfa Edfa13
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00
@@ -398,6 +415,7 @@ Edfa Edfa14
type_variety: test_fixed_gain
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 9.00
(including att_in)
pad att_in (dB): 4.00
@@ -420,6 +438,7 @@ Edfa Edfa15
type_variety: test
effective gain(dB): 16.00
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 8.86
(including att_in)
pad att_in (dB): 0.00

View File

@@ -33,6 +33,7 @@ Edfa east edfa in Lannion_CAS to Corlay
type_variety: test
effective gain(dB): 21.18
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 6.13
(including att_in)
pad att_in (dB): 0.00
@@ -77,6 +78,7 @@ Edfa west edfa in Lorient_KMA to Loudeac
type_variety: std_medium_gain
effective gain(dB): 27.99
(before att_in and before output VOA)
tilt-target(dB) 0.00
noise figure (dB): 5.98
(including att_in)
pad att_in (dB): 0.00

View File

@@ -466,6 +466,7 @@ def test_multiband():
' type_variety: std_medium_gain_C',
' effective gain(dB): 21.22',
' (before att_in and before output VOA)',
' tilt-target(dB) 0.00',
' noise figure (dB): 6.32',
' (including att_in)',
' pad att_in (dB): 0.00',
@@ -482,6 +483,7 @@ def test_multiband():
' type_variety: std_medium_gain_L',
' effective gain(dB): 21.00',
' (before att_in and before output VOA)',
' tilt-target(dB) 0.00',
' noise figure (dB): 6.36',
' (including att_in)',
' pad att_in (dB): 0.00',

View File

@@ -72,7 +72,8 @@ def test_equalization_combination_degree(delta_pdb_per_channel, degree, equaliza
"preamp_variety_list": [],
"booster_variety_list": []
},
"roadm-path-impairments": []
"roadm-path-impairments": [],
"design_bands": None
}
}
roadm = Roadm(**roadm_config)
@@ -124,7 +125,8 @@ def test_wrong_element_config(equalization_type):
"restrictions": {
"preamp_variety_list": [],
"booster_variety_list": []
}
},
"design_bands": None
},
"metadata": {
"location": {
@@ -236,7 +238,8 @@ def test_low_input_power(target_out, delta_pdb_per_channel, correction):
"preamp_variety_list": [],
"booster_variety_list": []
},
"roadm-path-impairments": []
"roadm-path-impairments": [],
"design_bands": None
},
"metadata": {
"location": {
@@ -290,7 +293,8 @@ def test_2low_input_power(target_out, delta_pdb_per_channel, correction):
"preamp_variety_list": [],
"booster_variety_list": []
},
"roadm-path-impairments": []
"roadm-path-impairments": [],
"design_bands": None
},
"metadata": {
"location": {

View File

@@ -34,8 +34,8 @@ def test_jsonthing(caplog):
"sys_margins": 2
}
_ = SI(**json_data)
expected_msg = 'WARNING missing f_min attribute in eqpt_config.json[SI]\n\t' \
+ 'default value is f_min = 191350000000000.0'
expected_msg = '\n\tWARNING missing f_min attribute in eqpt_config.json[SI]\n' \
+ '\tdefault value is f_min = 191350000000000.0'
assert expected_msg in caplog.text

View File

@@ -6,12 +6,15 @@
from pathlib import Path
import pytest
from numpy.testing import assert_allclose
from gnpy.core.exceptions import NetworkTopologyError
from gnpy.core.network import span_loss, build_network, select_edfa, get_node_restrictions
from gnpy.tools.json_io import load_equipment, load_network, network_from_json
from gnpy.core.network import span_loss, build_network, select_edfa, get_node_restrictions, \
estimate_srs_power_deviation
from gnpy.tools.json_io import load_equipment, load_network, network_from_json, load_json
from gnpy.core.utils import lin2db, automatic_nch, merge_amplifier_restrictions
from gnpy.core.elements import Fiber, Edfa, Roadm, Multiband_amplifier
from gnpy.core.parameters import EdfaParams, MultiBandParams
from gnpy.core.parameters import SimParams, EdfaParams, MultiBandParams
TEST_DIR = Path(__file__).parent
@@ -542,3 +545,72 @@ def test_get_node_restrictions(cls, defaultparams, variety_list, booster_list, b
next_node = Fiber(**fiber_config)
restrictions = get_node_restrictions(node, prev_node, next_node, equipment, band)
assert restrictions == expected_restrictions
@pytest.mark.usefixtures('set_sim_params')
@pytest.mark.parametrize('case, site_type, band, expected_gain, expected_tilt, expected_variety, sim_params', [
('design', 'Multiband_amplifier', 'LBAND', 10.0, 0.0, 'std_medium_gain_multiband', False),
('no_design', 'Multiband_amplifier', 'LBAND', 10.0, 0.0, 'std_low_gain_multiband_bis', False),
('type_variety', 'Multiband_amplifier', 'LBAND', 10.0, 0.0, 'std_medium_gain_multiband', False),
('design', 'Multiband_amplifier', 'LBAND', 9.344985, 0.0, 'std_medium_gain_multiband', True),
('no_design', 'Multiband_amplifier', 'LBAND', 9.344985, -0.94256, 'std_low_gain_multiband_bis', True),
('no_design', 'Multiband_amplifier', 'CBAND', 10.980212, -1.60348, 'std_low_gain_multiband_bis', True),
('no_design', 'Fused', 'LBAND', 21.0, 0.0, 'std_medium_gain_multiband', False),
('no_design', 'Fused', 'LBAND', 20.344985, -0.82184, 'std_medium_gain_multiband', True),
('no_design', 'Fused', 'CBAND', 21.773072, -1.40300, 'std_medium_gain_multiband', True),
('design', 'Fused', 'CBAND', 21.214048, 0.0, 'std_medium_gain_multiband', True),
('design', 'Multiband_amplifier', 'CBAND', 11.044233, 0.0, 'std_medium_gain_multiband', True)])
def test_multiband(case, site_type, band, expected_gain, expected_tilt, expected_variety, sim_params):
"""Check:
- if amplifiers are defined in multiband they are used for design,
- if no design is defined,
- if type variety is defined: use it for determining bands
- if no type_variety autodesign is as expected, design uses OMS defined set of bands
EOL is added only once on spans. One span can be one fiber or several fused fibers
EOL is then added on the first fiber only.
"""
json_data = network_base(case, site_type)
equipment = load_equipment(EQPT_MULTBAND_FILENAME)
network = network_from_json(json_data, equipment)
p_db = equipment['SI']['default'].power_dbm
p_total_db = p_db + lin2db(automatic_nch(equipment['SI']['default'].f_min,
equipment['SI']['default'].f_max, equipment['SI']['default'].spacing))
if sim_params:
SimParams.set_params(load_json(TEST_DIR / 'data' / 'sim_params.json'))
build_network(network, equipment, p_db, p_total_db)
amp2 = next(n for n in network.nodes() if n.uid == 'east edfa in ILA2')
# restore simParams
save_sim_params = {"raman_params": SimParams._shared_dict['raman_params'].to_json(),
"nli_params": SimParams._shared_dict['nli_params'].to_json()}
SimParams.set_params(save_sim_params)
print(amp2.to_json)
assert_allclose(amp2.amplifiers[band].effective_gain, expected_gain, atol=1e-5)
assert_allclose(amp2.amplifiers[band].tilt_target, expected_tilt, atol=1e-5)
assert amp2.type_variety == expected_variety
def test_tilt_fused():
"""check that computed tilt is the same for one span 100km as 2 spans 30 +70 km
"""
design_bands = {'CBAND': {'f_min': 191.3e12, 'f_max': 196.0e12},
'LBAND': {'f_min': 187.0e12, 'f_max': 190.0e12}}
save_sim_params = {"raman_params": SimParams._shared_dict['raman_params'].to_json(),
"nli_params": SimParams._shared_dict['nli_params'].to_json()}
SimParams.set_params(load_json(TEST_DIR / 'data' / 'sim_params.json'))
input_powers = {'CBAND': 0.001, 'LBAND': 0.001}
json_data = network_base("design", "Multiband_amplifier", length=100)
equipment = load_equipment(EQPT_MULTBAND_FILENAME)
network = network_from_json(json_data, equipment)
node = next(n for n in network.nodes() if n.uid == 'fiber (SITE1 → ILA1)')
tilt_db, tilt_target = estimate_srs_power_deviation(network, node, equipment, design_bands, input_powers)
json_data = network_base("design", "Fused", length=50)
equipment = load_equipment(EQPT_MULTBAND_FILENAME)
network = network_from_json(json_data, equipment)
node = next(n for n in network.nodes() if n.uid == 'fiber (ILA1 → ILA2)')
fused_tilt_db, fused_tilt_target = \
estimate_srs_power_deviation(network, node, equipment, design_bands, input_powers)
# restore simParams
SimParams.set_params(save_sim_params)
assert fused_tilt_db == tilt_db
assert fused_tilt_target == tilt_target