@@ -58,6 +58,56 @@ def kappa_s_and_scale_radius_for_duffy(mass_at_200, redshift_object, redshift_so
5858
5959 return kappa_s , scale_radius , radius_at_200
6060
61+ def kappa_s_and_scale_radius_and_core_radius (mass_at_200 , f_c , redshift_object , redshift_source ):
62+ """
63+ Computes the AutoGalaxy cNFW parameters (kappa_s, scale_radius, core_radius) for an NFW halo of the given
64+ mass, enforcing the Penarrubia '12 mass-concentration relation.
65+
66+ Interprets mass as *`M_{200c}`*, not `M_{200m}`.
67+
68+ f_c = core_radius / scale radius
69+ """
70+
71+ from astropy import units
72+
73+ from autogalaxy .cosmology .wrap import Planck15
74+
75+ cosmology = Planck15 ()
76+
77+ cosmic_average_density = (
78+ cosmology .critical_density (redshift_object ).to (units .solMass / units .kpc ** 3 )
79+ ).value
80+
81+ critical_surface_density = (
82+ cosmology .critical_surface_density_between_redshifts_solar_mass_per_kpc2_from (
83+ redshift_0 = redshift_object , redshift_1 = redshift_source
84+ )
85+ )
86+
87+ kpc_per_arcsec = cosmology .kpc_per_arcsec_from (redshift = redshift_object )
88+
89+ radius_at_200 = (
90+ mass_at_200 / (200.0 * cosmic_average_density * (4.0 * np .pi / 3.0 ))
91+ ) ** (
92+ 1.0 / 3.0
93+ ) # r200
94+ coefficient = 5.71 * (1.0 + redshift_object ) ** (
95+ - 0.47
96+ ) # The coefficient of Duffy mass-concentration (Duffy+2008)
97+ concentration = coefficient * (mass_at_200 / 2.952465309e12 ) ** (
98+ - 0.084
99+ ) # mass-concentration relation. (Duffy+2008)
100+ mass_concentration_relation = ((f_c ** 2 * np .log (1 + concentration / f_c ) + (1 - 2 * f_c ) * np .log (1 + concentration )) / (1 + f_c )** 2
101+ - concentration / ((1 + concentration ) * (1 - f_c ))) #mass concentration relation (Penarrubia+2012)
102+
103+ scale_radius_kpc = radius_at_200 / concentration # scale radius in kpc
104+ rho_0 = mass_at_200 / (4 * np .pi * scale_radius_kpc ** 3 * mass_concentration_relation )
105+ kappa_s = rho_0 * scale_radius_kpc / critical_surface_density # kappa_s
106+ scale_radius = scale_radius_kpc / kpc_per_arcsec # scale radius in arcsec
107+ core_radius = f_c * scale_radius # core radius in arcsec
108+
109+ return kappa_s , scale_radius , core_radius , radius_at_200
110+
61111
62112def _ludlow16_cosmology_callback (
63113 mass_at_200 ,
0 commit comments