Skip to content

Abundance

abundance

Python module containing models for the abundance profile of the ICM.

XCOPAbundance

Bases: Module

Universal iron abundance profile as defined in Ghirardini 2018+ in the X-COP cluster sample

\[Fe(x) = 0.21 (x + 0.021)^{-0.48} - 6.54\times \exp(- \frac{(r + 0.0816)^2}{0.0027})\]
Source code in src/abundance.py
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class XCOPAbundance(hk.Module):
    r"""Universal iron abundance profile as defined in Ghirardini 2018+ in the X-COP cluster sample

    $$Fe(x) = 0.21 (x + 0.021)^{-0.48} - 6.54\times \exp(- \frac{(r + 0.0816)^2}{0.0027})$$
    """

    def __init__(self):
        super(XCOPAbundance, self).__init__()

    def __call__(self, r):
        """
        Compute the abundance function for a given radius, following Mernier et al 2017.

        Parameters:
            r (jnp.array): Radius to compute the temperature in kpc

        Returns:
            (jnp.array): Abundance function evaluated at the given radius
        """

        R500 = 1309. #[kpc]
        x = r/R500
        Z = 0.21*(x+0.021)**(-0.48) - 6.54*jnp.exp( - (x+0.0816)**2 / (0.0027) )

        #Clip the values to the [0.1-0.9] range (otherwise the T-Z interpolation does not work.)
        return Z #jnp.clip(Z, 0.1, 0.9)

__call__(r)

Compute the abundance function for a given radius, following Mernier et al 2017.

Parameters:

Name Type Description Default
r array

Radius to compute the temperature in kpc

required

Returns:

Type Description
array

Abundance function evaluated at the given radius

Source code in src/abundance.py
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
def __call__(self, r):
    """
    Compute the abundance function for a given radius, following Mernier et al 2017.

    Parameters:
        r (jnp.array): Radius to compute the temperature in kpc

    Returns:
        (jnp.array): Abundance function evaluated at the given radius
    """

    R500 = 1309. #[kpc]
    x = r/R500
    Z = 0.21*(x+0.021)**(-0.48) - 6.54*jnp.exp( - (x+0.0816)**2 / (0.0027) )

    #Clip the values to the [0.1-0.9] range (otherwise the T-Z interpolation does not work.)
    return Z #jnp.clip(Z, 0.1, 0.9)