def test_raman_fiber(): """ Test the accuracy of propagating the RamanFiber.""" # spectral information generation power = 1e-3 eqpt_params = load_json(TEST_DIR / 'data' / 'eqpt_config.json') 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) SimParams.set_params(load_json(TEST_DIR / 'data' / 'sim_params.json')) 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' / 'test_science_utils_expected_results.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)
def test_sim_parameters(): sim_params = {'nli_params': {}, 'raman_params': {}} SimParams.set_params(sim_params) s1 = SimParams.get() assert s1.nli_params.method == 'gn_model_analytic' s2 = SimParams.get() assert not s1.raman_params.flag sim_params['raman_params']['flag'] = True SimParams.set_params(sim_params) assert s2.raman_params.flag assert s1.raman_params.flag
def load_common_data(equipment_filename, topology_filename, simulation_filename, save_raw_network_filename): '''Load common configuration from JSON files''' try: equipment = load_equipment(equipment_filename) network = load_network(topology_filename, equipment) if save_raw_network_filename is not None: save_network(network, save_raw_network_filename) print( f'{ansi_escapes.blue}Raw network (no optimizations) saved to {save_raw_network_filename}{ansi_escapes.reset}' ) if not simulation_filename: sim_params = {} if next((node for node in network if isinstance(node, RamanFiber)), None) is not None: print( f'{ansi_escapes.red}Invocation error:{ansi_escapes.reset} ' f'RamanFiber requires passing simulation params via --sim-params' ) sys.exit(1) else: sim_params = load_json(simulation_filename) SimParams.set_params(sim_params) except exceptions.EquipmentConfigError as e: print( f'{ansi_escapes.red}Configuration error in the equipment library:{ansi_escapes.reset} {e}' ) sys.exit(1) except exceptions.NetworkTopologyError as e: print( f'{ansi_escapes.red}Invalid network definition:{ansi_escapes.reset} {e}' ) sys.exit(1) except exceptions.ParametersError as e: print( f'{ansi_escapes.red}Simulation parameters error:{ansi_escapes.reset} {e}' ) sys.exit(1) except exceptions.ConfigurationError as e: print( f'{ansi_escapes.red}Configuration error:{ansi_escapes.reset} {e}') sys.exit(1) except exceptions.ServiceError as e: print(f'{ansi_escapes.red}Service error:{ansi_escapes.reset} {e}') sys.exit(1) return (equipment, network)