Amplifier disable field

* toggle true/false in eqpt_config json file to allow the use of a given amplifier type in automatic design: eqpt_config[Edfa][allowed_for_design] : true/false
* automatic design is picking the best amplifier (gain, NF constraints)
among the available ones: if toggle to false, the type is deemed non
available. Only alternative before this feature was to remove the
amplifier from eqpt_config library.
* if set to false, the amplifier type can still be input in the network
topology file: it will be recongized.

Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
This commit is contained in:
Jean-Luc Auge
2018-08-02 12:50:13 +02:00
parent d1c7489768
commit 167e644bd0
4 changed files with 20 additions and 14 deletions

View File

@@ -1,9 +1,10 @@
{ "Edfa":[{
"type_variety": "CienaDB_medium_gain",
"gain_flatmax": 1,
"gain_min": 1,
"gain_flatmax": 15,
"gain_min": 25,
"p_max": 21,
"advanced_config_from_json": "std_medium_gain_advanced_config.json"
"advanced_config_from_json": "std_medium_gain_advanced_config.json",
"allowed_for_design": false
},
{
"type_variety": "std_medium_gain",
@@ -12,7 +13,8 @@
"gain_min": 15,
"p_max": 22,
"nf_min": 6,
"nf_max": 10
"nf_max": 10,
"allowed_for_design": true
},
{
"type_variety": "std_low_gain",
@@ -21,7 +23,8 @@
"gain_min": 8,
"p_max": 22,
"nf_min": 7,
"nf_max": 11
"nf_max": 11,
"allowed_for_design": true
},
{
"type_variety": "std_fixed_gain",
@@ -29,7 +32,8 @@
"gain_flatmax": 20,
"gain_min": 20,
"p_max": 22,
"nf0": 5.5
"nf0": 5.5,
"allowed_for_design": true
},
{
"type_variety": "test",
@@ -38,7 +42,8 @@
"gain_min": 15,
"p_max": 21,
"nf_min": 7,
"nf_max": 11
"nf_max": 11,
"allowed_for_design": false
}
],
"Fiber":[{
@@ -68,7 +73,7 @@
"f_max":195.1e12,
"baud_rate": 32e9,
"spacing": 50e9,
"power_dbm": 0.5,
"power_dbm": 0,
"power_range_db": [0,0,0.5],
"roll_off": 0.15,
"OSNR": 11,

View File

@@ -323,7 +323,7 @@ class Fiber(Node):
# TODO|dutc: eliminate duplication with .equipment.EdfaBase
EdfaParams = namedtuple('EdfaParams',
'type_variety, type_def, gain_flatmax gain_min p_max'
' nf_model nf_fit_coeff nf_ripple dgt gain_ripple')
' nf_model nf_fit_coeff nf_ripple dgt gain_ripple allowed_for_design')
class EdfaOperational:
def __init__(self, gain_target, tilt_target):
self.gain_target = gain_target

View File

@@ -27,14 +27,14 @@ SI = namedtuple('SI', 'f_min f_max baud_rate spacing roll_off \
EdfaBase = namedtuple(
'EdfaBase',
'type_variety type_def gain_flatmax gain_min p_max'
' nf_model nf_fit_coeff nf_ripple dgt gain_ripple')
' nf_model nf_fit_coeff nf_ripple dgt gain_ripple allowed_for_design')
class Edfa(EdfaBase):
def __new__(cls,
type_variety, type_def, gain_flatmax, gain_min, p_max,
nf_model=None, nf_fit_coeff=None, nf_ripple=None, dgt=None, gain_ripple=None):
type_variety, type_def, gain_flatmax, gain_min, p_max, nf_model=None,
nf_fit_coeff=None, nf_ripple=None, dgt=None, gain_ripple=None, allowed_for_design=True):
return super().__new__(cls,
type_variety, type_def, gain_flatmax, gain_min, p_max,
nf_model, nf_fit_coeff, nf_ripple, dgt, gain_ripple)
nf_model, nf_fit_coeff, nf_ripple, dgt, gain_ripple, allowed_for_design)
@classmethod
def from_advanced_json(cls, filename, **kwargs):

View File

@@ -72,7 +72,8 @@ def select_edfa(ingress_span_loss, equipment):
edfa_list = [(edfa_variety,
edfa_dict[edfa_variety].gain_flatmax-ingress_span_loss,
edfa_nf(ingress_span_loss, edfa_variety, equipment)) \
for edfa_variety in edfa_dict]
for edfa_variety in edfa_dict
if edfa_dict[edfa_variety].allowed_for_design]
acceptable_edfa_list = list(filter(lambda x : x[1]>-TARGET_EXTENDED_GAIN, edfa_list))
if len(acceptable_edfa_list) < 1:
#no amplifier satisfies the required gain, so pick the highest gain one: