CellBox

Struct CellBox 

Source
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: CellIdentifier

The 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: C

The cell which is encapsulated by this box.

Implementations§

Source§

impl<Cel> CellBox<Cel>

Source

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>

Source

pub fn new_initial(n_cell: usize, cell: C) -> CellBox<C>

Create a new CellBox for a cell present initially in the simulation.

Source

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<C> Clone for CellBox<C>
where C: Clone,

Source§

fn clone(&self) -> CellBox<C>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<C> Deref for CellBox<C>

Source§

type Target = C

The resulting type after dereferencing.
Source§

fn deref(&self) -> &<CellBox<C> as Deref>::Target

Dereferences the value.
Source§

impl<C> DerefMut for CellBox<C>

Source§

fn deref_mut(&mut self) -> &mut <CellBox<C> as Deref>::Target

Mutably dereferences the value.
Source§

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>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl<Cel, Ind, Vox, Dom> Domain<CellBox<Cel>, Ind, Vox> for DomainBox<Dom>
where Dom: Domain<Cel, Ind, Vox>, Vox: Send + Sync, Cel: Send + Sync,

Available on crate feature cpu_os_threads only.
Source§

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>

Retrieves the neighboring voxels of the one specified.
Source§

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>

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>

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>

Source§

type Identifier = CellIdentifier

The identifier type is usually chosen to be completely unique and repeatable across different simulations.
Source§

fn get_id(&self) -> CellIdentifier

Retrieves the Identifier from the object.
Source§

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>
where A: Interaction<Pos, Vel, For, Inf> + Serialize + for<'a> Deserialize<'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>

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>

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>

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>,

Source§

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>,

Source§

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>

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>
where Cel: PlotSelf + Serialize + for<'a> Deserialize<'a>,

Source§

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>

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>

Overload for backend to have a purely bitmap function. User are not expected to change this function.
Source§

impl<A, Pos> Position<Pos> for CellBox<A>
where A: Position<Pos>,

Source§

fn pos(&self) -> Pos

Gets the cells current position.
Source§

fn set_pos(&mut self, pos: &Pos)

Gets the cells current velocity.
Source§

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,

Serialize this value into the given Serde serializer. Read more
Source§

impl<A, Vel> Velocity<Vel> for CellBox<A>
where A: Velocity<Vel>,

Source§

fn velocity(&self) -> Vel

Gets the cells current velocity.
Source§

fn set_velocity(&mut self, velocity: &Vel)

Sets the cells current velocity.

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<C, T> CoordTranslate for T
where C: CoordTranslate, T: Deref<Target = C>,

Source§

type From = <C as CoordTranslate>::From

Specifies the object to be translated from
Source§

fn translate(&self, from: &<T as CoordTranslate>::From) -> (i32, i32)

Translate the guest coordinate to the guest coordinate
Source§

fn depth(&self, _from: &Self::From) -> i32

Get the Z-value of current coordinate
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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 more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<P, T> Receiver for P
where P: Deref<Target = T> + ?Sized, T: ?Sized,

Source§

type Target = T

🔬This is a nightly-only experimental API. (arbitrary_self_types)
The target type on which the method may be called.
Source§

impl<R> Rng for R
where R: RngCore + ?Sized,

Source§

fn random<T>(&mut self) -> T

Return a random value via the StandardUniform distribution. Read more
Source§

fn random_iter<T>(self) -> Iter<StandardUniform, Self, T>

Return an iterator over random variates Read more
Source§

fn random_range<T, R>(&mut self, range: R) -> T
where T: SampleUniform, R: SampleRange<T>,

Generate a random value in the given range. Read more
Source§

fn random_bool(&mut self, p: f64) -> bool

Return a bool with a probability p of being true. Read more
Source§

fn random_ratio(&mut self, numerator: u32, denominator: u32) -> bool

Return a bool with a probability of numerator/denominator of being true. Read more
Source§

fn sample<T, D>(&mut self, distr: D) -> T
where 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,

Create an iterator that generates values using the given distribution. Read more
Source§

fn fill<T>(&mut self, dest: &mut T)
where T: Fill + ?Sized,

Fill any type implementing Fill with random data Read more
Source§

fn gen<T>(&mut self) -> 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) -> T
where T: SampleUniform, R: SampleRange<T>,

👎Deprecated since 0.9.0: Renamed to random_range
Source§

fn gen_bool(&mut self, p: f64) -> bool

👎Deprecated since 0.9.0: Renamed to random_bool
Alias for Rng::random_bool.
Source§

fn gen_ratio(&mut self, numerator: u32, denominator: u32) -> bool

👎Deprecated since 0.9.0: Renamed to random_ratio
Source§

impl<T> RngCore for T
where T: DerefMut, <T as Deref>::Target: RngCore,

Source§

fn next_u32(&mut self) -> u32

Return the next random u32. Read more
Source§

fn next_u64(&mut self) -> u64

Return the next random u64. Read more
Source§

fn fill_bytes(&mut self, dst: &mut [u8])

Fill dest with random data. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<R> TryRngCore for R
where R: RngCore + ?Sized,

Source§

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>

Return the next random u32.
Source§

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>

Fill dest entirely with random data.
Source§

fn unwrap_err(self) -> UnwrapErr<Self>
where Self: Sized,

Wrap RNG with the UnwrapErr wrapper.
Source§

fn unwrap_mut(&mut self) -> UnwrapMut<'_, Self>

Wrap RNG with the UnwrapMut wrapper.
Source§

fn read_adapter(&mut self) -> RngReadAdapter<'_, Self>
where Self: Sized,

Convert an RngCore to a RngReadAdapter.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> CryptoRng for T
where T: DerefMut, <T as Deref>::Target: CryptoRng,

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<R> TryCryptoRng for R
where R: CryptoRng + ?Sized,

Source§

impl<T> Ungil for T
where T: Send,