pub struct CellBox<C> {
pub identifier: CellIdentifier,
pub parent: Option<CellIdentifier>,
pub cell: C,
}Available on crate feature
chili only.Expand description
Wrapper around the user-defined CellAgent
This wrapper serves to provide a unique identifier and the option to specify the parent of the current cell.
Fields§
§identifier: CellIdentifierThe identifier is composed of two values, one for the voxel index in which the object was created and another one which counts how many elements have already been created there.
parent: Option<CellIdentifier>Identifier of the parent cell if this cell was created by cell-division
cell: CThe cell which is encapsulated by this box.
Implementations§
Source§impl<Cel> CellBox<Cel>
impl<Cel> CellBox<Cel>
Sourcepub fn get_parent_id(&self) -> Option<CellIdentifier>
pub fn get_parent_id(&self) -> Option<CellIdentifier>
Simple method to retrieve the [CellularIdentifier] of the parent cell if existing.
Source§impl<C> CellBox<C>
impl<C> CellBox<C>
Sourcepub fn new_initial(n_cell: usize, cell: C) -> CellBox<C>
pub fn new_initial(n_cell: usize, cell: C) -> CellBox<C>
Create a new CellBox for a cell present initially in the simulation.
Sourcepub fn new(
voxel_index: VoxelPlainIndex,
n_cell: u64,
cell: C,
parent: Option<CellIdentifier>,
) -> CellBox<C>
pub fn new( voxel_index: VoxelPlainIndex, n_cell: u64, cell: C, parent: Option<CellIdentifier>, ) -> CellBox<C>
Create a new CellBox at a specific voxel with a voxel-unique number of cells that has already been created at this position.
Trait Implementations§
Source§impl<'de, C> Deserialize<'de> for CellBox<C>where
C: Deserialize<'de>,
impl<'de, C> Deserialize<'de> for CellBox<C>where
C: Deserialize<'de>,
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<CellBox<C>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<CellBox<C>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<Cel, Ind, Vox, Dom> Domain<CellBox<Cel>, Ind, Vox> for DomainBox<Dom>
Available on crate feature cpu_os_threads only.
impl<Cel, Ind, Vox, Dom> Domain<CellBox<Cel>, Ind, Vox> for DomainBox<Dom>
Available on crate feature
cpu_os_threads only.Source§fn apply_boundary(&self, cbox: &mut CellBox<Cel>) -> Result<(), BoundaryError>
fn apply_boundary(&self, cbox: &mut CellBox<Cel>) -> Result<(), BoundaryError>
Applies boundary conditions to a cell in order to keep it inside the simulation.
For the future, we aim to apply boundary conditions to the position of the cell rather than itself.
In addition, we would like to be able to invoke events such as Remove to maximize flexibility.
Source§fn get_neighbor_voxel_indices(&self, index: &Ind) -> Vec<Ind>
fn get_neighbor_voxel_indices(&self, index: &Ind) -> Vec<Ind>
Retrieves the neighboring voxels of the one specified.
Source§fn get_voxel_index(&self, cbox: &CellBox<Cel>) -> Ind
fn get_voxel_index(&self, cbox: &CellBox<Cel>) -> Ind
Provided a cell, gives the corresponding Index and thus which voxel to sort into.
Source§fn get_all_indices(&self) -> Vec<Ind>
fn get_all_indices(&self) -> Vec<Ind>
Get all indices that are present in the simulation. Required for initial configuration of the simulation domain.
Source§fn generate_contiguous_multi_voxel_regions(
&self,
n_regions: usize,
) -> Result<Vec<Vec<(Ind, Vox)>>, CalcError>
fn generate_contiguous_multi_voxel_regions( &self, n_regions: usize, ) -> Result<Vec<Vec<(Ind, Vox)>>, CalcError>
Allows the backend to split the domain into continuous regions which contain voxels.
These regions can then be used for parallelization.
Source§impl<Cel> Id for CellBox<Cel>
impl<Cel> Id for CellBox<Cel>
Source§type Identifier = CellIdentifier
type Identifier = CellIdentifier
The identifier type is usually chosen to be completely unique and repeatable across
different simulations.
Source§fn get_id(&self) -> CellIdentifier
fn get_id(&self) -> CellIdentifier
Retrieves the Identifier from the object.
Source§fn ref_id(&self) -> &CellIdentifier
fn ref_id(&self) -> &CellIdentifier
Returns a reference to the id of the object.
Source§impl<Pos, Vel, For, Inf, A> Interaction<Pos, Vel, For, Inf> for CellBox<A>
impl<Pos, Vel, For, Inf, A> Interaction<Pos, Vel, For, Inf> for CellBox<A>
Source§fn calculate_force_between(
&self,
own_pos: &Pos,
own_vel: &Vel,
ext_pos: &Pos,
ext_vel: &Vel,
ext_information: &Inf,
) -> Result<(For, For), CalcError>
fn calculate_force_between( &self, own_pos: &Pos, own_vel: &Vel, ext_pos: &Pos, ext_vel: &Vel, ext_information: &Inf, ) -> Result<(For, For), CalcError>
Calculates the forces (velocity-derivative) on the corresponding external position given
external velocity.
By providing velocities, we can calculate terms that are related to friction.
The function returns two forces, one acting on the current agent and the other on the
external agent.
Source§fn is_neighbor(
&self,
own_pos: &Pos,
ext_pos: &Pos,
ext_inf: &Inf,
) -> Result<bool, CalcError>
fn is_neighbor( &self, own_pos: &Pos, ext_pos: &Pos, ext_inf: &Inf, ) -> Result<bool, CalcError>
Checks if the other cell represented by position and information is a neighbor to the current one or not.
Source§fn react_to_neighbors(&mut self, neighbors: usize) -> Result<(), CalcError>
fn react_to_neighbors(&mut self, neighbors: usize) -> Result<(), CalcError>
Reacts to the results gathered by the Interaction::is_neighbor
method and changes the state of the cell.
Source§impl<Inf, A> InteractionInformation<Inf> for CellBox<A>where
A: InteractionInformation<Inf>,
impl<Inf, A> InteractionInformation<Inf> for CellBox<A>where
A: InteractionInformation<Inf>,
Source§fn get_interaction_information(&self) -> Inf
fn get_interaction_information(&self) -> Inf
Get additional information of cellular properties (ie. for cell-specific interactions).
Source§impl<Pos, Vel, For, Float, A> Mechanics<Pos, Vel, For, Float> for CellBox<A>where
A: Mechanics<Pos, Vel, For, Float>,
impl<Pos, Vel, For, Float, A> Mechanics<Pos, Vel, For, Float> for CellBox<A>where
A: Mechanics<Pos, Vel, For, Float>,
Source§fn get_random_contribution(
&self,
rng: &mut ChaCha8Rng,
dt: Float,
) -> Result<(Pos, Vel), RngError>
fn get_random_contribution( &self, rng: &mut ChaCha8Rng, dt: Float, ) -> Result<(Pos, Vel), RngError>
Define a new random variable in case that the mechanics type contains a random aspect to
its motion.
By default this function does nothing.
Source§fn calculate_increment(&self, force: For) -> Result<(Pos, Vel), CalcError>
fn calculate_increment(&self, force: For) -> Result<(Pos, Vel), CalcError>
Calculate the time-derivative of force and velocity given all the forces that act on the
cell.
Simple damping effects should be included in this trait if not explicitly given by the
SubDomainForce trait.
Source§impl<Cel> PlotSelf for CellBox<Cel>
impl<Cel> PlotSelf for CellBox<Cel>
Source§fn plot_self<Db>(
&self,
root: &mut DrawingArea<Db, Cartesian2d<RangedCoordf64, RangedCoordf64>>,
) -> Result<(), DrawingError>where
Db: DrawingBackend,
fn plot_self<Db>(
&self,
root: &mut DrawingArea<Db, Cartesian2d<RangedCoordf64, RangedCoordf64>>,
) -> Result<(), DrawingError>where
Db: DrawingBackend,
Define which elements to draw when plotting the element itself.
Source§fn plot_self_bitmap(
&self,
root: &mut DrawingArea<BitMapBackend<'_>, Cartesian2d<RangedCoordf64, RangedCoordf64>>,
) -> Result<(), DrawingError>
fn plot_self_bitmap( &self, root: &mut DrawingArea<BitMapBackend<'_>, Cartesian2d<RangedCoordf64, RangedCoordf64>>, ) -> Result<(), DrawingError>
Overload for backend to have a purely bitmap function.
User are not expected to change this function.
Source§fn plot_self_svg(
&self,
root: &mut DrawingArea<SVGBackend<'_>, Cartesian2d<RangedCoordf64, RangedCoordf64>>,
) -> Result<(), DrawingError>
fn plot_self_svg( &self, root: &mut DrawingArea<SVGBackend<'_>, Cartesian2d<RangedCoordf64, RangedCoordf64>>, ) -> Result<(), DrawingError>
Overload for backend to have a purely bitmap function.
User are not expected to change this function.
Source§impl<C> Serialize for CellBox<C>where
C: Serialize,
impl<C> Serialize for CellBox<C>where
C: Serialize,
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Serialize this value into the given Serde serializer. Read more
Auto Trait Implementations§
impl<C> Freeze for CellBox<C>where
C: Freeze,
impl<C> RefUnwindSafe for CellBox<C>where
C: RefUnwindSafe,
impl<C> Send for CellBox<C>where
C: Send,
impl<C> Sync for CellBox<C>where
C: Sync,
impl<C> Unpin for CellBox<C>where
C: Unpin,
impl<C> UnwindSafe for CellBox<C>where
C: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<C, T> CoordTranslate for Twhere
C: CoordTranslate,
T: Deref<Target = C>,
impl<C, T> CoordTranslate for Twhere
C: CoordTranslate,
T: Deref<Target = C>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R> Rng for R
impl<R> Rng for R
Source§fn random<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
fn random<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
Return a random value via the
StandardUniform distribution. Read moreSource§fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>
fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>
Source§fn random_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
fn random_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
Generate a random value in the given range. Read more
Source§fn random_bool(&mut self, p: f64) -> bool
fn random_bool(&mut self, p: f64) -> bool
Return a bool with a probability
p of being true. Read moreSource§fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool
Return a bool with a probability of
numerator/denominator of being
true. Read moreSource§fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
fn sample<T, D>(&mut self, distr: D) -> Twhere
D: Distribution<T>,
Sample a new value, using the given distribution. Read more
Source§fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>where
D: Distribution<T>,
Self: Sized,
fn sample_iter<T, D>(self, distr: D) -> Iter<D, Self, T>where
D: Distribution<T>,
Self: Sized,
Create an iterator that generates values using the given distribution. Read more
Source§fn gen<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
fn gen<T>(&mut self) -> Twhere
StandardUniform: Distribution<T>,
👎Deprecated since 0.9.0: Renamed to
random to avoid conflict with the new gen keyword in Rust 2024.Alias for
Rng::random.Source§fn gen_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
fn gen_range<T, R>(&mut self, range: R) -> Twhere
T: SampleUniform,
R: SampleRange<T>,
👎Deprecated since 0.9.0: Renamed to
random_rangeAlias for
Rng::random_range.Source§impl<R> TryRngCore for R
impl<R> TryRngCore for R
Source§type Error = Infallible
type Error = Infallible
The type returned in the event of a RNG error.
Source§fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
fn try_next_u32(&mut self) -> Result<u32, <R as TryRngCore>::Error>
Return the next random
u32.Source§fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
fn try_next_u64(&mut self) -> Result<u64, <R as TryRngCore>::Error>
Return the next random
u64.Source§fn try_fill_bytes(
&mut self,
dst: &mut [u8],
) -> Result<(), <R as TryRngCore>::Error>
fn try_fill_bytes( &mut self, dst: &mut [u8], ) -> Result<(), <R as TryRngCore>::Error>
Fill
dest entirely with random data.Source§fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>
fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>
Wrap RNG with the
UnwrapMut wrapper.Source§fn read_adapter(&mut self) -> RngReadAdapter<'_, Self>where
Self: Sized,
fn read_adapter(&mut self) -> RngReadAdapter<'_, Self>where
Self: Sized,
Convert an
RngCore to a RngReadAdapter.