PulseCore

Chapter 6 · Section 6

The Reading Cycle and How Fast a Disk Turns

The BPT law

BPT Part 3.14 states the Disk Turn Rate:

Ω_d = √(Δ_v / 2) · H_f / (√2 · λ⟲)

"How fast a galaxy's disk turns, set by when it formed": Ω_d "the disk's angular speed at twice its scale length", Δ_v "the density its clump collapsed to, over the universe's mean, about 200", H_f "the expansion rate when the clump formed", λ⟲ "its spin parameter, about 0.035". The derivation is given in prose: a clump collapsed to about two hundred times the mean density turns at its edge at Ω = √(G·M/R³) = √(Δ/2)·H, and the disk settled inside at R_d = λ⟲·R/√2 on a flat rotation curve turns faster at twice its scale length by R/(2R_d). "Ω_d ≈ 202·H_f ... A disk turns as often as its universe gives it, whatever the universe's size: with H = 2/(3t), Ω_d·t_f ≈ 135, about 21 turns in the first doubling of its age after it forms. Inside a disk each star turns at its own rate on the flat curve, Ω(r) = Ω_d·(2R_d/r), faster within, so the disk shears round its well, while the arms' pattern turns as one (Spiral Arms)." The book then gives the game's reason: "The game cannot read this turning from its field, whose cells are far coarser than any disk: measured there, at level 133, the largest disk turned a thirtieth of a turn in its whole life. So it turns each galaxy by this law, from the moment its stars first gathered: each star on its own orbit, and the young stars of the arms with their pattern."

BPT does not state the reading cadence, the per-frame clamp, or the reduced turning of ellipticals and irregulars; they are game methods.

The established physics

  • A collapsed clump's mean density is about 178 times the background in spherical collapse (Gunn & Gott 1972) and 200 as simulations count it (Navarro, Frenk & White 1996, as BPT cites it), so an orbit at its edge turns at √(G·M/R³) = √(Δ/2)·H.
  • In a matter-dominated universe H = 2/(3t) (standard Friedmann result).
  • Disks settle at R_d = λ·R/√2 (Mo, Mao & White 1998) on flat rotation curves (Rubin & Ford 1970), so at 2·R_d the disk turns faster than the clump's edge by R/(2R_d) = 1/(√2·λ).
  • Differential rotation: on a flat curve each star turns at Ω ∝ 1/r and the disk shears (Binney & Tremaine 2008, ch. 6); a long-lived arm pattern turns as one (Lin & Shu 1964, On the spiral structure of disk galaxies).

The game's math

The cadence. updateGalaxies() runs when pulseCounter % 8 === 0 (app.js:816). Each run reads every galaxy once (app.js:3105).

The turn rate (diskTurnRate(w) app.js:2738–2742). t is the flips since the Physical Nova (physStart); the first time a well is put on the drawn list (a galaxy with lit stars), t is kept as t_f = w.galSince. Then:

Ω_d = √(200/2) · (2 / (3 · max(0.5, t_f))) / (√2 · 0.035)
    = 10 · H_f / 0.04950 ≈ 134.7 / t_f        radians a flip

Example: a galaxy whose stars first gathered 100 flips after the Physical Nova turns at 1.35 radians a flip at twice its scale length, one turn in 4.7 flips. One whose stars gathered at 1000 flips turns at 0.135, one turn in 47 flips.

Each star's rate (setGalaxies() scene3d.js:524–525), ρ its radius in cells:

Ω(ρ) = min(4·Ω_d, Ω_d · (max(ρ, 0.5·R_d) / (2·R_d))^(−γ)) · s₀      γ = 1 (flat)
s₀ = 1 for a disk, 0.5 for an irregular, 0.2 for an elliptical or spheroidal

This is the book's Ω(r) = Ω_d·(2R_d/r). Inside half a scale length the disk turns as a solid body. On a flat curve the solid core turns at (0.5/2)^−1 = 4·Ω_d, so the min(4·Ω_d, …) never binds while γ = 1.

Each frame (placeGalaxies() scene3d.js:628–639):

dt_ms = min(100, ms since the last frame)
running = a physics step within max(1500, 3·stepGap) ms
flips = running ? dt_ms · dtNow / max(16, stepGap) : 0
turn(ω) = clamp(ω · flips, −0.15, 0.15)            radians this frame

An arm point turns with the galaxy's pattern angle, advanced by turn(sense·Ω_d) (×0.2 for ellipticals and spheroidals, which have no arm points, so that factor has no effect). Every other point advances its own angle by turn(sense·Ω(ρ)).

The other literals in the reading (updateGalaxies() app.js:3099–3111), whose laws belong to the stars and wells chapters:

field = 0 if the life share ≥ 0.75/11.0 (reionization by 0.75 Gyr of an 11.0 Gyr life), else 1
ESC   = √(2·(1 + ln 10))                 escape speed over circular speed at a tenth of the halo's reach
β_esc = ESC · v_c / 299,792.458 km/s
hot   = min(t_cool, 10⁹ yr × 3.15576 × 10⁷ s/yr) / LIFE_S · physLife     flips
a     = max(10⁻⁶, expansionA())

In the game

This is the motion the player watches. Every galaxy turns in its own sense, the sense its bodies' angular momentum gave it, and each star on its own orbit: the inner stars lap the outer ones, so the old stars of the disk stream through the arms while the young arm stars ride the arms' pattern and the arms keep their shape (scene3d.js:518–523). Ellipticals and dwarf spheroidals barely turn (a fifth of the rate) and irregulars turn at half, so the eye can tell a swarm from a disk by its motion.

The turning follows when each galaxy's stars first gathered: galaxies that lit early, soon after the big bang, spin fast, and galaxies that light late in the life turn slowly, about 135 radians divided by their age at first light in flips. The galaxies turn at the physics' own pace: the Speed menu ("How fast pulses run": slider pace, paced, or max) and, at slider pace, the Pace slider change how many flips pass each second, and the galaxies turn faster or slower with them; Stop ("Pause the universe") halts them, since no flips pass while the physics is not stepping (scene3d.js:630). When the universe returns to the Source the turning ends with the scene's fade.

The readings that feed the picture come every four Pulses, so a galaxy's type, arms, size and place in the list change in steps at that rhythm, while its turning and its well's motion are smooth from frame to frame.

The scale model

The turning is not simulated. The comment at app.js:2733–2737 (2026-10-29) records that, read from the field, "the largest disk turned a thirtieth of a turn in its whole life". The law gives the real turn count: a disk turns as often as its universe gives it, Ω_d·t_f ≈ 135, about 21 turns in the first doubling of its age. Because Ω_d is proportional to 1/t_f, the turn count depends only on a ratio of times, so it is the same counted in flips as in years: the drawn disk turns as many times in its drawn life as the real one does. The drawn star's orbit stands for the orbits of the stars in its kind; their radii are the enlarged drawn radii of Part 6.5.

Where the game and the theory differ

  • The per-frame clamp binds often. At one flip a frame, turn = Ω_d, which reaches the 0.15 radian clamp for any galaxy with t_f below 134.7 / 0.15 ≈ 900 flips, and its inner stars, at up to 4·Ω_d, below 3600 flips. In those galaxies the drawn turning is 0.15 radians a frame, not the law's rate, and the inner and outer stars turn at the same clamped rate, so the shear BPT describes is not shown.
  • BPT turns every disk by the Disk Turn Rate. The game turns ellipticals and spheroidals at a fifth of it and irregulars at half, with no source; BPT says an elliptical's stars "orbit every way at once rather than in a disk" and gives no rate.
  • The reionization share 0.75/11.0 is the same value heat.js exports as REION_FRACTION (heat.js:38), written here a second time as a literal.

Fixed numbers

Number Where What it is Kind
8 app.js:816 galaxies read every 8 steps of pulseCounter METHOD (reading cadence; cost)
200 app.js:2741 Δ_v, collapsed density over the mean PHYSICS (Navarro, Frenk & White 1996; BPT Part 3.14)
2 app.js:2741 √(Δ_v/2) PHYSICS (Ω at the clump's edge)
2/3 app.js:2741 H = 2/(3t), matter era PHYSICS (Friedmann, matter dominated)
0.5 app.js:2741 least t_f, flips METHOD (avoids dividing by zero at the Physical Nova)
√2, 0.035 app.js:2741 R/(2R_d) = 1/(√2·λ) PHYSICS (Mo, Mao & White 1998; Bullock et al. 2001)
1 app.js:3112 γ, a flat rotation curve PHYSICS (Rubin & Ford 1970)
2 scene3d.js:524 rates referred to 2·R_d BPT (Part 3.14, Disk Turn Rate)
0.5 scene3d.js:525 solid-body core inside 0.5·R_d METHOD (keeps Ω finite at the center)
4 scene3d.js:525 greatest star rate, 4·Ω_d (never binds at γ = 1) METHOD (a guard)
0.2 scene3d.js:524 an elliptical's stars turn at a fifth DISPLAY (no source; motion shown only)
0.5 scene3d.js:524 an irregular's stars turn at half DISPLAY (no source; motion shown only)
0.2 scene3d.js:633 an elliptical's arm pattern at a fifth (no arm points: no effect) DISPLAY
100 scene3d.js:629 longest frame counted, ms METHOD (a stalled tab does not jump)
1500, 3 scene3d.js:630 physics counted as running within max(1500 ms, 3 steps) METHOD
16, 50 scene3d.js:630 least step gap, ms; step gap before one is measured METHOD
0.15 scene3d.js:631 greatest turn a frame, radians CAP
0.75/11.0 app.js:3099 reionization as a share of the life PHYSICS (z ≈ 7 by 0.75 Gyr; heat.js:38)
2, 10 app.js:3104 ESC = √(2(1 + ln 10)): escape speed at a tenth of the halo's reach BPT (Part 3.12, Halo Escape Speed)
299792.458 app.js:3110 light speed, km/s PHYSICS (exact, SI)
1e9 app.js:3110 a fountain's fall-back time, years PHYSICS (Oppenheimer et al. 2010, as the comment cites it)
3.15576e7 app.js:3110 seconds in a Julian year PHYSICS (exact)
1e-6 app.js:3104 least scale factor METHOD

Measured

Comment at app.js:2733–2737 (2026-10-29): "measured at level 133: the largest disk turned a thirtieth of a turn in its whole life", the reason the turning is set by the law.