PulseCore

Chapter 4 · Section 9

Dynamical Friction

The BPT law

BPT does not state this; it is established physics the game adds so that wells sink to the hearts of the clumps they move through (matter.js:359–363). It serves a picture the book does draw. BPT Part 3.14 (Wells per Galaxy) says most of a universe's wells "are the small ones its dying stars leave (Part 2.9), scattered through its galaxies, with one great well at each heart", and its Proto Wells become the sites "where a well will be born" at the heart of each halo. A heavy well moving through a cloud of lighter matter loses its speed to the wake it raises; without that loss a well knocked off center would orbit through its galaxy for ever instead of settling at its heart.

The established physics

Chandrasekhar (1943): a mass moving through a field of lighter bodies is slowed by the wake it raises, a = −4πG²Mρ lnΛ [erf(X) − (2X/√π)e^(−X²)] v/v³, X = v/(√2σ). The error function by Abramowitz & Stegun (1964) formula 7.1.26 (cited at matter.js:370).

The game's math

friction(w, sigma) matter.js:364, added to each well's acceleration at both half-kicks (wellAcc, matter.js:398):

ρ    = rho[block of w] / B²                         matter per cell, matter alone (no Data Matter)
v    = |v_w − v̄_local|                             v̄ from the deposited momentum (sample())
X    = v / (√2·σ)
lnΛ  = max(1, ln(max(1, 2B·v² / (G·M))))           b_max = two blocks
k    = 4π·G²·M·ρ·lnΛ
f    = k·(4/(3√π)) / (√2σ)³                         if X < 10⁻³ (slow: linear drag)
f    = k·[erf(X) − (2X/√π)e^(−X²)] / v³            otherwise
Δv   = −min(1, f) · v_rel

σ is the matter's spread of speeds about its local mean, σ = √(Σ|v − v̄|² / (2n)) over all bodies (matter.js:395–396), also kept as matter.sigma.

In the game

Friction has no readout of its own. The player sees its result: wells settle into the densest places of the matter and stay there, so that by the late life a deep universe "reads as galaxies round their central wells, not a field of dots" (comment at scene3d.js:1469–1470), each galaxy drawn round its well (Chapter 6). The matter's spread of speeds σ, computed for the friction, is also kept as matter.sigma, "the gas's temperature, for star formation" (matter.js:397), which Chapter 5 reads.

The scale model

Exact in form on the drawn field. The drag never exceeds stopping the well against the matter in one call (min(1, f)), a numerical bound.

Where the game and the theory differ

  • Friction is not diluted by the expansion. In Matter.step() the gravitational pull on a well is multiplied by gk = (a₀/a)³, as Matter Dilution asks (Part 4.4), but the friction added to it is not (wellAcc, matter.js:398): its G is the undiluted this.G. So through the life, while a < 1 and gk > 1, the friction is weaker against the pull than the physics would make it, and after the final well, when a > 1, stronger.

Fixed numbers

Number Where What it is Kind
4π matter.js:372 Chandrasekhar's prefactor PHYSICS (Chandrasekhar 1943)
√2, 2/√π, 4/(3√π) matter.js:369, 373 X = v/(√2σ); bracket and its slow limit PHYSICS (Chandrasekhar 1943)
2 matter.js:369 b_max = two blocks in lnΛ METHOD (mesh resolution)
1, 1 matter.js:369 Floors on lnΛ and on its argument METHOD
10⁻³ matter.js:373 X below which the slow limit is used METHOD
1 matter.js:374 Drag never more than stopping in one flip METHOD (stability)
0.3275911, 1.061405429, 1.453152027, 1.421413741, 0.284496736, 0.254829592 matter.js:371 erf approximation coefficients METHOD (Abramowitz & Stegun 7.1.26)
2 matter.js:396 σ² from ⟨ Δv ²⟩/2 in two dimensions PHYSICS (equipartition over two axes)