jaxdem.integrators.vicsek#
Vicsek-style integrators (extrinsic and intrinsic noise).
Classes
|
Vicsek-model integrator with extrinsic (vectorial) noise. |
|
Vicsek-model integrator with intrinsic noise. |
- class jaxdem.integrators.vicsek.VicsekExtrinsic(neighbor_radius: Array, eta: Array, v0: Array, max_neighbors: int)#
Bases:
LinearIntegratorVicsek-model integrator with extrinsic (vectorial) noise.
Each step, the integrator sets the translational velocity magnitude to
v0. The direction comes from a vector that combines:the current accumulated force vector (from colliders + force functions),
the average neighbor velocity direction (including self),
an additive random unit vector scaled by
eta(extrinsic noise).
Notes
The integrator draws the noise per clump (one sample per rigid body) and broadcasts it to all clump members, so clumps move coherently.
A collider may cache the neighbor list (e.g., NeighborList collider) or sort the state (e.g., some cell-list builders). This integrator uses the returned state from
create_neighbor_listfor consistency.
- neighbor_radius: Array#
- eta: Array#
- v0: Array#
- max_neighbors: int#
- class jaxdem.integrators.vicsek.VicsekIntrinsic(neighbor_radius: Array, eta: Array, v0: Array, max_neighbors: int)#
Bases:
LinearIntegratorVicsek-model integrator with intrinsic noise.
This variant perturbs the direction of the desired motion. It applies a random rotation to the normalized base direction. It does not add a random vector in force space as the extrinsic (vectorial-noise) variant does.
The base direction comes from: - the current accumulated force vector (from colliders + force functions), - the average neighbor velocity direction (including self).
The integrator then applies the noise per clump and broadcasts it to all clump members, so clumps move coherently.
- neighbor_radius: Array#
- eta: Array#
- v0: Array#
- max_neighbors: int#