Example #1
0
    def traced_grids_of_planes_from_grid(self, grid, plane_index_limit=None):

        grid_calc = grid.copy()  # TODO looks unnecessary? Probably pretty expensive too

        traced_grids = []
        traced_deflections = []

        for (plane_index, plane) in enumerate(self.planes):

            scaled_grid = grid_calc.copy()

            if plane_index > 0:
                for previous_plane_index in range(plane_index):
                    scaling_factor = cosmology_util.scaling_factor_between_redshifts_from_redshifts_and_cosmology(
                        redshift_0=self.plane_redshifts[previous_plane_index],
                        redshift_1=plane.redshift,
                        redshift_final=self.plane_redshifts[-1],
                        cosmology=self.cosmology,
                    )

                    scaled_deflections = (
                        scaling_factor * traced_deflections[previous_plane_index]
                    )

                    scaled_grid -= scaled_deflections

            traced_grids.append(scaled_grid)

            if plane_index_limit is not None:
                if plane_index == plane_index_limit:
                    return traced_grids

            traced_deflections.append(plane.deflections_from_grid(grid=scaled_grid))

        return traced_grids
Example #2
0
 def scaling_factor_between_planes(self, i, j):
     return cosmology_util.scaling_factor_between_redshifts_from_redshifts_and_cosmology(
         redshift_0=self.plane_redshifts[i],
         redshift_1=self.plane_redshifts[j],
         redshift_final=self.plane_redshifts[-1],
         cosmology=self.cosmology,
     )