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

Functions

def st_gs (sigma, dc)
 
def st_b1 (sigma, dc)
 
def duffy_c (m, z)
 
def get_halomod_pk (cp, karr, z, integrate=True, fname_out=None)
 

Variables

dictionary cpar1
 
dictionary cpar2
 
dictionary cpar3
 
bool USE_INT = False
 
int LKHMIN = -4
 
int LKHMAX = 1
 
int NKH = 256
 
int NM = 2048
 
float LM0 = 5.5
 
int LMMIN = 6
 
int LMMAX = 16
 
dictionary params
 
 integrate
 
 fname_out
 

Function Documentation

def halomod_bm.duffy_c (   m,
  z 
)

Definition at line 48 of file halomod_bm.py.

Referenced by get_halomod_pk().

48 def duffy_c(m,z) :
49  return params['DUF_A']*(m/2E12)**params['DUF_B']*(1+z)**params['DUF_C']
50 
def duffy_c(m, z)
Definition: halomod_bm.py:48
def halomod_bm.get_halomod_pk (   cp,
  karr,
  z,
  integrate = True,
  fname_out = None 
)

Definition at line 51 of file halomod_bm.py.

References duffy_c(), st_b1(), and st_gs().

51 def get_halomod_pk(cp,karr,z,integrate=True,fname_out=None) :
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')
55 
56  lmarr=LMMIN+(LMMAX-LMMIN)*(np.arange(NM)+0.5)/NM #log(M*h/M_sum)
57  dlm=(LMMAX-LMMIN)/NM
58  lmarrb=np.zeros(NM+2); lmarrb[0]=lmarr[0]-dlm; lmarrb[1:-1]=lmarr; lmarrb[-1]=lmarr[-1]+dlm
59  marr=10.**lmarr #M (in Msun/h) M_h Ms/h = M Ms
60  marrb=10.**lmarrb #M (in Msun/h) M_h Ms/h = M Ms
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)
69  cM=duffy_c(marr,z)
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
72 
73  #Compute mass function normalization
74  fM0=1-np.sum(fM)*dlm
75  fbM0=1-np.sum(fM*bM)*dlm
76 
77  rvM=(3*marr/(4*np.pi*rhoM*Delta_v))**0.333333333333
78  rsM=rvM/cM
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)
81 
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)
85  f2h0=fbM0
86 
87  #NFW profile
88  def u_nfw(lm,k) :
89  x=k*rsMf(lm) #k*r_s
90  c=cMf(lm)
91  sic,cic=sici(x*(1+c))
92  six,cix=sici(x)
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)
97 
98  return (fsin+fcos-fsic)/fcon
99 
100  def p1h(k) :
101  def integ(lm) :
102  u=u_nfw(lm,k)
103  f1h=f1hf(lm)
104  return u*u*f1h
105  if integrate :
106  return quad(integ,lmarr[0],lmarr[-1])[0]+f1h0*(u_nfw(LM0,k))**2
107  else :
108  return np.sum(integ(lmarr))*dlm+f1h0*(u_nfw(LM0,k))**2
109 
110  def b2h(k) :
111  def integ(lm) :
112  u=u_nfw(lm,k)
113  f2h=f2hf(lm)
114  return u*f2h
115  if integrate :
116  return quad(integ,lmarr[0],lmarr[-1])[0]+f2h0*u_nfw(LM0,k)
117  else :
118  return np.sum(integ(lmarr))*dlm+f2h0*u_nfw(LM0,k)
119 
120 
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
124 
125  p2harr=pklin*b2harr**2
126  ptarr=p1harr+p2harr
127  np.savetxt(fname_out,np.transpose([karr,pklin,p2harr,p1harr,ptarr]))
128  return pklin,pklin*b2harr**2,p1harr,pklin*b2harr**2+p1harr
129 
130 k_arr=10.**(LKHMIN+(LKHMAX-LKHMIN)*(np.arange(NKH)+0.5)/NKH)
def get_halomod_pk(cp, karr, z, integrate=True, fname_out=None)
Definition: halomod_bm.py:51
def st_b1(sigma, dc)
Definition: halomod_bm.py:42
def st_gs(sigma, dc)
Definition: halomod_bm.py:35
def duffy_c(m, z)
Definition: halomod_bm.py:48
def halomod_bm.st_b1 (   sigma,
  dc 
)

Definition at line 42 of file halomod_bm.py.

Referenced by get_halomod_pk().

42 def st_b1(sigma,dc) :
43  nu=dc/sigma
44  anu2=params['ST_a']*nu*nu
45 
46  return 1+(anu2-1+2*params['ST_p']/(1+anu2**params['ST_p']))/params['DELTA_C']
47 
def st_b1(sigma, dc)
Definition: halomod_bm.py:42
def halomod_bm.st_gs (   sigma,
  dc 
)

Definition at line 35 of file halomod_bm.py.

Referenced by get_halomod_pk().

35 def st_gs(sigma,dc) :
36  nu=dc/sigma
37  anu2=params['ST_a']*nu*nu
38  expnu=np.exp(-anu2*0.5)
39 
40  return params['ST_A']*np.sqrt(2*params['ST_a']/np.pi)*(1+(1./anu2)**params['ST_p'])*nu*expnu
41 
def st_gs(sigma, dc)
Definition: halomod_bm.py:35

Variable Documentation

dictionary halomod_bm.cpar1
Initial value:
1 = {'Om_m':0.3,'Om_b':0.05,'Om_nu':0.,
2  'h':0.70,'sig8':0.8,'n':0.96}

Definition at line 9 of file halomod_bm.py.

dictionary halomod_bm.cpar2
Initial value:
1 = {'Om_m':0.272,'Om_b':0.0455,'Om_nu':0.,
2  'h':0.704,'sig8':0.81,'n':0.967}

Definition at line 11 of file halomod_bm.py.

dictionary halomod_bm.cpar3
Initial value:
1 = {'Om_m':0.3175,'Om_b':0.0490,'Om_nu':0.,
2  'h':0.6711,'sig8':0.834,'n':0.9624}

Definition at line 13 of file halomod_bm.py.

halomod_bm.fname_out

Definition at line 133 of file halomod_bm.py.

halomod_bm.integrate

Definition at line 133 of file halomod_bm.py.

Referenced by App_Var< T >::Impl< T >.integration().

int halomod_bm.LKHMAX = 1

Definition at line 19 of file halomod_bm.py.

int halomod_bm.LKHMIN = -4

Definition at line 18 of file halomod_bm.py.

float halomod_bm.LM0 = 5.5

Definition at line 23 of file halomod_bm.py.

int halomod_bm.LMMAX = 16

Definition at line 25 of file halomod_bm.py.

int halomod_bm.LMMIN = 6

Definition at line 24 of file halomod_bm.py.

int halomod_bm.NKH = 256

Definition at line 20 of file halomod_bm.py.

int halomod_bm.NM = 2048

Definition at line 22 of file halomod_bm.py.

Referenced by pwr_spec_k(), pwr_spec_k_init(), and vel_pwr_spec_k().

halomod_bm.USE_INT = False

Definition at line 16 of file halomod_bm.py.