3 import matplotlib.pyplot
as plt
4 from scipy.integrate
import quad
5 from scipy.interpolate
import interp1d
7 from scipy.special
import sici
9 cpar1={
'Om_m':0.3,
'Om_b':0.05,
'Om_nu':0.,
10 'h':0.70,
'sig8':0.8,
'n':0.96}
11 cpar2={
'Om_m':0.272,
'Om_b':0.0455,
'Om_nu':0.,
12 'h':0.704,
'sig8':0.81,
'n':0.967}
13 cpar3={
'Om_m':0.3175,
'Om_b':0.0490,
'Om_nu':0.,
14 'h':0.6711,
'sig8':0.834,
'n':0.9624}
27 params={
'DELTA_C':1.686470199841,
37 anu2=params[
'ST_a']*nu*nu
38 expnu=np.exp(-anu2*0.5)
40 return params[
'ST_A']*np.sqrt(2*params[
'ST_a']/np.pi)*(1+(1./anu2)**params[
'ST_p'])*nu*expnu
44 anu2=params[
'ST_a']*nu*nu
46 return 1+(anu2-1+2*params[
'ST_p']/(1+anu2**params[
'ST_p']))/params[
'DELTA_C']
49 return params[
'DUF_A']*(m/2E12)**params[
'DUF_B']*(1+z)**params[
'DUF_C']
52 cosmo=ccl.Cosmology(Omega_c=cp[
'Om_m']-cp[
'Om_b'],Omega_b=cp[
'Om_b'],h=cp[
'h'],
53 sigma8=cp[
'sig8'],n_s=cp[
'n'],
54 transfer_function=
'eisenstein_hu',matter_power_spectrum=
'linear')
56 lmarr=LMMIN+(LMMAX-LMMIN)*(np.arange(NM)+0.5)/NM
58 lmarrb=np.zeros(NM+2); lmarrb[0]=lmarr[0]-dlm; lmarrb[1:-1]=lmarr; lmarrb[-1]=lmarr[-1]+dlm
61 sigmarrb=ccl.sigmaM(cosmo,marrb/cp[
'h'],1./(1+z))
62 sigmarr=sigmarrb[1:-1]
63 dlsMdl10M=np.fabs((sigmarrb[2:]-sigmarrb[:-2])/(2*dlm))/sigmarr
64 omega_z=cp[
'Om_m']*(1+z)**3/(cp[
'Om_m']*(1+z)**3+1-cp[
'Om_m'])
65 delta_c=params[
'DELTA_C']*(1+0.012299*np.log10(omega_z))
66 Delta_v=(18*np.pi**2+82*(omega_z-1)-39*(omega_z-1)**2)/omega_z
67 fM=
st_gs(sigmarr,delta_c)*dlsMdl10M
68 bM=
st_b1(sigmarr,delta_c)
70 cMf=interp1d(lmarr,cM,kind=
'linear',bounds_error=
False,fill_value=cM[0])
71 rhoM=ccl.rho_x(cosmo,1.,
'matter')/cp[
'h']**2
75 fbM0=1-np.sum(fM*bM)*dlm
77 rvM=(3*marr/(4*np.pi*rhoM*Delta_v))**0.333333333333
79 rsM0=(3*10.**LM0/(4*np.pi*rhoM*Delta_v))**0.333333333/
duffy_c(10.**LM0,z)
80 rsMf=interp1d(lmarr,rsM,kind=
'linear',bounds_error=
False,fill_value=rsM0)
82 f1hf=interp1d(lmarr,marr*fM/rhoM,kind=
'linear',bounds_error=
False,fill_value=0)
83 f1h0=fM0*10.**LM0/rhoM
84 f2hf=interp1d(lmarr,fM*bM,kind=
'linear',bounds_error=
False,fill_value=0)
93 fsin=np.sin(x)*(sic-six)
94 fcos=np.cos(x)*(cic-cix)
95 fsic=np.sin(c*x)/(x*(1+c))
96 fcon=np.log(1.+c)-c/(1+c)
98 return (fsin+fcos-fsic)/fcon
106 return quad(integ,lmarr[0],lmarr[-1])[0]+f1h0*(u_nfw(LM0,k))**2
108 return np.sum(integ(lmarr))*dlm+f1h0*(u_nfw(LM0,k))**2
116 return quad(integ,lmarr[0],lmarr[-1])[0]+f2h0*u_nfw(LM0,k)
118 return np.sum(integ(lmarr))*dlm+f2h0*u_nfw(LM0,k)
121 p1harr=np.array([p1h(kk)
for kk
in karr])
122 b2harr=np.array([b2h(kk)
for kk
in karr])
123 pklin=ccl.linear_matter_power(cosmo,karr*cp[
'h'],1./(1+z))*cp[
'h']**3
125 p2harr=pklin*b2harr**2
127 np.savetxt(fname_out,np.transpose([karr,pklin,p2harr,p1harr,ptarr]))
128 return pklin,pklin*b2harr**2,p1harr,pklin*b2harr**2+p1harr
130 k_arr=10.**(LKHMIN+(LKHMAX-LKHMIN)*(np.arange(NKH)+0.5)/NKH)
131 for ip,cp
in enumerate([cpar1,cpar2,cpar3]) :
133 get_halomod_pk(cp,k_arr,z+0.,integrate=USE_INT,fname_out=
'pk_hm_c%d_z%d.txt'%(ip+1,z))
def get_halomod_pk(cp, karr, z, integrate=True, fname_out=None)