3D Voronoi cell model

Periodic 3D self-propelled-Voronoi energy e = Σ kᵥ(vᵢ−1)² + k_S(sᵢ−s₀)², relaxed with FIRE. Faithful port of a validated MATLAB reference implementation (analytic forces, FD-verified).

Relaxer
Transition
64
5.20
1e+0
1.00
step0
⟨E/N⟩
max|F|
⟨shape index⟩
volume CoV
status

Small N (interactive limit <100) → the rigidity transition (s₀*≈5.41, a large-N value) is finite-size-rounded here. Set k_S=0 to watch the volume-only energy drive an equal-volume tiling (volume CoV → 0).

Runs entirely in your browser: voro++ (WebAssembly) tessellation · exact analytic forces · FIRE relaxation · Three.js (WebGL) rendering. MIT License.  

3D Voronoi (self-propelled-Voronoi) cell model

Interactive, in-browser energy minimization · MIT License

The model. N cell centers in a periodic unit box define a 3D Voronoi tessellation. Each cell i carries a dimensionless energy penalizing departures from a target volume and a target surface area (its shape index):

e = Σᵢ [ kᵥ (vᵢ − 1)² + k_S (sᵢ − s₀)² ] vᵢ = Vᵢ / ⟨V⟩ , sᵢ = Sᵢ / ⟨V⟩^(2/3) , ⟨V⟩ = 1/N

kᵥ = Kᵥ⟨V⟩2/3/K_S is the single dimensionless stiffness ratio and s₀ is the preferred shape index. Volumes and areas are reduced so the average cell volume is 1.

The transition. Rigidity here is controlled by geometry alone: the tissue is solid below a critical shape index and fluid above it. The 3D Voronoi value is s₀* ≈ 5.41 (the analogue of p₀* ≈ 3.81 for the 2D model). Because the demo is capped at N < 100 for interactivity, the transition is finite-size-rounded — the sharp threshold only emerges at large N. Setting k_S = 0 makes the volume term alone drive an equal-volume tiling (volume CoV → 0).

How it works. Everything runs client-side. The periodic Voronoi tessellation is computed by voro++ compiled to WebAssembly; the forces are the exact analytic gradient of the energy above (finite-difference-verified to ~10⁻¹⁰); configurations are relaxed with the FIRE 2.0 minimizer; rendering is GPU via Three.js.

Using it. Relaxer — set N, seed, s₀, kᵥ, k_S and Run / Step / Converge to watch FIRE relax the packing; color cells by shape index, volume, or cell energy, and toggle faces/edges. Transition — sweep s₀ (a few seeds each) and plot ⟨E/N⟩ and ⟨sᵢ⟩ vs s₀, with s₀* ≈ 5.41 marked.

References

  1. M. Merkel & M. L. Manning, “A geometrically controlled rigidity transition in a model for confluent 3D tissues,” New J. Phys. 20, 022002 (2018). doi:10.1088/1367-2630/aaaa13 · arXiv:1706.02656the 3D model and the s₀* ≈ 5.41 transition implemented here.
  2. D. Bi, J. H. Lopez, J. M. Schwarz & M. L. Manning, “A density-independent rigidity transition in biological tissues,” Nat. Phys. 11, 1074–1079 (2015). doi:10.1038/nphys3471 · arXiv:1409.0593the 2D shape-index rigidity transition (p₀* ≈ 3.81).
  3. E. Bitzek, P. Koskinen, F. Gähler, M. Moseler & P. Gumbsch, “Structural Relaxation Made Simple,” Phys. Rev. Lett. 97, 170201 (2006). doi:10.1103/PhysRevLett.97.170201the original FIRE minimizer.
  4. J. Guénolé et al., “Assessment and optimization of the fast inertial relaxation engine (FIRE) for energy minimization in atomistic simulations and its implementation in LAMMPS,” Comput. Mater. Sci. 175, 109584 (2020). doi:10.1016/j.commatsci.2020.109584 · arXiv:1908.02038FIRE 2.0, the variant used here.
  5. C. H. Rycroft, “VORO++: A three-dimensional Voronoi cell library in C++,” Chaos 19, 041111 (2009). doi:10.1063/1.3215722 · math.lbl.gov/voro++the tessellation engine (compiled to WebAssembly).

Built with

Three.js (WebGL rendering) · voro++ compiled to WebAssembly via Emscripten · the FIRE 2.0 minimizer.

License

Code released under the MIT License — free to use, modify, and distribute. Cited works are © their respective authors/publishers.