Skip to content

Commit

Permalink
Merge "feat: enable different sim_param vectors for multiple requests"
Browse files Browse the repository at this point in the history
  • Loading branch information
EstherLerouzic authored and gerritforge-ltd committed May 22, 2024
2 parents 138115e + 9736f7c commit a1289e6
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 4 deletions.
24 changes: 21 additions & 3 deletions docs/json.rst
Original file line number Diff line number Diff line change
Expand Up @@ -333,13 +333,31 @@ See ``delta_power_range_db`` for more explaination.
| | | from `arXiv:1710.02225 |
| | | <https://arxiv.org/abs/1710.02225>`_). |
+---------------------------------------------+-----------+---------------------------------------------+
| ``nli_params.computed_channels`` | (number) | The channels on which the NLI is |
| | | explicitly evaluated. |
| ``nli_params.computed_channels`` | (list | Optional. The exact channel indices |
| | of | (starting from 1) on which the NLI is |
| | numbers) | explicitly evaluated. |
| | | The NLI of the other channels is |
| | | interpolated using ``numpy.interp``. |
| | | In a C-band simulation with 96 channels in |
| | | a 50 GHz spacing fix-grid we recommend at |
| | | one computed channel every 20 channels. |
| | | least one computed channel every 20 |
| | | channels. If this option is present, the |
| | | next option "computed_number_of_channels" |
| | | is ignored. If none of the options are |
| | | present, the NLI is computed for all |
| | | channels (no interpolation) |
+---------------------------------------------+-----------+---------------------------------------------+
| ``nli_params.computed_number_of_channels`` | (number) | Optional. The number of channels on which |
| | | the NLI is explicitly evaluated. |
| | | The channels are |
| | | evenly selected between the first and the |
| | | last carrier of the current propagated |
| | | spectrum. |
| | | The NLI of the other channels is |
| | | interpolated using ``numpy.interp``. |
| | | In a C-band simulation with 96 channels in |
| | | a 50 GHz spacing fix-grid we recommend at |
| | | least 6 channels. |
+---------------------------------------------+-----------+---------------------------------------------+

Span
Expand Down
3 changes: 2 additions & 1 deletion gnpy/core/parameters.py
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ def to_json(self):

class NLIParams(Parameters):
def __init__(self, method='gn_model_analytic', dispersion_tolerance=1, phase_shift_tolerance=0.1,
computed_channels=None):
computed_channels=None, computed_number_of_channels=None):
"""Simulation parameters used within the Nli Solver
:params method: formula for NLI calculation
Expand All @@ -66,6 +66,7 @@ def __init__(self, method='gn_model_analytic', dispersion_tolerance=1, phase_shi
self.dispersion_tolerance = dispersion_tolerance
self.phase_shift_tolerance = phase_shift_tolerance
self.computed_channels = computed_channels
self.computed_number_of_channels = computed_number_of_channels

def to_json(self):
return {"method": self.method,
Expand Down
4 changes: 4 additions & 0 deletions gnpy/core/science_utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,10 @@ def compute_nli(spectral_info: SpectralInformation, srs: StimulatedRamanScatteri
elif 'ggn_spectrally_separated' in sim_params.nli_params.method:
if sim_params.nli_params.computed_channels is not None:
cut_indices = array(sim_params.nli_params.computed_channels) - 1
elif sim_params.nli_params.computed_number_of_channels is not None:
nb_ch_computed = sim_params.nli_params.computed_number_of_channels
nb_ch = len(spectral_info.channel_number)
cut_indices = array([round(i * (nb_ch - 1) / (nb_ch_computed - 1)) for i in range(0, nb_ch_computed)])
else:
cut_indices = array(spectral_info.channel_number) - 1

Expand Down

0 comments on commit a1289e6

Please sign in to comment.