The 3D version of this simulator represents each account as a discrete node on a small-world graph and steps every account's state one at a time. This 2D counterpart is a genuinely different, independently-computed model: a continuous reaction-diffusion SEIZ field on a spatial population grid, driven by its own finite-difference PDE solver, plus a separate discrete botnet overlay:
∂S/∂t = -β·S·I_o
∂E/∂t = β·S·I_o - σ·E
∂I_o/∂t = σ·p·E - γ·I_o + D·∇²I_o
∂Z/∂t = σ·(1-p)·E + γ·I_o
Each grid cell holds real local fractions of Susceptible / Exposed / organic Sharer (I_o) / skeptic-or-stopped (Z) accounts, always summing to 1 per cell (verified numerically to conserve exactly, to 1 part in 1015, across thousands of simulation steps). Susceptible accounts become exposed at a rate set by local contact with sharers (β); exposed accounts decide after an average reaction time 1/σ, splitting into sharers (probability p, the organic-share slider) or skeptics; active sharers physically diffuse the "sharing" field outward through the population (the D·∇²I_o term) — a standard spatial-epidemic mechanism representing word-of-mouth reach through real social/geographic proximity, and the direct 2D analogue of following graph edges one hop at a time in the 3D version.
Bot accounts are modeled separately, as a discrete point process layered on top of the continuous field — because automated amplifiers don't behave like organic accounts. Each active bot starts a countdown almost immediately once the claim is seeded (an automated keyword/hashtag scan, not a wait for the rumor to physically diffuse to it) and fires on a near-fixed timer:
botFireTime = seedTime + scanDelay + baseDelay + jitter·(rand−0.5)
scanDelay ~ Uniform(0.05 s, 0.45 s) (automated-detection latency)
on fire: inject exposure into 14–23 random distant cells (pre-built follower list, non-local)
The live "bot timing synchrony" readout is the standard deviation of every fired bot's timestamp — exactly the same statistic the 3D version computes, but here it is built from an entirely separate simulation kernel. It was numerically verified against the closed-form variance of a uniform distribution (σ = jitter/√12): at jitter = 80/500/1500 ms the model reproduces σ ≈ 23/144/433 ms respectively, within 1% of the theoretical values.
- Bot accounts — fraction of a fixed 40-bot pool that is active; each injected bot fires independently once its own countdown elapses.
- Bot coordination — jitter around the bots' shared reaction timer; 0 ms means every active bot fires almost simultaneously (tight σ, easily flagged), while a wide jitter spreads their timestamps out to look more like independent organic accounts.
- Organic share probability — the branching probability p that an exposed account becomes a sharer instead of a skeptic; it also sets how far and how fast the diffusive field spreads.
Where this deliberately differs from the 3D model: there is no explicit graph here — "reach" is a physically diffusing continuum field rather than a walk over discrete edges, so the outbreak visibly spreads outward from the seed point as a spatial wave instead of jumping across a small-world shortcut. Bots inject into cells chosen uniformly at random across the whole grid (their "pre-built follower list"), which is intentionally non-local — the same design idea as the 3D version's boosted reach, expressed here as a long-range jump instead of a wide adjacency list.