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
empty, vstack, trapz, arcsinh, clip, abs, sum from operator import attrgetter from logging import getLogger import scipy.constants as ph from scipy.integrate import solve_bvp from scipy.integrate import cumtrapz from scipy.interpolate import interp1d from scipy.optimize import OptimizeResult from math import isclose from gnpy.core.utils import db2lin, lin2db from gnpy.core.exceptions import EquipmentConfigError from gnpy.core.parameters import SimParams logger = getLogger(__name__) sim_params = SimParams.get() def propagate_raman_fiber(fiber, *carriers): raman_params = sim_params.raman_params nli_params = sim_params.nli_params # apply input attenuation to carriers attenuation_in = db2lin(fiber.params.con_in + fiber.params.att_in) chan = [] for carrier in carriers: pwr = carrier.power pwr = pwr._replace(signal=pwr.signal / attenuation_in, nli=pwr.nli / attenuation_in, ase=pwr.ase / attenuation_in) carrier = carrier._replace(power=pwr) chan.append(carrier) carriers = tuple(f for f in chan)