Fast Methods for Cosmological Simulations
FastSim serves as a tool for quick N-body simulations in modified gravity.
cl_cmblx_bm.Power_Spectra Class Reference

Public Member Functions

def __init__ (self, cosmo_params=cosmo_fid, pk_params=pk_params, cosmo=cosmo, cosmo_h=None)
 
def Rho_crit (self, cosmo_h=None)
 
def DZ_int (self, z=[0], cosmo=None)
 
def sigma_crit (self, zl=[], zs=[], cosmo_h=None)
 
def ccl_pk_bbks (self, z, cosmo_params=None, pk_params=None)
 
def cl_z (self, z=[], l=np.arange(3000)+1, pk_params=None, cosmo_h=None, cosmo=None, pk_func=None)
 
def kappa_cl (self, zl_min=1.e-4, zl_max=1100, n_zl=10, log_zl=False, pk_func=None, zs1=[1100], p_zs1=[1], zs2=[1100], p_zs2=[1], pk_params=None, cosmo_h=None, l=np.arange(0, 3001))
 
def g_kappa_cl (self, pk_func=None, zs=[1100], p_zs=[1], zg=[1], p_zg=[1], bias_g=1, pk_params=None, cosmo_h=None, l=np.arange(0, 3001))
 

Public Attributes

 cosmo_params
 
 pk_params
 
 cosmo
 
 cosmo_h
 

Detailed Description

Definition at line 22 of file cl_cmblx_bm.py.

Constructor & Destructor Documentation

def cl_cmblx_bm.Power_Spectra.__init__ (   self,
  cosmo_params = cosmo_fid,
  pk_params = pk_params,
  cosmo = cosmo,
  cosmo_h = None 
)

Definition at line 23 of file cl_cmblx_bm.py.

23  def __init__(self,cosmo_params=cosmo_fid,pk_params=pk_params,cosmo=cosmo,cosmo_h=None):
24  self.cosmo_params=cosmo_params
25  self.pk_params=pk_params
26  self.cosmo=cosmo
27 
28  if not cosmo_h:
29  self.cosmo_h=cosmo.clone(H0=100)
30  else:
31  self.cosmo_h=cosmo_h
32 
def __init__(self, cosmo_params=cosmo_fid, pk_params=pk_params, cosmo=cosmo, cosmo_h=None)
Definition: cl_cmblx_bm.py:23

Member Function Documentation

def cl_cmblx_bm.Power_Spectra.ccl_pk_bbks (   self,
  z,
  cosmo_params = None,
  pk_params = None 
)

Definition at line 67 of file cl_cmblx_bm.py.

References cl_cmblx_bm.Power_Spectra.cl_z(), cl_cmbl_bm.Power_Spectra.cosmo_params, cl_cmblx_bm.Power_Spectra.cosmo_params, cl_cmblx_bm.Power_Spectra.DZ_int(), cl_cmbl_bm.Power_Spectra.pk_params, and cl_cmblx_bm.Power_Spectra.pk_params.

67  def ccl_pk_bbks(self,z,cosmo_params=None,pk_params=None):
68  if not cosmo_params:
69  cosmo_params=self.cosmo_params
70  if not pk_params:
71  pk_params=self.pk_params
72 
73  cosmo_ccl=pyccl.Cosmology(h=cosmo_params['h'],Omega_c=cosmo_params['Omc'],Omega_b=cosmo_params['Omb'],
74  sigma8=cosmo_params['s8'],n_s=cosmo_params['ns'],
75  transfer_function='bbks', matter_power_spectrum='linear',
76  Omega_g=cosmo_params['Og'])
77  #m_nu=cosmo_params['m_nu'],Neff=cosmo_params['Neff'])
78  kh=np.logspace(np.log10(pk_params['kmin']),np.log10(pk_params['kmax']),pk_params['nk'])
79  nz=len(z)
80  ps=np.zeros((nz,pk_params['nk']))
81  ps0=[]
82  z0=9.#PS(z0) will be rescaled using growth function when CCL fails.
83 
84  pyccl_pkf=pyccl.linear_matter_power
85  if pk_params['non_linear']==1:
86  pyccl_pkf=pyccl.nonlin_matter_power
87  for i in np.arange(nz):
88  try:
89  ps[i]= pyccl_pkf(cosmo_ccl,kh,1./(1+z[i]))
90  except Exception as err:
91  print ('CCL err',err,z[i])
92  if not np.any(ps0):
93  ps0=pyccl.linear_matter_power(cosmo_ccl,kh,1./(1.+z0))
94  Dz=self.DZ_int(z=[z0,z[i]])
95  ps[i]=ps0*(Dz[1]/Dz[0])**2
96  return ps*cosmo_params['h']**3,kh/cosmo_params['h'] #factors of h to get in same units as camb output
97 
def ccl_pk_bbks(self, z, cosmo_params=None, pk_params=None)
Definition: cl_cmblx_bm.py:67
def DZ_int(self, z=[0], cosmo=None)
Definition: cl_cmblx_bm.py:41
def cl_cmblx_bm.Power_Spectra.cl_z (   self,
  z = [],
  l = np.arange(3000)+1,
  pk_params = None,
  cosmo_h = None,
  cosmo = None,
  pk_func = None 
)

Definition at line 99 of file cl_cmblx_bm.py.

References cl_cmbl_bm.Power_Spectra.cosmo_h, cl_cmblx_bm.Power_Spectra.cosmo_h, cl_cmblx_bm.Power_Spectra.kappa_cl(), and cl_cmblx_bm.pk_func.

Referenced by cl_cmblx_bm.Power_Spectra.ccl_pk_bbks(), cl_cmblx_bm.Power_Spectra.g_kappa_cl(), and cl_cmblx_bm.Power_Spectra.kappa_cl().

99  cosmo=None,pk_func=None):
100  if not cosmo_h:
101  cosmo_h=self.cosmo_h
102  if not pk_func:
103  pk_func=self.camb_pk_too_many_z
104 
105  nz=len(z)
106  nl=len(l)
107 
108  pk,kh=pk_func(z=z,pk_params=pk_params)
109 
110  cls=np.zeros((nz,nl),dtype='float32')*u.Mpc
111  for i in np.arange(nz):
112  DC_i=cosmo_h.comoving_transverse_distance(z[i]).value#because camb k in h/mpc
113  lz=kh*DC_i-0.5
114  DC_i=cosmo_h.comoving_transverse_distance(z[i]).value
115  pk_int=interp1d(lz,pk[i]/DC_i**2,bounds_error=False,fill_value=0)
116  cls[i][:]+=pk_int(l)*u.Mpc
117  return cls
118 
def cl_cmblx_bm.Power_Spectra.DZ_int (   self,
  z = [0],
  cosmo = None 
)

Definition at line 41 of file cl_cmblx_bm.py.

References cl_cmbl_bm.Power_Spectra.cosmo, cl_cmblx_bm.Power_Spectra.cosmo, IntLensPar.cosmo, chipar.cosmo, Int_one_halo_Par.cosmo, IntMagPar.cosmo, Int_two_halo_Par.cosmo, Fpar.cosmo, IntClPar.cosmo, SigmaR_pars.cosmo, and SigmaV_pars.cosmo.

Referenced by cl_cmblx_bm.Power_Spectra.ccl_pk_bbks().

41  def DZ_int(self,z=[0],cosmo=None): #linear growth factor.. full integral.. eq 63 in Lahav and suto
42  if not cosmo:
43  cosmo=self.cosmo
44  def intf(z):
45  return (1+z)/(cosmo.H(z).value)**3
46  j=0
47  Dz=np.zeros_like(z,dtype='float32')
48 
49  for i in z:
50  Dz[j]=cosmo.H(i).value*scipy_int1d(intf,i,np.inf,epsrel=1.e-6,epsabs=1e-6)[0]
51  j=j+1
52  Dz*=(2.5*cosmo.Om0*cosmo.H0.value**2)
53  return Dz/Dz[0]
54 
def DZ_int(self, z=[0], cosmo=None)
Definition: cl_cmblx_bm.py:41
def cl_cmblx_bm.Power_Spectra.g_kappa_cl (   self,
  pk_func = None,
  zs = [1100],
  p_zs = [1],
  zg = [1],
  p_zg = [1],
  bias_g = 1,
  pk_params = None,
  cosmo_h = None,
  l = np.arange(0,3001) 
)

Definition at line 155 of file cl_cmblx_bm.py.

References cl_cmbl_bm.Power_Spectra.cl_z(), cl_cmblx_bm.Power_Spectra.cl_z(), cl_cmbl_bm.Power_Spectra.cosmo_h, cl_cmblx_bm.Power_Spectra.cosmo_h, cl_cmblx_bm.Power_Spectra.Rho_crit(), and cl_cmblx_bm.Power_Spectra.sigma_crit().

Referenced by cl_cmblx_bm.Power_Spectra.kappa_cl().

155  pk_params=None,cosmo_h=None,l=np.arange(0,3001)):
156  if not cosmo_h:
157  cosmo_h=self.cosmo_h
158 
159  clz=self.cl_z(z=zg,l=l,cosmo_h=cosmo_h,pk_params=pk_params,pk_func=pk_func) # p(k)/chi**2
160  clz*=bias_g
161 
162  rho=self.Rho_crit(cosmo_h=cosmo_h)*cosmo_h.Om0
163  sigma_c=rho/self.sigma_crit(zl=zg,zs=zs,cosmo_h=cosmo_h)
164  dzg=np.gradient(zg) if len(zg)>1 else 1
165  dzs=np.gradient(zs) if len(zs)>1 else 1
166 
167  cl_zs_12=np.dot(sigma_c*dzg*p_zg,clz)#integrate over zl..
168  cl=np.dot(p_zs*dzs,cl_zs_12)
169  cl/=np.sum(p_zs*dzs)*np.sum(p_zg*dzg)
170  return l,cl
171 
172 
def cl_z(self, z=[], l=np.arange(3000)+1, pk_params=None, cosmo_h=None, cosmo=None, pk_func=None)
Definition: cl_cmblx_bm.py:99
def Rho_crit(self, cosmo_h=None)
Definition: cl_cmblx_bm.py:33
def sigma_crit(self, zl=[], zs=[], cosmo_h=None)
Definition: cl_cmblx_bm.py:55
def cl_cmblx_bm.Power_Spectra.kappa_cl (   self,
  zl_min = 1.e-4,
  zl_max = 1100,
  n_zl = 10,
  log_zl = False,
  pk_func = None,
  zs1 = [1100],
  p_zs1 = [1],
  zs2 = [1100],
  p_zs2 = [1],
  pk_params = None,
  cosmo_h = None,
  l = np.arange(0,3001) 
)

Definition at line 121 of file cl_cmblx_bm.py.

References cl_cmbl_bm.Power_Spectra.cl_z(), cl_cmblx_bm.Power_Spectra.cl_z(), cl_cmbl_bm.Power_Spectra.cosmo_h, cl_cmblx_bm.Power_Spectra.cosmo_h, cl_cmblx_bm.Power_Spectra.g_kappa_cl(), max(), cl_cmblx_bm.Power_Spectra.Rho_crit(), and cl_cmblx_bm.Power_Spectra.sigma_crit().

Referenced by cl_cmblx_bm.Power_Spectra.cl_z().

121  pk_params=None,cosmo_h=None,l=np.arange(0,3001)):
122  if not cosmo_h:
123  cosmo_h=self.cosmo_h
124 
125  if log_zl:#bins for z_lens.
126  zl=np.logspace(np.log10(max(zl_min,1.e-4)),np.log10(zl_max),n_zl)
127  else:
128  zl=np.linspace(zl_min,zl_max,n_zl)
129 
130  clz=self.cl_z(z=zl,l=l,cosmo_h=cosmo_h,pk_params=pk_params,pk_func=pk_func)
131  # P(z,k=(l+05)/chi(z))/chi(z)^2 [nz,nl]
132  clz=(clz.T*(c/(cosmo_h.efunc(zl)*cosmo_h.H0))).T
133  # P(z,k=(l+0.5)/chi(z))/(chi(z)^2 H(z)) [nz,nl]
134  #clz*=(c/(cosmo_h.efunc(zl)*cosmo_h.H0))
135 
136  rho=self.Rho_crit(cosmo_h=cosmo_h)*cosmo_h.Om0
137  sigma_c1=rho/self.sigma_crit(zl=zl,zs=zs1,cosmo_h=cosmo_h) # 3/2 H0^2 (1+zl) chi(zl) * (1 - chi(zl)/chi(zs)) [n_zs,n_zl]
138  sigma_c2=rho/self.sigma_crit(zl=zl,zs=zs2,cosmo_h=cosmo_h)
139 
140  dzl=np.gradient(zl)
141  dzs1=np.gradient(zs1) if len(zs1)>1 else 1
142  dzs2=np.gradient(zs2) if len(zs2)>1 else 1
143 
144  cl_zs_12=np.einsum('ji,ki,il',sigma_c2,sigma_c1*dzl,clz)#integrate over zl..
145  cl=np.dot(p_zs2*dzs2,np.dot(p_zs1*dzs1,cl_zs_12))
146  #Integral[ P(z,k=(l+0.5)/chi(z))/(H(z) chi(z)^2) Integral[3/2 H0^2 (1+z) p(zs1) chi(z) (1-chi(z)/chi(zs1)), dzs1] Integral[3/2 H0^2 (1+zl) chi(zl) (1+chi(zl)/chi(zs2)), dzs2], dz]
147  cl/=np.sum(p_zs2*dzs2)*np.sum(p_zs1*dzs1)
148  f=l*(l+1.)/(l+0.5)**2 #correction from Kilbinger+ 2017
149  cl*=f**2
150  #cl*=2./np.pi #comparison with CAMB requires this.
151  return l,cl
152 
153 
def cl_z(self, z=[], l=np.arange(3000)+1, pk_params=None, cosmo_h=None, cosmo=None, pk_func=None)
Definition: cl_cmblx_bm.py:99
def Rho_crit(self, cosmo_h=None)
Definition: cl_cmblx_bm.py:33
static T max(const std::vector< T > &data)
Definition: core_app.cpp:61
def sigma_crit(self, zl=[], zs=[], cosmo_h=None)
Definition: cl_cmblx_bm.py:55
def cl_cmblx_bm.Power_Spectra.Rho_crit (   self,
  cosmo_h = None 
)

Definition at line 33 of file cl_cmblx_bm.py.

References cl_cmbl_bm.Power_Spectra.cosmo_h, and cl_cmblx_bm.Power_Spectra.cosmo_h.

Referenced by cl_cmblx_bm.Power_Spectra.g_kappa_cl(), cl_cmblx_bm.Power_Spectra.kappa_cl(), and cl_cmblx_bm.Power_Spectra.sigma_crit().

33  def Rho_crit(self,cosmo_h=None):
34  if not cosmo_h:
35  cosmo_h=self.cosmo_h
36  G2=G.to(u.Mpc/u.Msun*u.km**2/u.second**2)
37  rc=3*self.cosmo_h.H0**2/(8*np.pi*G2)
38  rc=rc.to(u.Msun/u.pc**2/u.Mpc)# unit of Msun/pc^2/mpc
39  return rc
40 
def Rho_crit(self, cosmo_h=None)
Definition: cl_cmblx_bm.py:33
def cl_cmblx_bm.Power_Spectra.sigma_crit (   self,
  zl = [],
  zs = [],
  cosmo_h = None 
)

Definition at line 55 of file cl_cmblx_bm.py.

References cl_cmbl_bm.Power_Spectra.cosmo_h, cl_cmblx_bm.Power_Spectra.cosmo_h, and cl_cmblx_bm.Power_Spectra.Rho_crit().

Referenced by cl_cmblx_bm.Power_Spectra.g_kappa_cl(), and cl_cmblx_bm.Power_Spectra.kappa_cl().

55  def sigma_crit(self,zl=[],zs=[],cosmo_h=None):
56  if not cosmo_h:
57  cosmo_h=self.cosmo_h
58  ds=cosmo_h.comoving_transverse_distance(zs)
59  dl=cosmo_h.comoving_transverse_distance(zl)
60  ddls=1-np.multiply.outer(1./ds,dl)#(ds-dl)/ds
61  w=(3./2.)*((cosmo_h.H0/c)**2)*(1+zl)*dl/self.Rho_crit(cosmo_h)
62  sigma_c=1./(ddls*w)
63  x=ddls<=0 #zs<zl
64  sigma_c[x]=np.inf
65  return sigma_c
66 
def Rho_crit(self, cosmo_h=None)
Definition: cl_cmblx_bm.py:33
def sigma_crit(self, zl=[], zs=[], cosmo_h=None)
Definition: cl_cmblx_bm.py:55

Member Data Documentation

cl_cmblx_bm.Power_Spectra.cosmo

Definition at line 26 of file cl_cmblx_bm.py.

Referenced by cl_cmblx_bm.Power_Spectra.DZ_int().

cl_cmblx_bm.Power_Spectra.cosmo_params

Definition at line 24 of file cl_cmblx_bm.py.

Referenced by cl_cmblx_bm.Power_Spectra.ccl_pk_bbks().

cl_cmblx_bm.Power_Spectra.pk_params

Definition at line 25 of file cl_cmblx_bm.py.

Referenced by cl_cmblx_bm.Power_Spectra.ccl_pk_bbks().


The documentation for this class was generated from the following file: