Granular Mechanics Lab

2D DEM — rigid balls · box & cylinder containers · SI units
balls 0   t = 0.00 s  
KE 0 J   vmax 0 m/s
packing   void
✓ STEADY STATE

Balls

0.030
0.050
0.0050
1500
0.30
0.30
0.60
Balls spawn as a rain from random (x, y) starting drop height above the container rim. Mass comes from density: m = ρ·(4/3)π(d/2)³ (spheres in the 2D plane), so bigger balls are proportionally heavier. With a size increment > 0, diameters take the discrete values dmin, dmin+Δd, … dmax (0 = continuous). Friction: μslide=√(r₁r₂), μroll=0.05√(r₁r₂).

Container

2.0
2.0
0.0
0
0.60
0.30
10^3.5
max sidebar deflection (m)
inner width at mid-height (m)
Red walls are slidable pistons (1 degree of freedom along their outward normal). Bendable sidebars are elastic chains pinned at both ends (stiffness in N/m per node, log slider) — use them to study applied force vs deformation of the ensemble. The container rests on a fixed ground plane.

Piston force — experiment 2

0
2.0
chamber size (m)
piston reaction (N)

Void distribution — experiment 1

packing fraction
void fraction
Void fraction per height slab (exact disk–slab areas). Auto-measured at steady state.
0.50
12
v(r): pick a random particle center, measure the void fraction inside probe disks of diameter r = Δ, 2Δ, … where the increment Δ is set in units of the mean ball diameter d̄ (exact circle–circle areas; probes must lie fully inside the bed region), averaged over all samples. Chart plots v against r/d̄. Set center particle size to restrict the picked centers to one disk size class ("for a given size").

Tapping — ensemble statistics

4.0
mean specific volume ῡ
variance σ²
DOS shape k / scale θ
υmin
compactivity X
partition function Z(X)
entropy S−SRCP
bed height / Δh (m)
Volume distribution P(υ) per Chang, Chang & Chao, PRE 114, 015410 (2026): specific volumes υi from Voronoi cells (wall & surface layers excluded), free volume v = υ − υmin, Gamma DOS Ω(v), Z(X) = (X/(X+θ))k, X = θv̄/(kθ−v̄). k and υmin come from the structural relation ῡ = υmin + √k·σ fitted across recorded states (tap at several Γ values for a good fit); θ from the loosest state. Chart: P(υ) histogram + factorized-Gamma prediction; below it, ῡ vs tap number.

Physics

extra damping when nearly still — helps hard-to-reach steady states
9.81
1.0×
Time step is set automatically from contact stiffness and the lightest ball. Scroll to zoom, drag to pan, double-click to re-fit. For runs beyond ~5,000 balls use the Python engine (same physics, C core, up to 125,000 balls).