Source code for lenstronomy.Util.magnification_finite_util

import numpy as np


[docs] def auto_raytracing_grid_size(source_fwhm_parcsec, grid_size_scale=0.005, power=1.0): """This function returns the size of a ray tracing grid in units of arcsec appropriate for magnification computations with finite-size background sources. This fit is calibrated for source sizes (interpreted as the FWHM of a Gaussian) in the range 0.1 -100 pc. :param source_fwhm_parcsec: the full width at half max of a Gaussian background source :return: an appropriate grid size for finite-size background magnification computation """ grid_radius_arcsec = grid_size_scale * source_fwhm_parcsec**power return grid_radius_arcsec
[docs] def auto_raytracing_grid_resolution( source_fwhm_parcsec, grid_resolution_scale=0.0002, ref=10.0, power=1.0 ): """This function returns a resolution factor in units arcsec/pixel appropriate for magnification computations with finite-size background sources. This fit is calibrated for source sizes (interpreted as the FWHM of a Gaussian) in the range 0.1-100 pc. :param source_fwhm_parcsec: the full width at half max of a Gaussian background source :return: an appropriate grid resolution for finite-size background magnification computation """ grid_resolution = grid_resolution_scale * (source_fwhm_parcsec / ref) ** power return grid_resolution
[docs] def setup_mag_finite(grid_radius_arcsec, grid_resolution, source_model, kwargs_source): """Sets up the ray tracing grid and source light model for magnification_finite_adaptive and plot_quasar_images routines. This new updates allows for more flexibility in the source light model by requiring the user to specify the source light mode, grid size and grid resolution before calling the function. The functions auto_raytrracing_grid_size and auto_raytracing_grid_resolution give good estimates for appropriate parameter choices for grid_radius_arcsec and grid_resolution. :param grid_radius_arcsec: the size of the ray tracing region in arcsec; if not specified, an appropriate value will be estimated from the source size :param grid_resolution: the grid resolution in units arcsec/pixel; if not specified, an appropriate value will be estimated from the source size :param source_model: instance of LightModel for the source :kwargs_source: keyword arguments for the light profile corresponding to the desired LightModel instance """ # setup the grid npix = int(2 * grid_radius_arcsec / grid_resolution) _grid_x = np.linspace(-grid_radius_arcsec, grid_radius_arcsec, npix) _grid_y = np.linspace(-grid_radius_arcsec, grid_radius_arcsec, npix) grid_x_0, grid_y_0 = np.meshgrid(_grid_x, _grid_y) return ( grid_x_0, grid_y_0, source_model, kwargs_source, grid_resolution, grid_radius_arcsec, )