#physics #riemannian #active-matter #nematohydrodynamics

volterra-solver

Active nematic solvers: operator splitting, Beris-Edwards, Stokes (stream-function + Killing), and defect tracking on Cartesian grids and Riemannian manifolds

1 unstable release

Uses new Rust 2024

0.3.0 Apr 11, 2026

#6 in #riemannian


Used in 2 crates

MIT license

215KB
3K SLoC

volterra-solver

Beris-Edwards nematohydrodynamics solver for active nematics on 3D Cartesian grids.

Part of the volterra workspace.

Overview

volterra-solver implements the equations of motion for active liquid crystals. The Q-tensor evolves under the Beris-Edwards equation with co-rotation, strain coupling, and Landau-de Gennes molecular field. An incompressible velocity field is obtained via an FFT-based Stokes pressure solve. Concentration dynamics follow Cahn-Hilliard with exponential time differencing (ETD).

Topological disclination lines (charge +1/2 and -1/2) are detected by computing the holonomy of the nematic frame field around mesh plaquettes, using cartan-geo.

Modules

Module Contents
molecular_field Landau-de Gennes free energy variation H = -dF/dQ
beris_edwards_rhs Full time derivative of Q (dry and wet active models)
stokes_solve FFT pressure projection for incompressibility
ch_step_etd Cahn-Hilliard ETD integrator
scan_defects Holonomy-based disclination detection
EulerIntegrator / RK4Integrator Time-stepping schemes

Example

use volterra_solver::run_dry_active_nematic;
use volterra_core::ActiveNematicParams;

let params = ActiveNematicParams { ..Default::default() };
let snapshots = run_dry_active_nematic(&params, 10_000)?;

License

MIT

Dependencies

~8.5MB
~172K SLoC