mirror of
https://github.com/Telecominfraproject/oopt-gnpy.git
synced 2025-10-30 17:47:50 +00:00
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:
@@ -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)]
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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)]
|
||||
|
||||
Reference in New Issue
Block a user