One Ball, 400 Mousetraps: A Tabletop Nuclear Reactor in Ansys Rocky
Space a boxful of mousetraps 17.5 cm apart and about half of them will ever fire. Pack them tighter and the whole box erupts; spread them wider and it sputters out. That number is a tabletop critical mass — the friendliest picture of a nuclear chain reaction anyone has built — and we went looking for it by dropping one ping-pong ball into 400 loaded traps in Ansys Rocky.
The physics: each firing throws two balls, and the reaction lives or dies on where they land
The demonstration is older than most of the people who love it. Fill a box with loaded mousetraps, balance two ping-pong balls on each bail, drop in one extra ball. The first ball snaps a trap; that trap flings its two balls into the air; those land on more traps; seconds later the box is a boiling white cloud. Mid-century atomic-energy outreach films used exactly this to explain fission to people who would never see a reactor, and it survives in classrooms because it lands the essential idea in four seconds: one trigger releases more than one trigger.
What makes it interesting to simulate is that there is no equation to integrate. A chain reaction in a box is not a continuum — no field to mesh, no smooth density to march forward. It is a crowd of discrete bodies bouncing off each other, off the walls, and down onto trigger points scattered across the floor. That is the definition of a discrete-element method problem, and what Ansys Rocky exists to do: carry each ball as its own rigid sphere and resolve every contact it makes, with no averaging anywhere in the model.
Now the mechanism, before any number. Line up dominoes and each topples exactly one more — a chain reaction with its multiplication factor pinned at one by construction, which is why a domino line never runs away and never dies. It just travels. Mousetraps break that tidiness. Each firing throws two balls, which sounds like a guaranteed explosion: two, four, eight, sixteen. But a flung ball is not handed to a trap, it has to find one, and most never do — they land on bare table, bounce twice and stop. The real multiplication factor is two, multiplied by the odds a thrown ball comes down on something loaded.
Those odds are pure geometry, and the two lengths that set them are wildly mismatched. In the Rocky launch calibration a thrown ball covers about 2.9 meters of tabletop before coming to rest — twenty-four launches ranged 2.47 to 3.30 m, arc plus bounces. The target it has to hit is a loaded trap's trigger patch, a circle of 3 centimeters radius. Each ball takes a long, energetic tour of the box and gets only a handful of narrow chances to cash it in — how many depends entirely on how densely the floor was seeded. That is why spacing, and nothing else, is the control knob on this reactor.
Inside the model
The arena is a 0.9 m × 0.9 m floor with 0.5 m walls — shallow, so a ball clearing the rim is gone the way a neutron leaking out of a core is gone. The balls are regulation ping-pong spheres, 40 mm across, with a coefficient of restitution of 0.85 for the bright, long-lived bounce anyone who has dropped one will recognize. Rocky resolves contact between every pair of them and against every wall, on GPU, because in DEM it is the contact count, not the body count, that costs you.
The trap is where the physics is handed across a scale boundary, and the handoff is measured rather than assumed. A firing trap is calibrated in Rocky first: the bail snap throws two balls at roughly 3–5 m/s, elevated 41–59°, sampled around a ring of twelve azimuths so the launch signature is directional, not one lucky shot. A trap counts as triggered when a ball lands inside a 3 cm radius, and then adds its own two balls to the population.
Where the tabletop finds its critical mass
One box is one roll of the dice, so the spacing was swept from tightly packed — 3 cm apart, over a thousand traps on the floor — out to sparse, 20 cm apart and 25 traps, six randomised layouts at every spacing, recording the fraction of traps that ever fire.
That crossover is the whole idea of a chain reaction made visible. Each firing launches about two balls — two “neutrons.” Whether the reaction grows or dies comes down to a single number: how many of those two, on average, land on a fresh trap before hitting a wall or the floor and stopping. Pack the traps densely and that number is comfortably above one, so the population multiplies every generation (k > 1, supercritical). Spread them out and most balls die in the gaps, so each firing fails to reliably replace itself (k < 1, subcritical) and the reaction sputters out. The critical spacing near 18 cm is where k = 1 — the knife-edge between the two.
The shape of that curve is worth more than the number on it. It is not a slope you can trade against; it is a shelf, a knee and a cliff. Between 12 cm and 20 cm — less than the span of a hand — the box goes from firing everything to firing under a third. On the shelf, small changes buy you nothing; past the knee, small changes buy you everything. The useful reading for a decision is therefore not “the threshold is 17.5 cm” but “do not sit near 17.5 cm.” Margin against a cascade is taken in density, out on the flat where the outcome stops caring about luck.
Is it right? The scatter at the threshold is the tell
The fair objection: any set of points that starts high and ends low can be drawn as an S-curve, and a spacing read off a fitted curve is just a number where somebody put a line. What makes 17.5 cm physical?
The answer is the spread of the six random layouts at each spacing, which is why they were run. Out on the dense shelf the six are effectively identical: from 3 cm through 8 cm every layout fires 98 % of the box or better. Randomising where the traps sit changes nothing, because no arrangement can starve a reaction with that many traps inside every throw's reach. At 15 cm the same six spread from 61 % to 94 %. At 20 cm they fly apart entirely — some fizzle under 10 %, one lucky arrangement carries 84 %.
That is a signature, not a fit. A system far from criticality is deterministic; a system near k = 1 is dominated by chance, because the outcome hangs on whether a handful of individual throws happen to connect. Were the S-curve a fitting artifact, the scatter would be roughly uniform along it. Instead the variance is near zero on the supercritical shelf and explodes precisely where the curve crosses 50 % — the behavior reactor physics predicts around criticality, reproduced without being asked for.
The launch physics gets its own check. Across the twenty-four calibration throws every ball landed, and the distance traveled clustered tightly: 2.47 to 3.30 m, median 2.90 m. Reach sets how many traps a throw can possibly find, so a long tail of freak launches would mean the threshold rested on rare events. A tight cluster means it is set by the typical throw.
Nine seconds to fire 399 of 400 traps
Below the critical spacing the reaction does not merely finish — it finishes the way a reactor does. In a dense box, 400 traps at 5 cm, traps fired against time is a textbook growth curve.
The three acts — slow start, exponential middle, saturating tail — are precisely the shape of neutron population in a reactor startup, or of anything that grows on itself against a finite supply. What sets the ramp's steepness is the ball flight and contact Rocky resolves: how far a throw carries, how much energy survives the first bounce, how wide it spreads.
The instructive part is the beginning. Two full seconds in, fewer than twenty traps have fired — under 5 % of the box, and anyone watching would call it a dud. In the next three seconds it fires three-quarters of the box. Exponential growth has no warning phase; the flat part is the warning, and it looks identical to nothing happening. It is also why a subcritical layout and a supercritical one are nearly indistinguishable early on, and why people who manage cascading systems watch the rate of change, not the count.
The end is instructive in a smaller way: one trap out of 400 never fires. In a box that is emphatically supercritical, with balls saturating the floor for seconds, one trigger patch never caught a landing ball. Supercritical is a claim about the average, not a promise about every element — worth remembering whenever a cascade model is used to argue something is guaranteed to propagate.
The real-world connection
Chain reactions and cascading failures are one of the most general patterns in engineering, and they almost always hide the same threshold this box makes obvious: a population of primed elements, a trigger that releases more triggers, and a critical density that separates “fizzles” from “runs away.” It is the mathematics behind reactor criticality, cascading power-grid blackouts, avalanche and rockfall initiation, and the propagation of a fault through any tightly-coupled network. Anyone who has watched a reproduction number hover around one has met k = 1 in another costume.
The discrete-body machinery underneath is not exotic either — thousands of colliding particles resolved one contact at a time is everyday DEM work: pharmaceutical tablet coating and blending, mining and bulk-materials transfer chutes, additive-manufacturing powder spreading, conveyor and hopper design. The mousetrap box is just the cheapest possible teacher for “discrete bodies, contact, and the density at which a cascade takes off” — and its three governing numbers (how many triggers each event releases, how far they reach, how densely they are packed) are the three that separate a controlled process from a runaway one at every scale that matters.
Have a system where one failure can set off the next — a packed bed, a conveyor line, a bank of protective devices, a stack of stored energy — and you need to know whether it damps out or runs away? The same Ansys workflow behind the mousetrap box — Rocky DEM to measure a single event body by body, then that measured physics carried to population scale — is how Rand Simulation puts a real number on the spacing, density or margin that separates a contained event from a cascade. That's innovation through insight.



