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)
def test_ray_shooting_partial(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) lensModel_2 = LensModel(z_source=z_source, lens_model_list=lens_model_list, lens_redshift_list=redshift_list, multi_plane=True) multiplane_2 = lensModel_2.lens_model intermediate_index = 1 theta_x, theta_y = 1., 1. Tzsrc = lensModel._multi_plane_base._cosmo_bkg.T_xy(0, z_source) z_intermediate = lensModel._multi_plane_base._lens_redshift_list[intermediate_index] for lensmodel_class in [lensModel, multiplane_2]: x_out, y_out, alpha_x_out, alpha_y_out = lensmodel_class.ray_shooting_partial(x=0, y=0, alpha_x=theta_x, alpha_y=theta_y, z_start=0, z_stop=z_intermediate, kwargs_lens=kwargs_lens) x_out_full_0 = x_out y_out_full_0 = y_out x_out, y_out, alpha_x_out, alpha_y_out = lensmodel_class.ray_shooting_partial(x=x_out, y=y_out, alpha_x=alpha_x_out, alpha_y=alpha_y_out, z_start=z_intermediate, z_stop=z_source, kwargs_lens=kwargs_lens) beta_x, beta_y = lensModel.co_moving2angle_source(x_out, y_out) beta_x_true, beta_y_true = lensmodel_class.ray_shooting(theta_x, theta_y, kwargs_lens) npt.assert_almost_equal(beta_x, beta_x_true, decimal=8) npt.assert_almost_equal(beta_y, beta_y_true, decimal=8) T_ij_start = lensModel._multi_plane_base._cosmo_bkg.T_xy(z_observer=0, z_source=0.1) T_ij_end = lensModel._multi_plane_base._cosmo_bkg.T_xy(z_observer=0.7, z_source=1.5) x_out, y_out, alpha_x_out, alpha_y_out = lensmodel_class.ray_shooting_partial(x=0, y=0, alpha_x=theta_x, alpha_y=theta_y, z_start=0, z_stop=z_source, kwargs_lens=kwargs_lens, T_ij_start=T_ij_start, T_ij_end=T_ij_end) beta_x, beta_y = x_out/Tzsrc, y_out/Tzsrc npt.assert_almost_equal(beta_x, beta_x_true, decimal=8) npt.assert_almost_equal(beta_y, beta_y_true, decimal=8)