PulseCore

Chapter 3 · Section 11

The Data Around a Well: stepWells()

The BPT law

BPT Part 3.14 gives the Capture of the Data, "how fast a well takes in the collisionless Data Matter round it": Ṁ◍ = 16 · π · G² · M_w² · ρ◍ / (c² · v), with ρ◍ the density of Data Matter round the well and v its halo's speed. The book's note: it is "the capture cross-section of a black hole for slow particles, 16π(GM/c²)²(c/v)²," and "against the gas, which can lose its spin, it is millions of times slower, which is why the wells we weigh, data and all, come to about a thousandth of their stars." BPT's reading of the game (Part 3.14) splits the two layers: "A Proto Well, in the data layer, takes in the data that reaches it; from the physical layer a well takes in Data Matter by Capture of the Data, and the data streaming past it goes home through it uncounted in its mass." BPT Part 2.9 (the Data–Matter Equivalence) has the data turn with the disks, which is why the heaviest clusters of matter turn the data too, and BPT Part 3.10 (The Return to the Source) has the data a well draws in stream on home.

The established physics

A collisionless gas cannot shed its angular momentum. It reaches a horizon only on orbits that pass inside 4GM/(c·v), which gives the capture rate above (Shapiro & Teukolsky 1983, as the code names it). The rotation the wells give the data is the Kepler rate, Ω = √(GM/k³), plus a frame-dragging term (gravity.js, the gravity chapter).

The game's math

stepWells() app.js:818, every step of the universe:

  1. Which wells act.

    • Every physical source (sites as swirlOnly).
    • Every Proto Well.
    • From the Physical Nova on, the 24 heaviest bodies of 16 cells or more, as swirlOnly (they turn the data and swallow none).

    The data layer's accumulator map is cleared past 40,000 keys.

  2. Reach by nearest neighbor (8.2). With more than 24 non-swirl wells, each well's reach is half the distance to its nearest neighbor, where the next well's pull takes over: reach = max(2, ⌈d_nn/2⌉). The nearest neighbor is found through bins of side S = max(2, ⌈2√(rows·cols/n)⌉), about two wells' spacing, searched outward ring by ring until the next ring cannot hold a nearer well, (ring − 1)·S > best (2026-10-29: it compared every pair each step). With 24 or fewer, the reach is the default. WellDynamics.step() gravity.js:46–49 then takes each reach as the smaller of it and min(24, ⌊min(rows, cols)/4⌋) cells, the reach default of the class, since new WellDynamics({ G: 0 }) app.js:2041 passes none.
  3. Swirl and fall, in WellDynamics.step() (gravity chapter), returning the cells each well absorbed.
  4. What is kept.

    • Before the Physical Nova, a Proto Well takes in the data that reaches it: mass += n.
    • From the Physical Nova on, a physical well's absorbed data is not added. It is counted in ledger.dataThrough, streaming home.
    • Each non-site physical well instead takes in Data Matter at the capture rate:
    ρ◍ = dark[block] / B²                Data Matter per cell in the well's mesh block
    v  = max(1e-6, w._vHalo || 10⁻³·c)    the halo's speed (galaxies chapter)
    ΔM = 16π·(G·gk)²·M²·ρ◍ / (c²·v)        per step;  gk = a⁻³ (expansion)

    The Data Matter so captured is counted in ledger.dataCaptured.

In the game

Between Harmonic 2 and Harmonic 3 this is the visible life of the Proto Wells: the data cells round each one wheel about it and fall in. With the drawer's color option on, "At Start the Pulsecore's data is painted as a colour wheel round its centre … so the spin, the flow and the wells' swirl show as moving colour" (index.php:214), and the player can watch each Proto Well's basin turn into a little vortex of color. The marks grow as their mass grows: the scene is told every 8 steps that a well has fed (app.js:867). The HUD Void line adds "· N into wells" once data has fallen in (ledger.funnel, app.js:2149). After the big bang the same swirl runs under the stars, round every well, site and heavy cluster; the data that falls into a physical well streams through it and is not added to its mass, and only the slow capture of Data Matter adds to it.

The scale model

The data layer is drawn cells. A drawn Proto Well's mass in cells grows by the drawn data it takes in. Data Matter is the drawn field's dark mass per block (darkField(), the dark-sector chapter). The capture uses the game's G, 𝒞→ and drawn masses, so it is the law at the model's scale.

Where the game and the theory differ

  • In the physics the Kepler turn of a well reaches as far as its pull, falling off as √(GM/k³) with no edge. In the game a well turns and draws in the data only within its reach, which is never more than 24 cells or a quarter of the field (gravity.js:33, 46), whatever its mass.
  • BPT Part 2.9 has every particle a swarm of data, so all matter turns the data. The game lets the 24 heaviest bodies of 16 cells or more do so (app.js:829); lighter bodies and the rest turn none.

Fixed numbers

Number Where What it is Kind
16 app.js:829 least body mass that turns the data CAP (a floor on which bodies act)
24 app.js:829 heaviest bodies that turn the data CAP (a fixed count)
40,000 app.js:831 accumulator keys before clearing METHOD (memory bound; the fractional turns restart)
24 app.js:838 wells before the nearest-neighbor reach is used METHOD (below it the default reach is cheap)
2 app.js:840 least bin side METHOD
2 (in 2√(area/n)) app.js:840 bins about two spacings wide METHOD
½ app.js:845 reach = ⌈d/2⌉, halfway to the nearest well METHOD (halfway is where the next well's pull takes over)
2 app.js:845 least reach, in cells CAP (a floor on reach)
24 WellDynamics gravity.js:33 default reach, in cells CAP (caps every well's data reach; set by no law)
1/4 gravity.js:46 reach ≤ a quarter of the field CAP (geometry floor on the torus, still a fixed cut)
16π app.js:863 capture coefficient PHYSICS (Shapiro & Teukolsky 1983; BPT Part 3.14)
1e-6, 10⁻³ app.js:862 halo speed floor and default, ×c METHOD (guards when no galaxy has been read)
8 app.js:867 steps between scene updates DISPLAY

Measured

  • "400 wells reaching 64 rings each was most of a flip" (comment app.js:834–836, 8.2).
  • "by the end of a level 25 life the wells weighed two thirds of their stars, against a thousandth in the sky, Mullaney et al. 2012" (comment app.js:853–854, 2026-10-28). This was why absorbed data stopped being added.