mirror of
https://github.com/Telecominfraproject/oopt-gnpy.git
synced 2025-10-29 09:12:37 +00:00
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:
committed by
Esther Le Rouzic
parent
24f4503020
commit
f621ca6fe7
@@ -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}',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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": {
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user