mirror of
https://github.com/Telecominfraproject/oopt-gnpy.git
synced 2025-11-02 11:07:57 +00:00
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:
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user