Propagating partial spectral load
Closed this issue · 2 comments
The issue reported here is similar to
#456
Instead of propagating full spectrum load, I want to propagate selective spectrum for my simulation. For this purpose, I modified the SI block in ./usr/local/lib/python3.9/site-packages/gnpy/example-data/eqpt_config.json as:
"SI":[{
"f_min": 191.3e12,
"baud_rate": 32e9,
"f_max":192.1e12,
"spacing": 50e9,
"power_dbm": 0,
"power_range_db": [0,0,1],
"roll_off": 0.15,
"tx_osnr": 40,
"sys_margins": 2
},{
"f_min": 193.3e12,
"baud_rate": 32e9,
"f_max":194.1e12,
"spacing": 50e9,
"power_dbm": 0,
"power_range_db": [0,0,1],
"roll_off": 0.15,
"tx_osnr": 40,
"sys_margins": 2
}
],
Then run the command : gnpy-transmission-example
But, I get the following error :
gnpy-transmission-example
(gnpy-example-data)/sim_params.json --show-channels
There are 16 channels propagating
Power mode is set to True
=> it can be modified in eqpt_config.json - Span
<class 'numpy.ndarray'>
Traceback (most recent call last):
File "/usr/local/bin/gnpy-transmission-example", line 8, in
sys.exit(transmission_main_example())
File "/usr/local/lib/python3.9/site-packages/gnpy/tools/cli_examples.py", line 243, 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 762, in build_network
set_egress_amplifier(network, roadm, equipment, pref_ch_db, pref_total_db, verbose)
File "/usr/local/lib/python3.9/site-packages/gnpy/core/network.py", line 318, in set_egress_amplifier
node_loss = span_loss(network, prev_node, equipment)
File "/usr/local/lib/python3.9/site-packages/gnpy/core/network.py", line 244, in span_loss
gain += sum(estimate_raman_gain(n, equipment) for n in prev_node_generator(network, node))
File "/usr/local/lib/python3.9/site-packages/gnpy/core/network.py", line 244, in
gain += sum(estimate_raman_gain(n, equipment) for n in prev_node_generator(network, node))
File "/usr/local/lib/python3.9/site-packages/gnpy/core/network.py", line 229, in estimate_raman_gain
spectral_info_out = n_copy(spectral_info_input)
File "/usr/local/lib/python3.9/site-packages/gnpy/core/elements.py", line 676, in call
self.propagate(spectral_info)
File "/usr/local/lib/python3.9/site-packages/gnpy/core/elements.py", line 724, in propagate
spectral_info.nli += NliSolver.compute_nli(spectral_info, stimulated_raman_scattering, self)
File "/usr/local/lib/python3.9/site-packages/gnpy/core/science_utils.py", line 311, in compute_nli
eta = NliSolver._ggn_spectrally_separated(cut_indices, spectral_info, fiber, srs)
File "/usr/local/lib/python3.9/site-packages/gnpy/core/science_utils.py", line 392, in _ggn_spectrally_separated
gamma = outer(fiber.gamma(frequency[cut_indices]), ones(nch))
IndexError: index 17 is out of bounds for axis 0 with size 16
I got same error when using -spectrum option in the command line and specifying the same channels as in SI block of eqpt_config.json as above.
Kindly advise, thanks
Dear @abhiman84 ,
GNPY does not currently consider more than one SI in the SI block. If you wish to propagate different types of channels within the spectrum you must use the --spectrum option.
The definition in spectrum file is a bit different from SI (although similar):
should be like that:
{
"spectrum":[
{
"f_min": 191.4e12,
"f_max":193.1e12,
"baud_rate": 32e9,
"slot_width": 50e9,
"delta_pdb": 0,
"roll_off": 0.15,
"tx_osnr": 40,
"label": "mode_1"
},
{
"f_min": 193.1625e12,
"f_max":195e12,
"baud_rate": 64e9,
"slot_width": 75e9,
"roll_off": 0.15,
"tx_osnr": 40,
"label": "mode_2"
}
]
}
see documentation here for the detailed explanation of each attribute:
https://github.com/Telecominfraproject/oopt-gnpy/blob/master/docs/json.rst#arbitrary-channel-definition
I am not sure to understand correctly your example: the line command:
gnpy-transmission-example (gnpy-example-data)/sim_params.json --show-channels
is missing the positional topology attribute : gnpy/example-data/raman_edfa_example_network.json, the sim_params.json file is missing the --sim-params option...
I think the command should rather be something like:
gnpy-transmission-example (gnpy-example-data)/raman_edfa_example_network.json --sim-params (gnpy-example-data)/sim_params.json --spectrum <spectrum_file.json> --show-channels
with spectrum_file.json the file where you have defined the spectrum you want to propagate.
Hope this help!
regards
Thank you for your comments. The issue is clarified.