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 <jeanluc.auge@orange.com>
This commit is contained in:
Jean-Luc Auge
2018-07-04 14:33:02 +02:00
parent b810cf84c2
commit c86ea206d9
3 changed files with 11 additions and 4 deletions

View File

@@ -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)]

View File

@@ -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)

View File

@@ -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)]