Telecominfraproject / oopt-gnpy

Optical Route Planning Library, Based on a Gaussian Noise Model
http://telecominfraproject.com
BSD 3-Clause "New" or "Revised" License
207 stars 88 forks source link

Type Variety of PreAmplifier not Getting Set in Single EDFA Topology #509

Closed Khandujarnav closed 3 months ago

Khandujarnav commented 3 months ago

bidirection_1Edfa.json bidirection_2Edfa.json

@abhiman84 and I are doing QoT estimation using the GNPy library. Uploaded 3 custom topologies, bidirection_2Edfa(contains 2 EDFAs between 2 Roadms and is bidirectional), bidirection_1Edfa(contains 1 EDFA between 2 Roadms and is bidirectional). The code works fine and calculates SNR for the topology in file "bidirection_2Edfa" , however when tried to calculate for topology in file "bidrection_1Edfa", showed error. Error message: Traceback (most recent call last): File "/usr/local/bin/gnpy-transmission-example", line 8, in <module> sys.exit(transmission_main_example()) File "/usr/local/lib/python3.9/site-packages/gnpy/tools/cli_examples.py", line 246, in transmission_main_example design_network(ref_req, network, equipment, set_connector_losses=True, verbose=True) File "/usr/local/lib/python3.9/site-packages/gnpy/core/network.py", line 775, in design_network build_network(network, equipment, pref_ch_db, pref_total_db, set_connector_losses=set_connector_losses, File "/usr/local/lib/python3.9/site-packages/gnpy/core/network.py", line 764, in build_network set_roadm_input_powers(network, roadm, equipment, pref_ch_db) File "/usr/local/lib/python3.9/site-packages/gnpy/core/network.py", line 466, in set_roadm_input_powers roadm.ref_pch_in_dbm[element.uid] = pref_ch_db + node._delta_p - node.out_voa - loss TypeError: unsupported operand type(s) for +: 'float' and 'NoneType' command used to run: gnpy-transmission-example ./bidirection_1Edfa.json --sim sim_params.json --show-channels --spectrum $spectrum_file_path While debugging I found out that the type variety of one Pre amplifier was not getting set and the default null value was being used in the SNR calculation. The problem was occurring in the file oopt-gnpy/gnpy/core/network.py in the set_egress_amplifier function. The code was not accessing the path of Fiber(Edfa1 -> Ghaziabad) and hence type variety of Pre Amplifier on Roadm3 was not getting set.

Kindly check for the issue.

EstherLerouzic commented 3 months ago

Dear @Khandujarnav

Thanks for using GNPy! In bidrection_1Edfa.json, the node "edfa1" is connected to four fibers, suggesting that you use the same amplifier element for both directions. This is not supported by GNPy: all elements (Fiber, Fused, Edfa) are unidir. In order to run this topology two amplifiers instances must be set for each direction.

Please refer to this page https://gnpy.readthedocs.io/en/master/concepts.html#network-topology on documentation that explains this.

Hope this helps!

Khandujarnav commented 3 months ago

Thanks a lot for your reply, it solved our problem. We missed this point in the documentation. Best regards!