mirror of
https://github.com/Telecominfraproject/oopt-gnpy.git
synced 2025-11-02 11:07:57 +00:00
OpenRoadm amplifier model!
nf = f(Pin) Signed-off-by: Jean-Luc Auge <jeanluc.auge@orange.com>
This commit is contained in:
committed by
EstherLerouzic
parent
88c2e2bd70
commit
a46c8c5398
@@ -420,6 +420,7 @@ class Edfa(Node):
|
||||
self.nf = None # dB edfa nf at operational.gain_target
|
||||
self.gprofile = None
|
||||
self.pin_db = None
|
||||
self.nch = None
|
||||
self.pout_db = None
|
||||
self.dp_db = None #delta P with Pref (power swwep) in power mode
|
||||
self.target_pch_db = None
|
||||
@@ -485,6 +486,7 @@ class Edfa(Node):
|
||||
self.interpol_gain_ripple = interp(self.channel_freq, amplifier_freq, self.params.gain_ripple)
|
||||
self.interpol_nf_ripple =interp(self.channel_freq, amplifier_freq, self.params.nf_ripple)
|
||||
|
||||
self.nch = frequencies.size
|
||||
self.pin_db = lin2db(sum(pin*1e3))
|
||||
"""check power saturation and correct target_gain accordingly:"""
|
||||
|
||||
@@ -521,6 +523,9 @@ class Edfa(Node):
|
||||
nf_avg = lin2db(db2lin(self.params.nf_model.nf1) + db2lin(self.params.nf_model.nf2)/db2lin(g1a))
|
||||
elif self.params.type_def == 'fixed_gain':
|
||||
nf_avg = self.params.nf_model.nf0
|
||||
elif self.params.type_def == 'openroadm':
|
||||
print('openroadm',self.pin_db - lin2db(self.nch) )
|
||||
nf_avg = polyval(self.params.nf_model.nf_coef, self.pin_db - lin2db(self.nch))
|
||||
else:
|
||||
nf_avg = polyval(self.params.nf_fit_coeff, -dg)
|
||||
if avg:
|
||||
|
||||
@@ -20,6 +20,7 @@ from gnpy.core.elements import Edfa
|
||||
|
||||
Model_vg = namedtuple('Model_vg', 'nf1 nf2 delta_p')
|
||||
Model_fg = namedtuple('Model_fg', 'nf0')
|
||||
Model_openroadm = namedtuple('Model_openroadm', 'nf_coef')
|
||||
Fiber = namedtuple('Fiber', 'type_variety dispersion gamma')
|
||||
Spans = namedtuple('Spans', 'power_mode delta_power_range_db max_length length_units \
|
||||
max_loss padding EOL con_in con_out')
|
||||
@@ -79,6 +80,13 @@ class Amp(AmpBase):
|
||||
except KeyError: pass #nf0 is not needed for variable gain amp
|
||||
nf1, nf2, delta_p = nf_model(type_variety, gain_min, gain_max, nf_min, nf_max)
|
||||
nf_def = Model_vg(nf1, nf2, delta_p)
|
||||
elif type_def == 'openroadm':
|
||||
try:
|
||||
nf_coef = kwargs.pop('nf_coef')
|
||||
except KeyError: #nf_coef is expected for openroadm amp
|
||||
print(f'missing nf_coef input for amplifier: {type_variety} in eqpt_config.json')
|
||||
exit()
|
||||
nf_def = Model_openroadm(nf_coef)
|
||||
return cls(**{**kwargs, **json_data, 'nf_model': nf_def})
|
||||
|
||||
|
||||
@@ -140,8 +148,11 @@ def edfa_nf(gain_target, variety_type, equipment):
|
||||
params = amp_params._asdict(),
|
||||
operational = {
|
||||
'gain_target': gain_target,
|
||||
'tilt_target': 0,
|
||||
})
|
||||
'tilt_target': 0
|
||||
}
|
||||
)
|
||||
amp.pin_db = 0
|
||||
amp.nch = 88
|
||||
return amp._calc_nf(True)
|
||||
|
||||
def trx_mode_params(equipment, trx_type_variety='', trx_mode='', error_message=False):
|
||||
|
||||
Reference in New Issue
Block a user