SIMPLE DOCUMENTATION FOR USING CMBFAST

INTRODUCTION

There are about 8 - 10 crucial parameters that play a role in determining what the CMB power spectrum should look like for inflationary models. With data from BOOMERANG and other experiments, it is possible to constrain many of these parameters so as to eliminate models which are incompatible with the data. These parameters are not independent of each other, thus we look for the most likely region in "parameter space" that satisfies observations.

This software will allow you to create a suite of models with different parameters (such as Hubble constant, baryon fraction, etc.) to study how changing your parameter space effects the CMB spectrum. As more data continue to arrive from increasingly sensitive instruments (the MAP satellite is expected to be launched by NASA in Spring 2001) we will be able to eliminate models whose spectra do not fit the observations, and thus hopefully get a handle on what the actual values of these cosmological parameters really are.

CMBFAST has become the "industry standard" for computing CMB power spectra, polarization, and transfer functions. It uses a method based on integration over the sources along the photon past light cone, in which the temperature anisotropy is written as a time integral over the product of a geometrical term and a source term. This method allows for significantly faster computation time than previous methods. We have compiled it in a user-friendly package, and distribute it with permission of the authors, Uros Seljak and Matias Zaldarriaga. If you use it in any educational research, please be sure to reference the authors.

The program is run interactively in a DOS window. The user is prompted for each input parameter, and the output is an ASCII file consisting of four columns of real numbers. The first column is the "l" value; the second is the normalized "Cl" value. The third and fourth columns are transfer functions, and can be deleted if you only want the temperature anisotropy power spectrum. (See our on-line article, "Small Scale Anisotropies: The Final Frontier".)

For more extensive documentation, or to contact the authors, we refer you to the CMBFAST webpage, http://www.sns.ias.edu/~matiasz/CMBFAST/cmbfast.html .

This document is written specifically for physics students and educators. For an extensive treatment of the implications of all the cosmological parameters on the CMB power spectrum, see Wayne Hu's PhD thesis at http://www.sns.ias.edu/~whu/thesis/thesispage.html.

The original codes - main program and all the subroutines in Fortran - can be downloaded from the CMBFAST web site http://www.sns.ias.edu/~matiasz/CMBFAST/cmbfast.html.
 
 

1) CMB (0), transfer functions (1) or both (2) :

Enter 0 if you only wish to compute the CMB power spectrum (this is the most common usage of this software, by far!); enter 1 to compute the transfer function only; enter 2 to compute both the power spectrum and the transfer function. (If you just want to compute the power spectrum, you can skip the next explanation and go directly to prompt 2).

The basis for the matter transfer function is that, after multiplying by some factors of k and normalization constants, it gives the power spectrum of the matter in the universe. This matter power spectrum is the 3-dimensional analogy of the 2-dimensional CMB spectrum. In practice, the distribution of matter in the universe is found by mapping the position and redshift of galaxies (see any reference to the major redshift surveys that have been done in the last decade) and computing the power spectrum from that map.

2) Value of lmax, ketamax (e.g., 1500 3000)

Remember to be consistent with the file in the flat case.

What this means is that you must input here the same values that you used to compute the spherical Bessel functions. l is the order number and keta is the wavenumber.

If you entered 1 or 2 at the first step, then after you input your values of lmax and ketamax, the program will prompt you to:

2a) Enter tf kmax (h/Mpc), # of k per log. int. (5,5).

You enter two numbers:

The first, kmax is the maximum wavenumber that the code will calculate. The transfer function output file will consist of the computed transfer function for each wavenumber, up to the value of kmax you requested.

a note about k...

The units of k may seem a bit odd: h/Mpc, but here's how these units arise:

Ho itself is expressed in units of km/sec/Mpc, which reduces to the dimension of Time-1. Because of the inherent uncertainty in measuring Ho in the first place, we usually express it as 100h km/sec/Mpc. So, h is itself dimensionless, thus k has the dimension of Distance-1.

In the CMB we are looking at acoustic waves that were frozen in time on the surface of last scattering. The expansion rate of the universe has the effect of stretching these features at all scales. Whether a particular feature of a given size is within the "horizon" depends on the expansion rate of the universe and the local speed of sound, because that is the limiting speed with which a pressure oscillation could travel.

The second number is the number of k's (wavenumbers) that will be calculated per logarithmic interval of k - kind of like a "k-sampling rate". The greater you make this second number, the greater will be the sampling rate of the output transfer function. The more wiggles one expects in the transfer function, the finer sampling one must do so as to accurately graph the function.
 

3) Enter Omega_b, Omega_c, Omega_n , Omega_nu (e.g. .05, .95, 0, 0,)

The "critical density" of the Universe which would precisely balance the energy of expansion and the gravitational energy of all the matter is found to be

Present day densities of various species are expressed in terms of the critical density:

or 

Thus we look for the relative abundances of each species - baryons, dark matter, neutrinos, photons, and even "lambda", and hope that all the fractions add up to unity for a flat universe. (See article: if W < 1 then the universe is open, and if W > 1, then the universe is closed, and will eventually recollagse. CMBFAST requests you to input the following relative densities in terms of each "Omega" (W ).

Omega_b (Wb ) is the contribution from baryons ("normal" matter);

Omega_c (Wc ) is the contribution from cold dark matter;

Omega_v (WL ) is the contribution of the cosmological constant, L , also called the vacuum energy density, to the total energy density of the universe;

Omega_nu (Wn ) is the contribution from massive neutrinos.

Omega_K is for curvature.
 

4) Enter H0, T_cmb, Y_He, N_nu (massive), N_nu (massless)

Ho is the Hubble constant, in units of km/sec/Mpc. Standard lore puts Ho at 50 km/sec/Mpc, but recent data from high redshift supernovae and Cepheid measurements put it closer to 65 - 75 km/sec/Mpc. You can see how changing this parameter effects the acoustic peaks. What do you predict?

TCMB is the current temperature of the microwave background, around 2.726 Kelvin.

YHe is the fraction of helium that existed at the time of last scattering, generally believed to be .23 - .24

N_nu (massive) is the number of massive neutrinos.

N_nu(massless) is the number of massless neutrinos.

If you enter 0 for Omega_nu above, then N_nu must also be zero. If you entered a non-zero value, then you will have to also input nnur and nnunr.

nnur = number of relativistic neutrinos

nnunr = number of non-relativistic neutrinos
 

5) Enter 0 for no reionization

Enter 1 for specified optical depth to lss (xe = 1)

Enter 2 for specified redshift and xe

If you wish to see a spectrum in the case that the universe never re-ionized after recombination, enter 0 here.

Re-ionization of the neutral hydrogen should have the effect of damping out the higher order fluctuations in the power spectrum. The most intuitive way to express the re-ionization of the universe is in terms of the redshift at which you believe it became apparent, and the fraction of neutral hydrogen that should be ionized - this is option 2.

The concept of "optical depth" has to do with the density of matter ("n", the number of absorbers and scatterers) for the cross section of a given process ("s ") and a given path length "l". It is a rather messy concept, to which we refer you to the explanation in any good cosmology text.

Recommendation: To model re-ionization, select choice 2, to specify redshift and percent ionization.
 

6) Enter 0 for scalar modes alone, 1 for tensor + scalar, or 2 for tensors alone.

You only need tensor modes if you are going to play with polarization, not if you are only modeling temperature spectra, so choose option 0.
 

7) Enter number and values of scalar spectral index n(1,1)

The most widely held belief is that the CMB spectrum most closely follows a "flat" power law, n = 1.
That was the "Harrison-Zeldovich" spectrum of about a decade ago.  Putting n other than 1 gives a "tilt" to the spectrum.
More recent experiments constrain n so that 0.86 < n < 1.16 ,   while the best-fit to the BOOMERANG results has n = .95.
Try various values of this spectral tilt and see how your power spectrum changes!
 

8) Enter outpout filename for SCALAR cl

Type in any valid file name that your system can handle to accept the output of CMBFAST.
 

9) Enter initial conditions

1 = Isentropic (adiabatic)

2 = Isocurvature CDM

3 = Isocurvature baryon

4 = Isocurvature seed conditions

The best bet here is to enter 1 for adiabatic initial conditions. See the literature for detailed explanations!
 

10) Enter input filename for jl

Enter the name of the data file that contains the spherical Bessel functions - suchas jbes.dat. If you are computing an open universe model, you will also need to enter the name of the file that contains your ultra spherical Bessel functions, ubes.dat. You should have created these using jlgen and or ulgen.

Now you just sit back and wait a minute or two while the software crunches away! When it is finished, it will tell you so, and give you an estimate of the best likelihood fit to the COBE normalized curve.

You are ready to graph your output using Excel or Grapher, or your favorite graphing program! A plot in Excel would look something like this: