Granular Drum

A slowly turning drum, partly filled with beads of different sizes. Each avalanche down the slope sorts the beads a little more, and after a couple of turns they have drawn a pattern.

Distance from the middle of the pile, per bead size (1 = average). Small beads gather in, large ones out.
Segregation over time: largest minus smallest of those distances, per turn.

What you are looking at

Glass beads of two to four sizes sit between two glass plates, in a gap only a little wider than the largest bead. The drum turns slowly. Most of the beads just ride along with it as a solid block. When the surface gets too steep, a thin avalanche runs down the slope. The beads in it are dropped back onto the block further down, carried round, and lifted back up to the top of the slope again.

Inside the avalanche the beads sort themselves. A small bead can drop into the gaps between bigger beads under it, but a big bead can't fit into small gaps. So small beads sink to the bottom of the flowing layer and big beads are pushed up to its surface. This is called kinetic sieving. The small beads at the bottom come to rest first, close to the middle of the drum. The big beads ride on top all the way down and land near the wall. After a few turns a round drum has a core of small beads and a rim of big ones.

Corners, cores and streaks

In a round drum the avalanche keeps the same length, so the sorting is steady. In a triangle, square or pentagon it doesn't. As a corner comes up from below, the slope gets shorter and the avalanche slows. As the corner passes, the slope gets longer and the avalanche speeds up. In the lab, these surges lay down arms of small beads, one per corner, curving the way the drum turns (Maguire et al., 2024). If the drum is more than half full, a core in the middle never reaches the surface. It just turns round and round, keeping the mixture it started with.

Turn a round drum in small steps instead of steadily, and every step sets off one separate avalanche. Each one leaves a tongue of small beads in the pile, and the tongues add up to streaks that radiate from the core like petals. The stop and go preset does this.

The Brazil nut effect, and landslides

In a shaken can of mixed nuts the Brazil nuts end up on top, for the same reason. Every jolt opens gaps under the big nuts, and small pieces fall into them faster than a big nut can. The Brazil nuts preset starts with the big beads at the bottom of the drum, so you can watch the first avalanches bring them up.

Geologists see the same sorting in landslides and debris flows. Boulders end up on the surface and get carried to the front and the edges of the flow. Planetary scientists use it to read landslides on the Moon and on asteroids, where gravity is weak but the grains still sort by size. A thin drum like this one is the lab version. You can watch every grain, turn the drum as long as you like, and get the same sorting every time.

Things to try

Press Stripes to paint horizontal bands over the beads and watch the drum fold them. Colour: flowing layer lights up only the beads that are moving relative to the drum, which shows how thin the avalanche really is. Turn the drum faster and the surface bends into an S. Turn it slower and the avalanches come one at a time. Make the drum fuller and the untouched core grows. With the brush you can paint beads by hand and follow where they go.

Keys: Space pause · R refill · S stripes · C clear tracers · B brush.

What is computed and what is approximated

  • Every bead is simulated. Each one is a sphere moving in 3D between the front and back plates (a discrete element model). Beads touching each other or a wall feel a spring and a damper pushing them apart, plus sliding friction that remembers how far the contact has been sheared, so a resting pile stays put. Spin and a small rolling resistance are included. Beads move in the drum's own turning frame. Gravity turns with the drum, plus the small centrifugal and Coriolis terms.
  • Nothing about the pattern is scripted. The arms, the core and the rim come only from the beads pushing on each other. The bars under the drum measure them from the bead positions.
  • It runs on your GPU in 32-bit floats (WebGPU compute shaders). A plain JavaScript copy of the same model, in 64-bit floats, runs the page's self-tests (test.mjs): forces conserve momentum, settled piles barely overlap, the surface tilts and flows, and small beads gather at the core.
  • Bead sizes are closer together than in some lab runs. The three-size experiment of Maguire et al. (J. Fluid Mech. 979, A40, 2024) used beads from 125 to 800 µm, a 5 : 1 range. Small beads force short time steps, so this page keeps the smallest at 0.35 to 0.5 of the largest. That matches the paper's two-size experiment, which used about 2 : 1.
  • The patterns are blurrier than in the lab. A lab drum holds millions of beads. This one holds 20 000, about 100 large beads across. The core, the bands and the large beads at the wall come out clearly. The thin arms and sharp streaks in the photos come out only faintly, or after many turns. More beads (the Beads setting goes up to 80 000) sharpen them, at the cost of speed.
  • The drum turns faster than in the lab. The default speed is a Froude number Ω²R/g of about 0.01, near the fast end of the range where the surface stays flat and the avalanche stays thin. Lab drums turn more slowly for their size: the drum in the paper's figure 1 takes 96 s per turn. Slower turning here costs real time, so the Turn speed slider goes down to 0.001 for anyone who wants to wait.
  • The beads are softer than glass. They squeeze about 1 % of a diameter into each other, as is usual for this kind of model. There is no air, moisture or static electricity. Real beads also vary in size within each batch, and these don't.
  • The wall is stored as a distance map with 0.125 bead spacing, so a sharp corner is rounded by about that much.