Skip to content

Commit cfea2c0

Browse files
author
Niek Wielders
committed
added kappa_s_and_scale_radius_and_core_radius
1 parent 1dcf3d0 commit cfea2c0

1 file changed

Lines changed: 50 additions & 0 deletions

File tree

autogalaxy/profiles/mass/dark/mcr_util.py

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

62112
def _ludlow16_cosmology_callback(
63113
mass_at_200,

0 commit comments

Comments
 (0)