def specific_variables(): n2 = 2.5e-20 alphadB = 0 maxerr = 1e-13 ss = 1 gama = 10e-3 lamda_c = 1051.85e-9 lamp = 1048e-9 lams = 1245.98 betas = np.array([0, 0, 0, 6.756e-2, -1.002e-4, 3.671e-7]) * 1e-3 T0 = 10 P_p = 5 P_s = 1 P_i = 2 fr = 0.18 fwhm = 1 N_b = 10 z = 18 dz_less = 100 df = 0.010 M = overlap(n2, lamda_c, gama) F, fp = dF_sidebands(betas, lamp, lamda_c, n2, M, P_p) int_fwm = sim_parameters(n2, 1, alphadB, betas, M, fr, T0) int_fwm.general_options(maxerr, ss) int_fwm = deepcopy(int_fwm) int_fwm.propagation_parameters(N_b, z, dz_less) #print(int_fwm.dz) #sys.exit() f_centrals = [fp + i * F for i in range(-1, 2)] fv, where_g, f_centrals = fv_creator(fp, df, F, int_fwm) #sim_wind = sim_window(fv, lamp, f_centrals, lamda_c, int_fwm_b, where_g) sim_wind = sim_window(fv, lamp, F, lamda_c, int_fwm, where_g) return M, int_fwm, sim_wind, n2, alphadB, maxerr, ss, N_b, lamda_c, lamp, lams, \ betas, fv, f_centrals
def test_dF_sidebands(): """ Tests of the ability of dF_sidebands to find the sidebands expected for predetermined conditions. """ lamp = 1048.17e-9 lamda0 = 1051.85e-9 betas = 0, 0, 0, 6.756e-2 * 1e-3, -1.002e-4 * 1e-3, 3.671*1e-7 * 1e-3 F, f_p = dF_sidebands(betas, lamp, lamda0, n2, M, 5) f_s, f_i = f_p - F, f_p + F lams, lami = (1e-3*c/i for i in (f_s, f_i)) assert lams, lami == (1200.2167948665879, 930.31510086250455)
class Test_energy_conserve_split(): "---------------constants---------------" ss = 1 n2 = 2.5e-20 gama = 10e-3 lamda_c = 1051.85e-9 dz_less = 100 betas = np.array([ 0, 0, 0, 6.756e-2, # propagation constants [ps^n/m] -1.002e-4, 3.671e-7 ]) * 1e-3 maxerr = 1e-13 fr = 0.18 "----------Combined parameters-----------" alphadB = 0 z = 18 df = 0.01 # frequency step in [Thz] lamp = 1048e-9 P_p = 5 P_s = 1 P_i = 0 T0 = 1 # [ps] "----------------------------------------" "------------BNLSE parameters------------" N_b = 10 Df_band = df * 2**N_b "------------GNLSE parameters------------" N_g = 14 "----------------------------------------" M = overlap(n2, lamda_c, gama) F, fp = dF_sidebands(betas, lamp, lamda_c, n2, M, P_p) int_fwm = sim_parameters(n2, 1, alphadB, betas, M, fr, T0) int_fwm.general_options(maxerr, ss) int_fwm = deepcopy(int_fwm) int_fwm.propagation_parameters(N_g, z, dz_less) def test_energy_conserve_s0_pulse(self): u_g, U_g, int_fwm_g, sim_wind_g, Dop_g, non_integrand_g = \ formulate_GNLSE(self.int_fwm, self.N_g, self.z, self.dz_less, self.fp, self.df, self.F, self.lamp, self.lamda_c, self.P_p, self.P_s,self.P_i, pulse) ss = 0 #u_out_b, U_out_b = self.pulse_propagation( # u_g, U_g, int_fwm_g, sim_wind_g, Dop_g, non_integrand_g.dAdzmm, self.z) u_out_g, U_out_g, temp1, temp2, temp3 = pulse_propagation_adaptive( u_g, U_g, int_fwm_g, sim_wind_g, Dop_g, non_integrand_g.dAdzmm, self.z) E1 = np.linalg.norm(u_g, 2, axis=-1) E2 = np.linalg.norm(u_out_g, 2, axis=-1) assert_allclose(E1, E2, atol=1e-3) def test_energy_conserve_s1_pulse(self): u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b = \ formulate_GNLSE(self.int_fwm, self.N_g, self.z, self.dz_less, self.fp, self.df, self.F, self.lamp, self.lamda_c, self.P_p,self.P_s, self.P_i, pulse) ss = 1 u_out_b, U_out_b, temp1, temp2, temp3 = pulse_propagation_adaptive( u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b.dAdzmm) E1 = np.linalg.norm(u_b, 2, axis=-1) E2 = np.linalg.norm(u_out_b, 2, axis=-1) assert_allclose(E1, E2, atol=1e-3) def test_energy_conserve_s0_cw(self): u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b = \ formulate_GNLSE(self.int_fwm, self.N_g, self.z, self.dz_less, self.fp, self.df, self.F, self.lamp, self.lamda_c, self.P_p,self.P_s, self.P_i, cw) ss = 0 u_out_b, U_out_b, temp1, temp2, temp3 = pulse_propagation_adaptive( u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b.dAdzmm) E1 = np.linalg.norm(u_b, 2, axis=-1) E2 = np.linalg.norm(u_out_b, 2, axis=-1) assert_allclose(E1, E2) def test_energy_conserve_s1_cw(self): u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b = \ formulate_GNLSE(self.int_fwm, self.N_g, self.z, self.dz_less, self.fp, self.df, self.F, self.lamp, self.lamda_c, self.P_p,self.P_s, self.P_i, cw) ss = 1 u_out_b, U_out_b, temp1, temp2, temp3 = pulse_propagation_adaptive( u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b.dAdzmm) E1 = np.linalg.norm(u_b, 2, axis=-1) E2 = np.linalg.norm(u_out_b, 2, axis=-1) assert_allclose(E1, E2)
class Test_energy_conserve_constant(): "---------------constants---------------" ss = 1 n2 = 2.5e-20 gama = 10e-3 lamda_c = 1051.85e-9 dz_less = 100 betas = np.array([0, 0, 0, 6.756e-2, # propagation constants [ps^n/m] -1.002e-4, 3.671e-7]) * 1e-3 maxerr = 1e-13 fr = 0.18 "----------Combined parameters-----------" alphadB = 0 z = 1 dz = 0.01 z = float_range(0, z, dz) df = 0.01 # frequency step in [Thz] lamp = 1048e-9 P_p = 20 P_s = 1 P_i = 1 T0 = 10 # [ps] "----------------------------------------" "------------BNLSE parameters------------" N_b = 10 Df_band = df * 2**N_b "------------GNLSE parameters------------" N_g = 14 "----------------------------------------" M = overlap(n2, lamda_c, gama) F, fp = dF_sidebands(betas, lamp, lamda_c, n2, M, P_p) sim_wind_g = \ formulate_GNLSE(int_fwm, N_g, z.end, dz_less, fp, df, F, lamp, lamda_c, P_p, P_s,P_i, pulse_GNLSE)[3] def test_energy_conserve_s0_pulse(self): u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b = \ formulate_BNLSE(int_fwm, self.N_b, self.z.end, self.dz_less, self.fp, self.df, self.F, self.Df_band, self.lamp, self.lamda_c, self.P_p,self.P_s, self.P_i, pulse, self.sim_wind_g.fv, self.sim_wind_g) ss = 0 u_out_b, U_out_b, temp1,temp2,temp3 = pulse_propagation_constant( u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b.dAdzmm, self.z) E1 = np.sum(np.linalg.norm(u_b, 2, axis=-1)**2) E2 = np.sum(np.linalg.norm(u_out_b, 2, axis=-1)**2) assert_allclose(E1, E2) def test_energy_conserve_s1_pulse(self): u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b = \ formulate_BNLSE(int_fwm, self.N_b, self.z.end, self.dz_less, self.fp, self.df, self.F, self.Df_band, self.lamp, self.lamda_c, self.P_p,self.P_s, self.P_i, pulse, self.sim_wind_g.fv, self.sim_wind_g) ss = 1 u_out_b, U_out_b, temp1,temp2,temp3 = pulse_propagation_constant( u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b.dAdzmm, self.z) E1 = np.sum(np.linalg.norm(u_b, 2, axis=-1)**2) E2 = np.sum(np.linalg.norm(u_out_b, 2, axis=-1)**2) assert_allclose(E1, E2) def test_energy_conserve_s0_cw(self): u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b = \ formulate_BNLSE(int_fwm, self.N_b, self.z.end, self.dz_less, self.fp, self.df, self.F, self.Df_band, self.lamp, self.lamda_c, self.P_p,self.P_s, self.P_i, cw, self.sim_wind_g.fv, self.sim_wind_g) ss = 0 u_out_b, U_out_b, temp1,temp2,temp3 = pulse_propagation_constant( u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b.dAdzmm, self.z) E1 = np.sum(np.linalg.norm(u_b, 2, axis=-1)**2) E2 = np.sum(np.linalg.norm(u_out_b, 2, axis=-1)**2) assert_allclose(E1, E2) def test_energy_conserve_s1_cw(self): u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b = \ formulate_BNLSE(int_fwm, self.N_b, self.z.end, self.dz_less, self.fp, self.df, self.F, self.Df_band, self.lamp, self.lamda_c, self.P_p,self.P_s, self.P_i, cw, self.sim_wind_g.fv, self.sim_wind_g) ss = 1 u_out_b, U_out_b, temp1,temp2,temp3 = pulse_propagation_constant( u_b, U_b, int_fwm_b, sim_wind_b, Dop_b, non_integrand_b.dAdzmm, self.z) E1 = np.sum(np.linalg.norm(u_b, 2, axis=-1)**2) E2 = np.sum(np.linalg.norm(u_out_b, 2, axis=-1)**2) assert_allclose(E1, E2)