Skip to main content

ParticleNeighborList

Struct ParticleNeighborList 

Source
pub struct ParticleNeighborList { /* private fields */ }
Expand description

Cutoff-filtered neighbor helper for canonical massive-particle objects.

Implementations§

Source§

impl ParticleNeighborList

Source

pub fn from_bounds( min: &[f64], max: &[f64], cutoff: f64, ) -> Result<Self, ParticleNeighborListError>

Builds a particle neighbor list over explicit rectangular bounds.

Source

pub fn from_box( dimensions: &[f64], cutoff: f64, ) -> Result<Self, ParticleNeighborListError>

Builds a particle neighbor list over [0, dimensions[k]] on each axis.

Source

pub fn dim(&self) -> usize

Returns spatial dimension.

Source

pub fn cutoff(&self) -> f64

Returns the physical cutoff distance.

Source

pub fn rebuild( &mut self, objects: &PhysObj, ) -> Result<(), ParticleNeighborListError>

Rebuilds nearby-cell candidates from objects.core[ATTR_R].

Source

pub fn collect_pairs( &self, objects: &PhysObj, selection: ParticleSelection, ) -> Result<Vec<(usize, usize)>, ParticleNeighborListError>

Collects physical neighbor pairs within cutoff.

Requires unchanged positions since rebuild; prefer rebuild_and_collect. The result contains unique unordered pairs (i, j) with i < j. With ParticleSelection::AliveOnly, pairs touching dead particles are skipped. Use ParticleSelection::All only when intentionally debugging or inspecting all allocated slots.

Source

pub fn rebuild_and_collect( &mut self, objects: &PhysObj, selection: ParticleSelection, ) -> Result<Vec<(usize, usize)>, ParticleNeighborListError>

Rebuilds and queries current positions, preventing stale candidate use. Distance is strictly between zero and cutoff, with no periodic minimum image. Positions may be clipped into cells, but distance uses raw values.

Source

pub fn rebuild_and_collect_into( &mut self, objects: &PhysObj, selection: ParticleSelection, output: &mut Vec<(usize, usize)>, ) -> Result<(), ParticleNeighborListError>

Rebuilds current positions and replaces a caller-owned pair buffer. Retains buffer capacity. Geometry/state errors leave output unchanged.

Source

pub fn collect_pairs_into( &self, objects: &PhysObj, selection: ParticleSelection, output: &mut Vec<(usize, usize)>, ) -> Result<(), ParticleNeighborListError>

Queries a previously rebuilt list into a reusable output buffer. Positions and particle count must remain unchanged since rebuild; alive flags are read at query time. Rebuild-and-query is the normal safe path. Shape and mask errors are validated before replacing the output.

Source

pub fn for_each_pair( &self, objects: &PhysObj, selection: ParticleSelection, visitor: impl FnMut(usize, usize), ) -> Result<(), ParticleNeighborListError>

Visits unique cutoff-filtered pairs without allocating a pair vector. Requires unchanged positions since the last rebuild. Queries before the first rebuild or after count changes fail; arbitrary position edits cannot be detected because particle attributes remain publicly mutable.

Trait Implementations§

Source§

impl Clone for ParticleNeighborList

Source§

fn clone(&self) -> ParticleNeighborList

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for ParticleNeighborList

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

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<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

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<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 = !

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

fn try_from(value: U) -> Result<T, !>

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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V