spheropack.stop.Jammed#
- class spheropack.stop.Jammed(pressure=1000000000.0, relax_windows=4, step=0.2, start_pressure=1000.0)#
Compress quasi-statically until the packing is jammed.
The spheres grow at the requested growth rate until the median per-sphere reduced pressure reaches
start_pressure. From then on the radii alternate between relaxation at fixed size (relax_windowspressure windows of 10 collisions per sphere, energy conserved) and growth steps that close the fractionstepof the estimated remaining gap to jamming (relative sizestep / Z). The run stops when the median pressure in a relaxation window (fixed radii) exceedspressure.The median is insensitive to rattlers and to a few spheres that collide at very high rates. Slower protocols (more relaxation, smaller steps) come closer to an isostatic contact network at higher cost. For 1000 equal spheres at growth rate 0.02 the force-bearing contacts reach about 94% of the isostatic number with
relax_windows=2, step=0.5, 97% with the defaults (1.75 times the run time) and 98% withrelax_windows=4, step=0.1(3 times). Pressures above about1e11bring the gaps between touching spheres close to round-off.stepis limited to 0.5: larger steps overshoot, the packing then relaxes back to a lower pressure during the next relaxation, and the protocol can cycle without progress.Requires the
"elastic_growing"collision rule.- __init__(pressure=1000000000.0, relax_windows=4, step=0.2, start_pressure=1000.0)#
Methods
__init__([pressure, relax_windows, step, ...])Attributes
kindnamepressurerelax_windowsstart_pressurestep