cellular_raza_core/backend/
mod.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
//! Numerically solve a given simulation setup.
//!
//! In the future, we plan on expanding the list of available backends.
//! We hope to provide specialized solvers for highly efficient GPU usage via the OpenCL standard.
//!
//! ## Supported Simulation Aspects
//! Not every backend does support all simulation aspects.
//! We aim to provide one general-purpose backend able to solve any given simulation that adheres
//! to the [cellular_raza_concepts] with the 🌢️ [chili] backend.
//!
//! | Aspect | 🐧 [cpu_os_threads] | 🌢️ [chili] | 🐯 [cara] | 🐺 [elli] |
//! | --- |:---:|:---:|:---:|:---:|
//! | [Cycle](cellular_raza_concepts::Cycle) | βœ…ΒΉ | βœ… |❌ |❌ |
//! | [Mechanics](cellular_raza_concepts::Mechanics) | βœ…ΒΉ | βœ… |❌ |❌ |
//! | [Interaction](cellular_raza_concepts::Interaction) | βœ… | βœ… |❌ |❌ |
//! | [Reactions](cellular_raza_concepts::Reactions) | ❌ | βœ… |❌ |❌ |
//! | [ReactionsContact](cellular_raza_concepts::ReactionsContact) | ❌ | βœ… |❌ |❌ |
//! | [ReactionsExtra](cellular_raza_concepts::ReactionsExtra) | ❌ | βœ… |❌ |❌ |
//! | [Domain](cellular_raza_concepts::Domain) | ❌ | βœ… |❌ |❌ |
//! | [DomainForce](cellular_raza_concepts::SubDomainForce) | ❌ | βœ… |❌ |❌ |
//! | [Controller](cellular_raza_concepts::domain_old::Controller) | βœ… | ❌ |❌ |❌ |
//! | Old Aspects |
//! | [ReactionsOld](cellular_raza_concepts::reactions_old::CellularReactions) | βœ… | ❌ |❌ |❌ |
//! | [DomainOld](cellular_raza_concepts::domain_old::Domain) | βœ… | ❌ |❌ |❌ |
//! | [Plotting](cellular_raza_concepts::PlotSelf) | βœ… | ❌ |❌ |❌ |
//!
//! ΒΉOnly supports `Float=f64`.

/// 🐧 Use multiple os-threads and cpu-only resources
///
/// Parallelization is achieved by splitting the simulation domain into as many chunks as
/// threads are desired. Communication between threads is handled by
/// [crossbeam_channel](https://docs.rs/crossbeam-channel/latest/crossbeam_channel/)
/// and synchronization by [hurdles::Barrier](https://docs.rs/hurdles/latest/hurdles/).
///
/// The user can manage the simulation flow by means of individual functions or by creating a
/// [SimulationSupervisor](cpu_os_threads::SimulationSupervisor).
// TODO deprecate this!
// #[deprecated]
// #[allow(deprecated)]
#[cfg(feature = "cpu_os_threads")]
#[cfg_attr(docsrs, doc(cfg(feature = "cpu_os_threads")))]
pub mod cpu_os_threads;

#[cfg(feature = "chili")]
#[cfg_attr(docsrs, doc(cfg(feature = "chili")))]
pub mod chili;

#[cfg(feature = "cara")]
#[cfg_attr(docsrs, doc(cfg(feature = "cara")))]
pub mod cara;

#[cfg(feature = "elli")]
#[cfg_attr(docsrs, doc(cfg(feature = "elli")))]
pub mod elli;