Computes an amplitude of density fluctuation smoothed on a mass scale $M \, [h^{-1}\mathrm{M_\odot}]$, $$ \sigma_0^2(M) = \frac{1}{2\pi^2} \int_0^\infty W^2(k; M) P(k) dk. $$ Amplitude (redshift) of $\sigma_0$ is that of the power spectrum (usually at $z=0$).
s = Sigma(PowerSpectrum, Mmin = $M\mathrm{min}$, M_max = $M_\mathrm{max}$, *n* = $n$)
Computes $n$ pairs of (M, 1/sigma) in a mass range ($M_\mathrm{min}$, $M_\mathrm{max}$), and values in between are available by spline interpolation. Keyword arguments M_min, M_max, and n can be omitted and default parameters M_min = $10^{10}$, M_max = $10^{16}$, and n = 1001 would be used.
Operation | Result |
---|---|
s(M) | $\sigma_0(M)$ |
s.inv(sigma) | inverse function $\sigma_0^{-1}(\texttt{sigma}) = M$ |
len(s) | length of the (M, sigma) data computed for interpolation |
s[i] | ith pair of (M, sigma) data |
s.M | array of M [$h^{-1} M_\odot$] |
s.sinv | array of 1/sigma |
s.M_range | range of M available for interpolation |
s.sigma0_range | range of sigma available for interpolation |
In [2]:
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import mockgallib as mock
mock.cosmology_set(0.31) # set omega_m
ps = mock.PowerSpectrum('../data/planck1_matterpower.dat')
sigma = mock.Sigma(ps)
sigma(1.0e12)
Out[2]:
In [8]:
print(len(sigma))
print("M range: %.2e %.2e" % sigma.M_range)
print("sigma range: %.4f %.4f" % sigma.sigma0_range)
Sigma module computes $\sigma$ in the range sigma.M_range
for len(sigma) = 1001
points with logarithmic spacing.
In [17]:
M = sigma.M # array of M
s = 1.0/sigma.sinv # array of sigma(M)
plt.xscale('log')
plt.xlabel('$M$')
plt.ylabel('$\\sigma$')
plt.plot(M, s, 'r-')
# s.sigma0(M) computes sigma0 for M in M_range using spline interpolation
M = np.power(10.0, np.arange(10.0, 17.0, 1.0))
s = [sigma(mm) for mm in M]
plt.plot(M, s, 'x')
# s.mass(sigma0) computes the inverse function in sigma_range using spline interpolation
s = np.arange(0.5, 4.0, 0.5)
M = [sigma.inv(ss) for ss in s]
plt.plot(M, s, '*');
In [1]:
%%html
<style>table {float:left}</style>