mirror of
				https://github.com/Telecominfraproject/oopt-gnpy.git
				synced 2025-10-31 01:57:54 +00:00 
			
		
		
		
	Add option to cli examples for disabling auto-insertion of EDFAs
The auto-design feature inserts EDFAs after ROADMs and fibers when they are not already present in the input topology file. This functionality can be locally disabled by manually adding a Fused element in the topology. This patch adds an option to the cli example scripts, "--no-insert-edfas", which globally disables insertion of EDFAs as well as automatic splitting of fibers. Change-Id: If40aa6ac6d8b47d5e7b6f8eabfe389e8258cbce6 Signed-off-by: Jonas Mårtensson <jonas.martensson@ri.se>
This commit is contained in:
		| @@ -511,7 +511,7 @@ def add_fiber_padding(network, fibers, padding): | |||||||
|                 first_fiber.params.att_in = first_fiber.params.att_in + padding - this_span_loss |                 first_fiber.params.att_in = first_fiber.params.att_in + padding - this_span_loss | ||||||
|  |  | ||||||
|  |  | ||||||
| def build_network(network, equipment, pref_ch_db, pref_total_db): | def build_network(network, equipment, pref_ch_db, pref_total_db, no_insert_edfas=False): | ||||||
|     default_span_data = equipment['Span']['default'] |     default_span_data = equipment['Span']['default'] | ||||||
|     max_length = int(convert_length(default_span_data.max_length, default_span_data.length_units)) |     max_length = int(convert_length(default_span_data.max_length, default_span_data.length_units)) | ||||||
|     min_length = max(int(default_span_data.padding / 0.2 * 1e3), 50_000) |     min_length = max(int(default_span_data.padding / 0.2 * 1e3), 50_000) | ||||||
| @@ -524,10 +524,13 @@ def build_network(network, equipment, pref_ch_db, pref_total_db): | |||||||
|     add_fiber_padding(network, fibers, default_span_data.padding) |     add_fiber_padding(network, fibers, default_span_data.padding) | ||||||
|     # don't group split fiber and add amp in the same loop |     # don't group split fiber and add amp in the same loop | ||||||
|     # =>for code clarity (at the expense of speed): |     # =>for code clarity (at the expense of speed): | ||||||
|  |  | ||||||
|  |     roadms = [r for r in network.nodes() if isinstance(r, elements.Roadm)] | ||||||
|  |  | ||||||
|  |     if not no_insert_edfas: | ||||||
|         for fiber in fibers: |         for fiber in fibers: | ||||||
|             split_fiber(network, fiber, bounds, target_length, equipment) |             split_fiber(network, fiber, bounds, target_length, equipment) | ||||||
|  |  | ||||||
|     roadms = [r for r in network.nodes() if isinstance(r, elements.Roadm)] |  | ||||||
|         for roadm in roadms: |         for roadm in roadms: | ||||||
|             add_roadm_preamp(network, roadm) |             add_roadm_preamp(network, roadm) | ||||||
|             add_roadm_booster(network, roadm) |             add_roadm_booster(network, roadm) | ||||||
|   | |||||||
| @@ -104,6 +104,9 @@ def _add_common_options(parser: argparse.ArgumentParser, network_default: Path): | |||||||
|                         help='Save the final network as a JSON file') |                         help='Save the final network as a JSON file') | ||||||
|     parser.add_argument('--save-network-before-autodesign', type=Path, metavar=_help_fname_json, |     parser.add_argument('--save-network-before-autodesign', type=Path, metavar=_help_fname_json, | ||||||
|                         help='Dump the network into a JSON file prior to autodesign') |                         help='Dump the network into a JSON file prior to autodesign') | ||||||
|  |     parser.add_argument('--no-insert-edfas', action='store_true', | ||||||
|  |                         help='Disable insertion of EDFAs after ROADMs and fibers ' | ||||||
|  |                              'as well as splitting of fibers by auto-design.') | ||||||
|  |  | ||||||
|  |  | ||||||
| def transmission_main_example(args=None): | def transmission_main_example(args=None): | ||||||
| @@ -201,7 +204,7 @@ def transmission_main_example(args=None): | |||||||
|     pref_ch_db = lin2db(req.power * 1e3)  # reference channel power / span (SL=20dB) |     pref_ch_db = lin2db(req.power * 1e3)  # reference channel power / span (SL=20dB) | ||||||
|     pref_total_db = pref_ch_db + lin2db(req.nb_channel)  # reference total power / span (SL=20dB) |     pref_total_db = pref_ch_db + lin2db(req.nb_channel)  # reference total power / span (SL=20dB) | ||||||
|     try: |     try: | ||||||
|         build_network(network, equipment, pref_ch_db, pref_total_db) |         build_network(network, equipment, pref_ch_db, pref_total_db, args.no_insert_edfas) | ||||||
|     except exceptions.NetworkTopologyError as e: |     except exceptions.NetworkTopologyError as e: | ||||||
|         print(f'{ansi_escapes.red}Invalid network definition:{ansi_escapes.reset} {e}') |         print(f'{ansi_escapes.red}Invalid network definition:{ansi_escapes.reset} {e}') | ||||||
|         sys.exit(1) |         sys.exit(1) | ||||||
| @@ -320,7 +323,7 @@ def path_requests_run(args=None): | |||||||
|     p_total_db = p_db + lin2db(automatic_nch(equipment['SI']['default'].f_min, |     p_total_db = p_db + lin2db(automatic_nch(equipment['SI']['default'].f_min, | ||||||
|                                              equipment['SI']['default'].f_max, equipment['SI']['default'].spacing)) |                                              equipment['SI']['default'].f_max, equipment['SI']['default'].spacing)) | ||||||
|     try: |     try: | ||||||
|         build_network(network, equipment, p_db, p_total_db) |         build_network(network, equipment, p_db, p_total_db, args.no_insert_edfas) | ||||||
|     except exceptions.NetworkTopologyError as e: |     except exceptions.NetworkTopologyError as e: | ||||||
|         print(f'{ansi_escapes.red}Invalid network definition:{ansi_escapes.reset} {e}') |         print(f'{ansi_escapes.red}Invalid network definition:{ansi_escapes.reset} {e}') | ||||||
|         sys.exit(1) |         sys.exit(1) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Jonas Mårtensson
					Jonas Mårtensson