The code consists of several different FORTRAN programs:

- PM_to_ASCII.f
- PMhalos.f
- PMmain.f
- PMmodelCHDM.f
- PMmodels.f
- PMpower.f
- PMselect.f
- PMstartCDM.f
- PMstartCHDM.f

A Makefile is provided to allow easy compilation of all of the programs. You should edit the Makefile and put in your preferred compilation flags for:

- Optimization. On both our Sun machines running Solaris, and our HP running HPUNIX, we use -O3.
- The routine
**PMmodels.f**should be compiled using double precision for all ``real'' variables and constants. On the Sun, this can be accomplished using the -R8 flag, on the HP with -dbl.

The general scheme for running the code and analyzing results is as follows:

- 1.
- Set initial conditions using
**PMmodels**and**PMstartCDM**. - 2.
- Run the PM code using
**PMmain**. - 3.
- Analyze the results using
**PMpower**, and**PMhalos**.**PM_to_ASCII**will scale your results to ``normal'' units.

More details on each step are provided in subsequent sections.

Some important parameters and variables which are used in the codes,
for which you will either be prompted or may wish to change *before
compilation*. **Please note the last item which may require you to
make a change in the code!**

- AEXPN = expansion parameter ( = 1/(1 +
*z*) ). AEXP0 is the expansion parameter at initial moment. - NROW = number of particles in one dimension ( = 2
^{n}). The total number of particles is equal to NROW^{3}. Particles are stored in direct-access files. Each record of the files contains NROW^{2}particles. - NGRID = size of the computational mesh ( = 2
^{m}). The total number of cells is NGRID^{3}. If you need to change either NROW or NGRID, the only place where you need to make changes is the file**PMparameters.h**. - ASTEP = step in the expansion parameter
*a*. Time integration is done with a constant step in the expansion parameter:*da*= ASTEP. - ISTEP = current integration step
- Nspecies = number of additional species of particles. This is curretly used for the CHDM models. For plain CDM, ODM, or CDM models Nspecies = 0.
- Om0,Oml0,Ocurv = densities of matter, cosmological constant,
and curvature at
*z*= 0 . - hubble = the Hubble constant in units of 100 km/s/Mpc
- NACCES = length of a record of direct-access files with
coordinates and velocities of particles (e.g., PMcrs0.DAT). For some
computers the length of the record is counted in bytes, for some it is
in machine words. If you get errors when running the code that
indicate problems with accessing the data files, multiply NACCES by 4
in file
**PMauxiliary.f**, routine RDTAPE, and in files**PMstart...f**. If the length of the data files is too long (it should be 24`x`*NROW*^{ 3}bytes), divide NACCES by 4.