mirror of
				https://github.com/Telecominfraproject/oopt-gnpy.git
				synced 2025-10-31 10:07:57 +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) |     build_network(network, equipment=equipment) | ||||||
|     path = dijkstra_path(network, source, sink) |     path = dijkstra_path(network, source, sink) | ||||||
|     gain_mode = False |     gain_mode = False | ||||||
|     if gain_mode: |     if not gain_mode: | ||||||
|         path_amps = [amp for amp in path if isinstance(amp, Edfa)] |         path_amps = [amp for amp in path if isinstance(amp, Edfa)] | ||||||
|         set_edfa_dp(network, path_amps) |         set_edfa_dp(network, path_amps) | ||||||
|     spans = [s.length for s in path if isinstance(s, Fiber)] |     spans = [s.length for s in path if isinstance(s, Fiber)] | ||||||
|   | |||||||
| @@ -572,5 +572,5 @@ class Edfa(Node): | |||||||
|     def __call__(self, spectral_info): |     def __call__(self, spectral_info): | ||||||
|         carriers = tuple(self.propagate(spectral_info.pref, *spectral_info.carriers)) |         carriers = tuple(self.propagate(spectral_info.pref, *spectral_info.carriers)) | ||||||
|         pref = self.update_pref(spectral_info.pref) |         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) |         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] |     prev_node = [n for n in network.predecessors(fiber)][0] | ||||||
|     network.remove_edge(fiber, next_node) |     network.remove_edge(fiber, next_node) | ||||||
|     network.remove_edge(prev_node, fiber) |     network.remove_edge(prev_node, fiber) | ||||||
|  |     network.remove_node(fiber) | ||||||
|     new_spans = [ |     new_spans = [ | ||||||
|         Fiber( |         Fiber( | ||||||
|             uid =      f'{fiber.uid}_({span}/{n_spans})', |             uid =      f'{fiber.uid}_({span}/{n_spans})', | ||||||
| @@ -186,12 +187,18 @@ def split_fiber(network, fiber, bounds, target, equipment): | |||||||
|             params = fiber.params._asdict() |             params = fiber.params._asdict() | ||||||
|         ) for span in range(n_spans) |         ) 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_node(new_span) | ||||||
|         network.add_edge(prev_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 |         prev_node = new_span | ||||||
|     network.add_edge(prev_node, next_node) |     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): | 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)] |     fibers = [f for f in network.nodes() if isinstance(f, Fiber)] | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jean-Luc Auge
					Jean-Luc Auge