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)[source]#
Bases:
LinearIntegratorVicsek-model integrator with extrinsic (vectorial) noise.
This integrator implements a Vicsek-like update rule by directly setting the translational velocity magnitude to
v0each step, based on the direction of 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
Noise is generated per clump (one sample per rigid body) and then broadcast to all clump members so clumps move coherently.
Neighbor lists may be cached (e.g., NeighborList collider) or may 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)[source]#
Bases:
LinearIntegratorVicsek-model integrator with intrinsic noise.
This variant perturbs the direction of the desired motion by applying a random rotation to the normalized base direction (rather than adding a random vector in force space as in the extrinsic / vectorial-noise variant).
The base direction is computed from: - the current accumulated force vector (from colliders + force functions), - the average neighbor velocity direction (including self), then noise is applied per clump and broadcast to all clump members so clumps move coherently.
- neighbor_radius: Array#
- eta: Array#
- v0: Array#
- max_neighbors: int#