Merge changes Idc473762,I004de102

* changes:
  Fix calculation of power target for Edfa in gain mode
  Fix calculation of gain for first Edfa after Roadm
This commit is contained in:
Jan Kundrát
2020-11-17 13:35:26 +00:00
committed by Gerrit Code Review

View File

@@ -239,7 +239,7 @@ def set_amplifier_voa(amp, power_target, power_mode):
amp.out_voa = voa
def set_egress_amplifier(network, this_node, equipment, pref_total_db):
def set_egress_amplifier(network, this_node, equipment, pref_ch_db, pref_total_db):
""" this node can be a transceiver or a ROADM (same function called in both cases)
"""
power_mode = equipment['Span']['default'].power_mode
@@ -256,16 +256,16 @@ def set_egress_amplifier(network, this_node, equipment, pref_total_db):
if this_node_degree:
# find the target power on this degree
if node.uid in this_node_degree.keys():
prev_dp = this_node_degree[node.uid]
prev_dp = this_node_degree[node.uid] - pref_ch_db
else:
# if no target power is defined on this degree use the global one
# if target_pch_out_db is not an attribute, then the element must be a transceiver
prev_dp = getattr(this_node.params, 'target_pch_out_db', 0)
prev_dp = getattr(this_node.params, 'target_pch_out_db', 0) - pref_ch_db
this_node_degree[node.uid] = prev_dp
else:
# if no per degree target power is given use the global one
# if target_pch_out_db is not an attribute, then the element must be a transceiver
prev_dp = getattr(this_node.params, 'target_pch_out_db', 0)
prev_dp = getattr(this_node.params, 'target_pch_out_db', 0) - pref_ch_db
this_node_degree[node.uid] = prev_dp
dp = prev_dp
prev_voa = 0
@@ -284,7 +284,7 @@ def set_egress_amplifier(network, this_node, equipment, pref_total_db):
gain_target = node_loss + dp - prev_dp + prev_voa
else: # gain mode with effective_gain
gain_target = node.effective_gain
dp = prev_dp - node_loss + gain_target
dp = prev_dp - node_loss - prev_voa + gain_target
power_target = pref_total_db + dp
@@ -484,10 +484,10 @@ def build_network(network, equipment, pref_ch_db, pref_total_db):
roadms = [r for r in amplified_nodes if isinstance(r, elements.Roadm)]
for roadm in roadms:
set_egress_amplifier(network, roadm, equipment, pref_total_db)
set_egress_amplifier(network, roadm, equipment, pref_ch_db, pref_total_db)
# support older json input topology wo Roadms:
if len(roadms) == 0:
trx = [t for t in network.nodes() if isinstance(t, elements.Transceiver)]
for t in trx:
set_egress_amplifier(network, t, equipment, pref_total_db)
set_egress_amplifier(network, t, equipment, 0, pref_total_db)