cellular_raza_core/backend/
mod.rs

1//! Numerically solve a given simulation setup.
2//!
3//! In the future, we plan on expanding the list of available backends.
4//! We hope to provide specialized solvers for highly efficient GPU usage via the OpenCL standard.
5//!
6//! ## Supported Simulation Aspects
7//! Not every backend does support all simulation aspects.
8//! We aim to provide one general-purpose backend able to solve any given simulation that adheres
9//! to the [cellular_raza_concepts] with the 🌢️ [chili] backend.
10//!
11//! | Aspect | 🐧 [cpu_os_threads] | 🌢️ [chili] | 🐯 [cara] | 🐺 [elli] |
12//! | --- |:---:|:---:|:---:|:---:|
13//! | [Cycle](cellular_raza_concepts::Cycle) | βœ…ΒΉ | βœ… |❌ |❌ |
14//! | [Mechanics](cellular_raza_concepts::Mechanics) | βœ…ΒΉ | βœ… |❌ |❌ |
15//! | [Interaction](cellular_raza_concepts::Interaction) | βœ… | βœ… |❌ |❌ |
16//! | [NeighborSensing](cellular_raza_concepts::NeighborSensing) | ❌ | βœ… |❌ |❌ |
17//! | [Reactions](cellular_raza_concepts::Reactions) | ❌ | βœ… |❌ |❌ |
18//! | [ReactionsContact](cellular_raza_concepts::ReactionsContact) | ❌ | βœ… |❌ |❌ |
19//! | [ReactionsExtra](cellular_raza_concepts::ReactionsExtra) | ❌ | βœ… |❌ |❌ |
20//! | [Domain](cellular_raza_concepts::Domain) | ❌ | βœ… |❌ |❌ |
21//! | [DomainForce](cellular_raza_concepts::SubDomainForce) | ❌ | βœ… |❌ |❌ |
22//! | [Controller](cellular_raza_concepts::domain_old::Controller) | βœ… | ❌ |❌ |❌ |
23//! | Old Aspects |
24//! | [ReactionsOld](cellular_raza_concepts::reactions_old::CellularReactions) | βœ… | ❌ |❌ |❌ |
25//! | [DomainOld](cellular_raza_concepts::domain_old::Domain) | βœ… | ❌ |❌ |❌ |
26//! | [Plotting](cellular_raza_concepts::PlotSelf) | βœ… | ❌ |❌ |❌ |
27//!
28//! ΒΉOnly supports `Float=f64`.
29
30/// 🐧 Use multiple os-threads and cpu-only resources
31///
32/// Parallelization is achieved by splitting the simulation domain into as many chunks as
33/// threads are desired. Communication between threads is handled by
34/// [crossbeam_channel](https://docs.rs/crossbeam-channel/latest/crossbeam_channel/)
35/// and synchronization by [hurdles::Barrier](https://docs.rs/hurdles/latest/hurdles/).
36///
37/// The user can manage the simulation flow by means of individual functions or by creating a
38/// [SimulationSupervisor](cpu_os_threads::SimulationSupervisor).
39// TODO deprecate this!
40// #[deprecated]
41// #[allow(deprecated)]
42#[cfg(feature = "cpu_os_threads")]
43#[cfg_attr(docsrs, doc(cfg(feature = "cpu_os_threads")))]
44pub mod cpu_os_threads;
45
46#[cfg(feature = "chili")]
47#[cfg_attr(docsrs, doc(cfg(feature = "chili")))]
48pub mod chili;
49
50#[cfg(feature = "cara")]
51#[cfg_attr(docsrs, doc(cfg(feature = "cara")))]
52pub mod cara;
53
54#[cfg(feature = "elli")]
55#[cfg_attr(docsrs, doc(cfg(feature = "elli")))]
56pub mod elli;