From c86ea206d94ace3fb1036a0394138906c191c56c Mon Sep 17 00:00:00 2001 From: Jean-Luc Auge Date: Wed, 4 Jul 2018 14:33:02 +0200 Subject: [PATCH] bug fix CORONET_GLOBAL_Topology example bugs from the last refactor merge - fix #1: update fiber length after split - fix #2: add egress amp after fiber split Signed-off-by: Jean-Luc Auge --- examples/transmission_main_example.py | 2 +- gnpy/core/elements.py | 2 +- gnpy/core/network.py | 11 +++++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/examples/transmission_main_example.py b/examples/transmission_main_example.py index c39dcc61..aec02281 100755 --- a/examples/transmission_main_example.py +++ b/examples/transmission_main_example.py @@ -51,7 +51,7 @@ def main(network, equipment, source, sink): build_network(network, equipment=equipment) path = dijkstra_path(network, source, sink) gain_mode = False - if gain_mode: + if not gain_mode: path_amps = [amp for amp in path if isinstance(amp, Edfa)] set_edfa_dp(network, path_amps) spans = [s.length for s in path if isinstance(s, Fiber)] diff --git a/gnpy/core/elements.py b/gnpy/core/elements.py index 47c1c473..631c8af8 100644 --- a/gnpy/core/elements.py +++ b/gnpy/core/elements.py @@ -572,5 +572,5 @@ class Edfa(Node): def __call__(self, spectral_info): carriers = tuple(self.propagate(spectral_info.pref, *spectral_info.carriers)) pref = self.update_pref(spectral_info.pref) - print('after edfa pi',pref.pi) + print('pch_i edfa output',pref.pi) return spectral_info.update(carriers=carriers, pref=pref) diff --git a/gnpy/core/network.py b/gnpy/core/network.py index 1cc40889..34a594fe 100644 --- a/gnpy/core/network.py +++ b/gnpy/core/network.py @@ -179,6 +179,7 @@ def split_fiber(network, fiber, bounds, target, equipment): prev_node = [n for n in network.predecessors(fiber)][0] network.remove_edge(fiber, next_node) network.remove_edge(prev_node, fiber) + network.remove_node(fiber) new_spans = [ Fiber( uid = f'{fiber.uid}_({span}/{n_spans})', @@ -186,12 +187,18 @@ def split_fiber(network, fiber, bounds, target, equipment): params = fiber.params._asdict() ) for span in range(n_spans) ] - for new_span in new_spans: + new_spans[0].length = new_length + network.add_node(new_spans[0]) + network.add_edge(prev_node, new_spans[0]) + prev_node = new_spans[0] + for new_span in new_spans[1:]: + new_span.length = new_length network.add_node(new_span) network.add_edge(prev_node, new_span) - add_egress_amplifier(network, new_span, equipment) + add_egress_amplifier(network, prev_node, equipment) prev_node = new_span network.add_edge(prev_node, next_node) + add_egress_amplifier(network, prev_node, equipment) def build_network(network, equipment, bounds=range(75_000, 150_000), target=100_000): fibers = [f for f in network.nodes() if isinstance(f, Fiber)]