mirror of
				https://github.com/Telecominfraproject/oopt-gnpy.git
				synced 2025-10-31 01:57:54 +00:00 
			
		
		
		
	 80eced85ec
			
		
	
	80eced85ec
	
	
	
		
			
			Please be advised that there were incompatible changes in the Raman options, including a `s/phase_shift_tollerance/phase_shift_tolerance/`. Signed-off-by: AndreaDAmico <andrea.damico@polito.it> Co-authored-by: EstherLerouzic <esther.lerouzic@orange.com> Co-authored-by: Jan Kundrát <jan.kundrat@telecominfraproject.com>
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| #!/usr/bin/env python3
 | |
| # -*- coding: utf-8 -*-
 | |
| # @Author: Alessio Ferrari
 | |
| """
 | |
| checks that RamanFiber propagates properly the spectral information. In this way, also the RamanSolver and the NliSolver
 | |
|  are tested.
 | |
| """
 | |
| 
 | |
| import json
 | |
| from pandas import read_csv
 | |
| from numpy.testing import assert_allclose
 | |
| from gnpy.core.info import create_input_spectral_information
 | |
| from gnpy.core.elements import RamanFiber
 | |
| from gnpy.core.parameters import SimParams
 | |
| from gnpy.core.science_utils import Simulation
 | |
| from gnpy.core.utils import load_json
 | |
| from pathlib import Path
 | |
| TEST_DIR = Path(__file__).parent
 | |
| 
 | |
| def test_raman_fiber():
 | |
|     """ Test the accuracy of propagating the RamanFiber.
 | |
|     """
 | |
|     # spectral information generation
 | |
|     power = 1e-3
 | |
|     with open(TEST_DIR / 'data' / 'eqpt_config.json', 'r') as file:
 | |
|         eqpt_params = json.load(file)
 | |
|     spectral_info_params = eqpt_params['SI'][0]
 | |
|     spectral_info_params.pop('power_dbm')
 | |
|     spectral_info_params.pop('power_range_db')
 | |
|     spectral_info_params.pop('tx_osnr')
 | |
|     spectral_info_params.pop('sys_margins')
 | |
|     spectral_info_input = create_input_spectral_information(power=power, **spectral_info_params)
 | |
| 
 | |
|     sim_params = SimParams(**load_json(TEST_DIR / 'data' / 'sim_params.json'))
 | |
|     Simulation.set_params(sim_params)
 | |
|     fiber = RamanFiber(**load_json(TEST_DIR / 'data' / 'raman_fiber_config.json'))
 | |
| 
 | |
|     # propagation
 | |
|     spectral_info_out = fiber(spectral_info_input)
 | |
| 
 | |
|     p_signal = [carrier.power.signal for carrier in spectral_info_out.carriers]
 | |
|     p_ase = [carrier.power.ase for carrier in spectral_info_out.carriers]
 | |
|     p_nli = [carrier.power.nli for carrier in spectral_info_out.carriers]
 | |
| 
 | |
|     expected_results = read_csv(TEST_DIR / 'data' / 'expected_results_science_utils.csv')
 | |
|     assert_allclose(p_signal, expected_results['signal'], rtol=1e-3)
 | |
|     assert_allclose(p_ase, expected_results['ase'], rtol=1e-3)
 | |
|     assert_allclose(p_nli, expected_results['nli'], rtol=1e-3)
 |