コード例 #1
0
 def test_single_wavelength_gradient_integral(self):
     """ Test FOM gradient integral for single wavelength case. """
     fom_grad = ModeMatch.fom_gradient_wavelength_integral_impl(
         T_fwd_vs_wavelength=np.array([0.2851]),
         T_fwd_partial_derivs_vs_wl=np.array([2.0]),
         target_T_fwd_vs_wavelength=np.array([1.0]),
         wl=np.array([1800e-9]),
         norm_p=1)
     exact_fom_grad = -1.0 * np.sign(0.2851 - 1.0) * 2.0
     self.assertAlmostEqual(fom_grad[0], exact_fom_grad, 15)
コード例 #2
0
 def test_fom_gradient_integral_p1(self):
     """ Test FOM gradient integral with norm p = 1. """
     wl_points = 3
     wavelengths = np.linspace(1300e-9, 1800e-9, wl_points)
     target_T_fwd = lambda wl: np.linspace(0.0, 1.0, wl.size)
     fom_grad = ModeMatch.fom_gradient_wavelength_integral_impl(
         T_fwd_vs_wavelength=0.25 * np.ones(wl_points),
         T_fwd_partial_derivs_vs_wl=np.ones((1, wl_points)),
         target_T_fwd_vs_wavelength=target_T_fwd(wavelengths),
         wl=wavelengths,
         norm_p=1)
     self.assertAlmostEqual(fom_grad[0], 0.5, 15)
コード例 #3
0
 def test_fom_gradient_integral_p2(self):
     """ Test FOM gradient integral with norm p = 2. """
     wl_points = 5000
     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()))
     fom_grad = ModeMatch.fom_gradient_wavelength_integral_impl(
         T_fwd_vs_wavelength=0.5 * np.ones(wl_points),
         T_fwd_partial_derivs_vs_wl=np.ones((1, wl_points)),
         target_T_fwd_vs_wavelength=target_T_fwd(wavelengths),
         wl=wavelengths,
         norm_p=2)
     exact_fom_grad = (np.exp(1.0) - 2.0) / np.sqrt(4.0 * np.exp(1.0) -
                                                    np.exp(2.0) - 2.0)
     self.assertAlmostEqual(fom_grad[0], exact_fom_grad, 7)