コード例 #1
0
 def test_single_wavelength_fom_integral(self):
     """ Test FOM integral for single wavelength case: result should be input FOM for backward compatibility. """
     exact_fom = 0.4896
     fom = ModeMatch.fom_wavelength_integral(
         T_fwd_vs_wavelength=np.array([exact_fom]),
         wavelengths=np.array([1300e-9]),
         target_T_fwd=lambda wl: 0.5 * np.ones(wl.size),
         norm_p=1)  # unused
     self.assertAlmostEqual(fom, exact_fom, 15)
コード例 #2
0
 def test_fom_integral_norm_p1(self):
     """ Test FOM integral with norm p = 1. """
     wl_points = 5
     fom = ModeMatch.fom_wavelength_integral(
         T_fwd_vs_wavelength=np.ones(wl_points),
         wavelengths=np.linspace(1300e-9, 1800e-9, wl_points),
         target_T_fwd=lambda wl: np.power(
             np.sin(np.pi * (wl - wl.min()) / (wl.max() - wl.min())), 2),
         norm_p=1)
     exact_fom = 0.0
     self.assertAlmostEqual(fom, exact_fom, 15)
コード例 #3
0
 def test_fom_integral_norm_p2(self):
     """ Test FOM integral with norm p = 2. """
     wl_points = 5000
     fom = ModeMatch.fom_wavelength_integral(
         T_fwd_vs_wavelength=0.5 * np.ones(wl_points),
         wavelengths=np.linspace(1.0e-9, 1.0e-8, wl_points),
         target_T_fwd=lambda wl: np.exp(-1.0 * (wl - wl.min()) /
                                        (wl.max() - wl.min())),
         norm_p=2)
     exact_fom = 0.5 * np.exp(-1) * (
         np.sqrt(2.0 * (np.exp(2.0) - 1.0)) -
         np.sqrt(4.0 * np.exp(1.0) - np.exp(2.0) - 2.0))
     self.assertAlmostEqual(fom, exact_fom, 7)