Struct coupe::Grid

source ·
pub struct Grid<const D: usize> { /* private fields */ }
Expand description

Representation of a cartesian mesh.

Coupe can partition grids (also called cartesian meshes) faster and consuming less memory than unstructured meshes.

Example

You can feed grids to topologic algorithms, thanks to the Topology trait. You can also partition them directly with, eg., RCB:

// Define a 2-by-2 grid.
let side = std::num::NonZeroUsize::new(2).unwrap();
let grid = Grid::new_2d(side, side);

// All cells have the same weight.
let mut partition = [0; 4];
let weights = [1.0; 4];

// Run 2 iterations of RCB.
grid.rcb(&mut partition, &weights, 2);

// There are 4 parts, their order is unspecified.
partition.sort();
assert_eq!(partition, [0, 1, 2, 3]);

Implementations§

source§

impl Grid<2>

source

pub fn new_2d(width: NonZeroUsize, height: NonZeroUsize) -> Self

Define a new 2D grid.

source

pub fn rcb<W>(self, partition: &mut [usize], weights: &[W], iter_count: usize)where W: Send + Sync + PartialOrd + Num + Sum + AsPrimitive<f64>, f64: AsPrimitive<W>,

Run RCB on the 2D grid.

Weights and partition indices are row major.

source§

impl Grid<3>

source

pub fn new_3d( width: NonZeroUsize, height: NonZeroUsize, depth: NonZeroUsize ) -> Self

Define a new 3D grid.

source

pub fn rcb<W>(self, partition: &mut [usize], weights: &[W], iter_count: usize)where W: Send + Sync + PartialOrd + Num + Sum + AsPrimitive<f64>, f64: AsPrimitive<W>,

Run RCB on the 3D grid.

Weights and partition indices are row-then-column major.

Trait Implementations§

source§

impl<const D: usize> Clone for Grid<D>

source§

fn clone(&self) -> Grid<D>

Returns a copy 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<const D: usize> Debug for Grid<D>

source§

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

Formats the value using the given formatter. Read more
source§

impl<const D: usize, E> Topology<E> for Grid<D>where E: One,

§

type Neighbors<'a> = GridNeighbors<D, E> where Self: 'a

source§

fn len(&self) -> usize

The number of elements in the mesh.
source§

fn neighbors(&self, vertex: usize) -> Self::Neighbors<'_>

An iterator over the neighbors of the given vertex.
source§

fn is_empty(&self) -> bool

Whether the topology has no elements.
source§

fn lambda_cut<W>(&self, partition: &[usize], weights: W) -> W::Itemwhere Self: Sync, W: IntoParallelIterator, W::Iter: IndexedParallelIterator, W::Item: Sum + Mul<Output = W::Item> + FromPrimitive,

The λ-1 cut (lambda-1 cut) of a partition. Read more
source§

impl<const D: usize> Copy for Grid<D>

Auto Trait Implementations§

§

impl<const D: usize> RefUnwindSafe for Grid<D>

§

impl<const D: usize> Send for Grid<D>

§

impl<const D: usize> Sync for Grid<D>

§

impl<const D: usize> Unpin for Grid<D>

§

impl<const D: usize> UnwindSafe for Grid<D>

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

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

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

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

source§

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

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

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

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

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 Twhere 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.

§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

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

Initializes a with the given initializer. Read more
§

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

Dereferences the given pointer. Read more
§

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

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

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

impl<T> Same for T

§

type Output = T

Should always be Self
§

impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,

§

fn to_subset(&self) -> Option<SS>

The inverse inclusion map: attempts to construct self from the equivalent element of its superset. Read more
§

fn is_in_subset(&self) -> bool

Checks if self is actually part of its subset T (and can be converted to it).
§

fn to_subset_unchecked(&self) -> SS

Use with care! Same as self.to_subset but without any property checks. Always succeeds.
§

fn from_subset(element: &SS) -> SP

The inclusion map: converts self to the equivalent element of its superset.
source§

impl<T> ToOwned for Twhere T: Clone,

§

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 Twhere U: Into<T>,

§

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 Twhere U: TryFrom<T>,

§

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.
§

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

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

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
§

fn with_current_subscriber(self) -> WithDispatch<Self>

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