A map that follows the matter
Compress matter along one direction and leave the other two uniform. The coordinate labels its uniform reference position; is its later comoving position. At the actual start, a particle is already at . The unperturbed label and the displaced initial position are different arrays.
In the matter-only background the Zel’dovich growth factor is . Choose a sinusoidal displacement with amplitude , placing the strongest compression at the box centre. The plus sign below includes this phase choice.
Reading: Zel’dovich (1970), Gravitational instability: an approximate theory for large density perturbations · Original finite-mesh calculations and independent small-wave Python replay
Measure how much an interval shrinks
Neighbouring layers separated by later span approximately , where . This local stretching factor is a Jacobian. In three dimensions it becomes a determinant describing a volume ratio.
Before crossing, is positive everywhere. Compressing the same reference mass into one-quarter of its former length gives four times the mean density. Transverse stretching is unchanged in this planar example, leaving just this length factor.
Reading: Zel’dovich (1970), Gravitational instability: an approximate theory for large density perturbations
Calculate the first fold
Set . At the central label , the cosine is minus one, so . At , this gives and a displacement-reference density about times the mean.
The first zero occurs at . The map first becomes flat there, then develops a backwards-folding interval. The left panel follows this reference map. The other panel separately examines particle velocities after crossing.
A continuous, initially cold model develops a density singularity where . The local volume ratio approaches zero, without adding mass. A finite initial velocity spread or averaging over a finite volume broadens the peak.
Reading: Zel’dovich (1970), Gravitational instability: an approximate theory for large density perturbations · Original finite-mesh calculations and independent small-wave Python replay
Tracing a position backwards gives three answers
Continue the same reference to . A horizontal line through the central position can intersect the folded curve three times. One now has three values. A label still gives a definite position, but the inverse lookup is no longer unique.
Those layers also have different velocities. Matter starting on the left can move right, a layer from the right can move left, and symmetry keeps the middle layer at the centre. Position superposes them; a position–velocity plot separates the streams.
The middle interval has negative , marking a reversed ordering of labels. It has no negative mass. Find every branch at a location and add contributions using the absolute size of each local volume.
Reading: Zel’dovich (1970), Gravitational instability: an approximate theory for large density perturbations · Original finite-mesh calculations and independent small-wave Python replay
Let gravity respond after the fold
An extended displacement map still illustrates overlapping streams. Following their later motion requires gravity to respond to the new density. The streams continue attracting one another and changing velocity. Our independent periodic sheet reference calculates force from sorted mass; the mesh model distributes mass among finite nodes.
The post-crossing comparison uses and the same sinusoidal initial condition for a three-dimensional PM plane with cells per axis and an unsoftened -sheet reference. Match their cumulative mass from left to right and average the position differences to obtain the mass-quantile distance. Refining both particles and mesh to per axis reduces it from about to . This changes mass sampling and force resolution together.
One position can no longer carry a single velocity. Particle labels and positive mass let us follow several streams onward. The next chapter examines how a finite mesh turns those positions into a gravitational force.
Reading: Springel (2005), The cosmological simulation code GADGET-2, astro-ph/0505010v1 · Original finite-mesh calculations and independent small-wave Python replay