pub struct Rib {
pub iter_count: usize,
pub tolerance: f64,
}Expand description
§Recursive Inertial Bisection algorithm
Partitions a mesh based on the nodes coordinates and coresponding weights.
A variant of the Recursive Coordinate Bisection algorithm where a basis change is performed beforehand so that the first coordinate of the new basis is colinear to the inertia axis of the set of points. This has the goal of producing better shaped partition than RCB.
§Example
use coupe::Partition as _;
use coupe::Point2D;
// Here, the inertia axis is the y axis.
// We thus expect Rib to split horizontally first.
let points = [
Point2D::new(1., 10.),
Point2D::new(-1., 10.),
Point2D::new(1., -10.),
Point2D::new(-1., -10.),
];
let weights = [1; 4];
let mut partition = [0; 4];
// Generate a partition of 2 parts (1 split).
coupe::Rib { iter_count: 1, ..Default::default() }
.partition(&mut partition, (&points, weights))
.unwrap();
// The two points at the top are in the same part.
assert_eq!(partition[0], partition[1]);
// The two points at the bottom are in the same part.
assert_eq!(partition[2], partition[3]);
// There are two different parts.
assert_ne!(partition[1], partition[2]);§Reference
Williams, Roy D., 1991. Performance of dynamic load balancing algorithms for unstructured mesh calculations. Concurrency: Practice and Experience, 3(5):457–481. doi:10.1002/cpe.4330030502.
Fields§
§iter_count: usizeThe number of iterations of the algorithm. This will yield a partition
of at most 2^num_iter parts.
tolerance: f64Same meaning as Rcb::tolerance.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Rib
impl RefUnwindSafe for Rib
impl Send for Rib
impl Sync for Rib
impl Unpin for Rib
impl UnwindSafe for Rib
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> 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> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
Checks if
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
Use with care! Same as
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
The inclusion map: converts
self to the equivalent element of its superset.