Expand description
§cellular_raza - Building Blocks
Building blocks allow users to quickly construct complex cellular agents. The simplest approach is to use fully-defined cell models which are contained in cell_models with fitting domains. However, users can also build their own complex models by combining existing ones.
To create your own agent with physical mechanics and interactions, we need to include the building blocks for them as fields of our agent struct.
struct MyAgent {
mechanics: NewtonDamped2D,
interaction: BoundLennardJones,
}
Furthermore, we can derive desired concepts by using the CellAgent derive macro.
#[derive(CellAgent)]
struct MyAgent {
#[Mechanics(Vector2<f64>, Vector2<f64>, Vector2<f64>)]
mechanics: NewtonDamped2D,
#[Interaction(Vector2<f64>, Vector2<f64>, Vector2<f64>)]
interaction: BoundLennardJones,
}
For technical reasons, we are required to also once more specify the types for position,
velocity and force when specifying which struct field to derive from.
The optional Inf
generic parameter of the Interaction trait was left out and thus defaults to ()
.
It can and needs to also be specified when choosing interactions with non-trivial
interaction information.
§Optional Features
Features guard implementations which introduce additional dependencies. To simplify usability, we enable commonly used features by default.
- pyo3 Rust bindings to the Python interpreter
Modules§
- Construct cells from individual components
- Collection of complete cell models
- Physical domains which contain cells
- Handy re-exports of every building block.