*** R.m.s. mass fluctuation, sigma(R) *** August 23, 2008: E.Komatsu An r.m.s. mass fluctuation, sigma(R), where R is a top-hat smoothing scale in units of h^-1 Mpc (NOTE h^-1!) is sigma^2(R) = int_0^infinity dlnk k^3 P(k)/(2pi^2) W^2(kR) where P(k) is the matter power spectrum in units of h^3 Mpc^-3 (NOTE h^3!), and W(kR) is a window function given by W(x) = (3/x)*(sin(x)/x^2-cos(x)/x) Here we provide a simple subroutine, sigma.f90, for computing the r.m.s. mass fluctuation, sigma(R), as well as its logarithmic derivative, dln(sigma)/dlnR. R is always measured in units of h^-1 Mpc. To compute sigma(R), it is necessary to use the input linear power spectrum. We provide the sample data, "wmap5baosn_max_likelihood_matterpower.dat," which was generated using CAMB code for the maximum likelihood parameters given in Table I of Komatsu et al.(2008) [WMAP 5-year interpretation paper] with "WMAP5+BAO+SN". The input file for CAMB is also provided (wmap5baosn_max_likelihood_params.ini). NOTE THAT THIS POWER SPECTRUM IS COMPUTED AT Z=0. Another power spectrum, evolved back to z=30, is provided as "wmap5baosn_max_likelihood_matterpower_at_z=30.dat". (1) Put "USE linearpk" at the beginning of the program (2) Put "USE sigma" at the beginning of the program (3) CALL open_linearpk(filename,n) where "filename" contains the name of power spectrum file (character), and n is the number of lines in the file (integer) (4) CALL compute_sigma2 (5a) To compute ln(sigma^2), use a single-precision function CHEBEV(lnR1,lnR2,c,ndim,lnRh), where lnR1, lnR2, c and ndim have been pre-computed already by the step (3). The only argument you need to enter is the logarithm of the scale at which you want to compute ln(sigma^2), lnRh, which is in single precision. Note again that Rh is in units of h^-1 Mpc! (5b) To compute dln(sigma^2)/dlnRh, use a single-precision function CHEBEV(lnR1,lnR2,cder,ndim,lnRh), i.e., replace "c" in (4a) with "cder". (6a) To convert ln(sigma^2) to sigma, use exp(0.5*ln(sigma^2)). (6b) To convert dln(sigma^2)/dlnRh to dlnsigma/dlnRh, use 0.5*dln(sigma^2)/dlnRh. - To compile and use the sample programs (given below), edit Makefile and simply "./make" - It will generate executables called "sample_sigma," "sample_linearpk," "compute_sigma," "compute_sigma2," and "evolve_linearpk" ========================================================================= A simple program to use "sigma.f90" (also included as "sample_sigma.f90" in this directory): USE linearpk USE sigma REAL :: chebev REAL :: lnsigma2,lnRh,Rh,dlnsigma2dlnRh character(len=128) :: filename integer :: n filename='wmap5baosn_max_likelihood_matterpower.dat' n=896 ! # of lines in the file CALL open_linearpk(filename,n) CALL compute_sigma2 CALL close_linearpk Rh=8. ! h^-1 Mpc lnRh = alog(Rh) if(lnRh>lnR2.or.lnRh