Esempio n. 1
0
 def test_sis_ray_shooting(self):
     z_source = 1.5
     z_lens = 0.5
     lens_model_list = ['SIS']
     redshift_list = [z_lens]
     lensModelMutli = MultiPlane(z_source=z_source,
                                 lens_model_list=lens_model_list,
                                 lens_redshift_list=redshift_list)
     lensModel = LensModel(lens_model_list=lens_model_list)
     kwargs_lens = [{'theta_E': 1., 'center_x': 0, 'center_y': 0}]
     beta_x, beta_y = lensModelMutli.ray_shooting(1., 0., kwargs_lens)
     beta_x_single, beta_y_single = lensModel.ray_shooting(
         1, 0., kwargs_lens)
     npt.assert_almost_equal(beta_x, beta_x_single, decimal=8)
     npt.assert_almost_equal(beta_y, beta_y_single, decimal=8)
     x, y = np.array([1.]), np.array([2.])
     beta_x, beta_y = lensModelMutli.ray_shooting(x, y, kwargs_lens)
     beta_x_single, beta_y_single = lensModel.ray_shooting(
         x, y, kwargs_lens)
     npt.assert_almost_equal(beta_x, beta_x_single, decimal=8)
     npt.assert_almost_equal(beta_y, beta_y_single, decimal=8)
Esempio n. 2
0
    def test_random_ordering(self):
        z_source = 1.5
        lens_model_list = ['SIS', 'SIS', 'SIS']
        sis1 = {'theta_E': 1., 'center_x': 0, 'center_y': 0}
        sis2 = {'theta_E': .2, 'center_x': 0.5, 'center_y': 0}
        sis3 = {'theta_E': .1, 'center_x': 0, 'center_y': 0.5}
        z1 = 0.1
        z2 = 0.5
        z3 = 0.7
        redshift_list = [z1, z2, z3]
        kwargs_lens = [sis1, sis2, sis3]
        lensModel = MultiPlane(z_source=z_source,
                               lens_model_list=lens_model_list,
                               lens_redshift_list=redshift_list)
        beta_x_1, beta_y_1 = lensModel.ray_shooting(1., 0., kwargs_lens)

        redshift_list = [z3, z2, z1]
        kwargs_lens = [sis3, sis2, sis1]
        lensModel = MultiPlane(z_source=z_source,
                               lens_model_list=lens_model_list,
                               lens_redshift_list=redshift_list)
        beta_x_2, beta_y_2 = lensModel.ray_shooting(1., 0., kwargs_lens)
        npt.assert_almost_equal(beta_x_1, beta_x_2, decimal=8)
        npt.assert_almost_equal(beta_y_1, beta_y_2, decimal=8)
Esempio n. 3
0
 def test_sis_ray_tracing(self):
     z_source = 1.5
     lens_model_list = ['SIS']
     redshift_list = [0.5]
     lensModelMutli = MultiPlane(z_source=z_source,
                                 lens_model_list=lens_model_list,
                                 lens_redshift_list=redshift_list)
     lensModel = LensModel(lens_model_list=lens_model_list)
     kwargs_lens = [{'theta_E': 1, 'center_x': 0, 'center_y': 0}]
     beta_x_simple, beta_y_simple = lensModel.ray_shooting(
         1, 0, kwargs_lens)
     beta_x_multi, beta_y_multi = lensModelMutli.ray_shooting(
         1, 0, kwargs_lens)
     npt.assert_almost_equal(beta_x_simple, beta_x_multi, decimal=10)
     npt.assert_almost_equal(beta_y_simple, beta_y_multi, decimal=10)
     npt.assert_almost_equal(beta_x_simple, 0, decimal=10)
     npt.assert_almost_equal(beta_y_simple, 0, decimal=10)
Esempio n. 4
0
    def test_pseudo_multiplane(self):
        z_source = 1.5
        lens_model_list = ['SIS', 'SIS']
        sis1 = {'theta_E': 1., 'center_x': 0, 'center_y': 0}
        sis2 = {'theta_E': .2, 'center_x': 0.5, 'center_y': 0}
        z1 = 0.5
        z2 = 0.5

        redshift_list = [z1, z2]
        kwargs_lens = [sis1, sis2]
        lensModelMulti = MultiPlane(z_source=z_source,
                                    lens_model_list=lens_model_list,
                                    lens_redshift_list=redshift_list)
        lensModelSingle = LensModel(lens_model_list=lens_model_list)

        beta_x, beta_y = lensModelMulti.ray_shooting(1, 1, kwargs_lens)
        beta_x_single, beta_y_single = lensModelSingle.ray_shooting(
            1, 1, kwargs_lens)
        npt.assert_almost_equal(beta_x, beta_x_single, decimal=10)
        npt.assert_almost_equal(beta_y, beta_y_single, decimal=10)
Esempio n. 5
0
    def test_ray_shooting_partial_2(self):

        z_source = 1.5
        lens_model_list = ['SIS', 'SIS', 'SIS', 'SIS']
        sis1 = {'theta_E': 0.4, 'center_x': 0, 'center_y': 0}
        sis2 = {'theta_E': .2, 'center_x': 0.5, 'center_y': 0}
        sis3 = {'theta_E': .1, 'center_x': 0, 'center_y': 0.5}
        sis4 = {'theta_E': 0.5, 'center_x': 0.1, 'center_y': 0.3}

        lens_model_list_macro = ['SIS']
        kwargs_macro = [{'theta_E': 1, 'center_x': 0, 'center_y': 0}]

        zmacro = 0.5

        z1 = 0.1
        z2 = 0.5
        z3 = 0.5
        z4 = 0.7
        redshift_list = [z1, z2, z3, z4]
        kwargs_lens = [sis1, sis2, sis3, sis4]
        kwargs_lens_full = kwargs_macro + kwargs_lens
        lensModel_full = MultiPlane(
            z_source=z_source,
            lens_model_list=lens_model_list_macro + lens_model_list,
            lens_redshift_list=[zmacro] + redshift_list)
        lensModel_macro = MultiPlane(z_source=z_source,
                                     lens_model_list=lens_model_list_macro,
                                     lens_redshift_list=[zmacro])
        lensModel = MultiPlane(z_source=z_source,
                               lens_model_list=lens_model_list,
                               lens_redshift_list=redshift_list)

        theta_x, theta_y = 1., 1.

        x_subs, y_subs, alpha_x_subs, alpha_y_subs = lensModel.ray_shooting_partial(
            x=0,
            y=0,
            alpha_x=theta_x,
            alpha_y=theta_y,
            z_start=0,
            z_stop=zmacro,
            kwargs_lens=kwargs_lens)

        x_out, y_out, alpha_x_out, alpha_y_out = lensModel_macro.ray_shooting_partial(
            x_subs,
            y_subs,
            alpha_x_subs,
            alpha_y_subs,
            zmacro,
            zmacro,
            kwargs_macro,
            include_z_start=True)
        npt.assert_almost_equal(x_subs, x_out)
        npt.assert_almost_equal(y_subs, y_out)

        x_full, y_full, alpha_x_full, alpha_y_full = lensModel_full.ray_shooting_partial(
            0, 0, theta_x, theta_y, 0, zmacro, kwargs_lens_full)
        npt.assert_almost_equal(x_full, x_out)
        npt.assert_almost_equal(y_full, y_out)
        npt.assert_almost_equal(alpha_x_full, alpha_x_out)
        npt.assert_almost_equal(alpha_y_full, alpha_y_out)

        x_src, y_src, _, _ = lensModel_full.ray_shooting_partial(
            x=x_out,
            y=y_out,
            alpha_x=alpha_x_out,
            alpha_y=alpha_y_out,
            z_start=zmacro,
            z_stop=z_source,
            kwargs_lens=kwargs_lens_full)

        beta_x, beta_y = lensModel.co_moving2angle_source(x_src, y_src)
        beta_x_true, beta_y_true = lensModel_full.ray_shooting(
            theta_x, theta_y, kwargs_lens_full)

        npt.assert_almost_equal(beta_x, beta_x_true, decimal=8)
        npt.assert_almost_equal(beta_y, beta_y_true, decimal=8)