Struct DistributedLinearSystem
pub struct DistributedLinearSystem { /* private fields */ }Description
A complete linear system distributed over one validated layout.
The complete matrix is identified by its CSR agreement fingerprint, and
DistributedCsr holds the derived row shards. The complete right-hand
side and its rank-local projections are stored here. Mesh, assembly,
transport, reconstruction, and solver policy are handled elsewhere.
Implementations§
§impl DistributedLinearSystem
impl DistributedLinearSystem
pub fn from_complete(
complete: &CanonicalCsrSystemView,
partition: Partition,
) -> Result<DistributedLinearSystem, Diagnostic>
pub fn from_complete( complete: &CanonicalCsrSystemView, partition: Partition, ) -> Result<DistributedLinearSystem, Diagnostic>
Derive distributed shards, layouts, halo, RHS projections, and all L2 identities from one canonical complete view and one owner map.
§Errors
Returns EQ0807 when dimensions or scalar types disagree, or when the
derived distributed CSR is invalid.
pub fn from_owned_shards(
complete: &CanonicalCsrSystemView,
partition: Partition,
shards: Vec<OwnedLinearSystemShard>,
) -> Result<DistributedLinearSystem, Diagnostic>
pub fn from_owned_shards( complete: &CanonicalCsrSystemView, partition: Partition, shards: Vec<OwnedLinearSystemShard>, ) -> Result<DistributedLinearSystem, Diagnostic>
Build the distributed system from already assembled owned rows and their owner map.
Each shard is compared bit for bit with the complete system before it is used. The partition must own exactly the rows carried by the shards; this constructor never rebalances or re-partitions.
§Errors
Returns EQ0807 for a missing, duplicate, misowned, reordered, or
numerically different shard, or for disagreement with the complete
canonical system.
pub const fn operator(&self) -> &DistributedCsr
pub const fn operator(&self) -> &DistributedCsr
Derived distributed CSR, including partition, shards, and halo plan.
pub fn complete_right_hand_side(&self) -> &[f64]
pub fn complete_right_hand_side(&self) -> &[f64]
Complete finite RHS in global-index order.
pub const fn properties(&self) -> LinearOperatorProperties
pub const fn properties(&self) -> LinearOperatorProperties
Asserted mathematical properties inherited from the complete view.
pub const fn system_identity(&self) -> CanonicalCsrAgreementFingerprintV1
pub const fn system_identity(&self) -> CanonicalCsrAgreementFingerprintV1
Agreement fingerprint of the complete system.
pub const fn partition_identity(&self) -> PartitionAgreementIdentityV1
pub const fn partition_identity(&self) -> PartitionAgreementIdentityV1
Agreement identity of the owner map.
pub const fn layout_identity(&self) -> DistributedLayoutAgreementIdentityV1
pub const fn layout_identity(&self) -> DistributedLayoutAgreementIdentityV1
Agreement identity of the derived layout and halo plan.
pub fn matches_complete(&self, complete: &CanonicalCsrSystemView) -> bool
pub fn matches_complete(&self, complete: &CanonicalCsrSystemView) -> bool
Whether complete is the system this was built from, including its
CSR, right-hand side, and asserted properties.
pub fn local_problem(
&self,
partition: PartitionId,
) -> Result<DistributedLinearProblem<'_>, Diagnostic>
pub fn local_problem( &self, partition: PartitionId, ) -> Result<DistributedLinearProblem<'_>, Diagnostic>
Borrow one rank-local problem in that layout’s explicit owned order.
§Errors
Returns EQ0802 for an unknown partition or an internal projection
contradiction.
pub fn admission_fingerprint(
&self,
plan: SolverPlan,
) -> Result<DistributedAdmissionFingerprintV1, Diagnostic>
pub fn admission_fingerprint( &self, plan: SolverPlan, ) -> Result<DistributedAdmissionFingerprintV1, Diagnostic>
Validate the distributed numerical policy and derive the fixed-size fingerprint that all partitions must agree on before solving.
§Errors
Returns EQ0807 unless the algorithm accepts the asserted operator,
the distributed contract implements the requested preconditioner, and
an available positive Jacobi diagonal exists when requested.
Trait Implementations§
§impl Debug for DistributedLinearSystem
impl Debug for DistributedLinearSystem
§impl PartialEq for DistributedLinearSystem
impl PartialEq for DistributedLinearSystem
§fn eq(&self, other: &DistributedLinearSystem) -> bool
fn eq(&self, other: &DistributedLinearSystem) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for DistributedLinearSystem
Auto Trait Implementations§
impl Freeze for DistributedLinearSystem
impl RefUnwindSafe for DistributedLinearSystem
impl Send for DistributedLinearSystem
impl Sync for DistributedLinearSystem
impl Unpin for DistributedLinearSystem
impl UnsafeUnpin for DistributedLinearSystem
impl UnwindSafe for DistributedLinearSystem
Blanket Implementations§
Source§impl<T> Any for Twhere
T: 'static + ?Sized,
impl<T> Any for Twhere
T: 'static + ?Sized,
§impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
impl<Src, Scheme> ApproxFrom<Src, Scheme> for Srcwhere
Scheme: ApproxScheme,
§fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
fn approx_from(src: Src) -> Result<Src, <Src as ApproxFrom<Src, Scheme>>::Err>
§impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
impl<Dst, Src, Scheme> ApproxInto<Dst, Scheme> for Srcwhere
Dst: ApproxFrom<Src, Scheme>,
Scheme: ApproxScheme,
§type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
type Err = <Dst as ApproxFrom<Src, Scheme>>::Err
§fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
fn approx_into(self) -> Result<Dst, <Src as ApproxInto<Dst, Scheme>>::Err>
Source§impl<T> Borrow<T> for Twhere
T: ?Sized,
impl<T> Borrow<T> for Twhere
T: ?Sized,
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
§impl<T, Dst> ConvAsUtil<Dst> for T
impl<T, Dst> ConvAsUtil<Dst> for T
§fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§impl<T> ConvUtil for T
impl<T> ConvUtil for T
§fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
fn approx_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst>,
§fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
fn approx_as_by<Dst, Scheme>(self) -> Result<Dst, Self::Err>where
Self: Sized + ApproxInto<Dst, Scheme>,
Scheme: ApproxScheme,
§fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
fn into_as<Dst>(self) -> Dstwhere
Self: Sized + Into<Dst>,
§fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
fn try_as<Dst>(self) -> Result<Dst, Self::Err>where
Self: Sized + TryInto<Dst>,
§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
fn rand<T>(&self, rng: &mut (impl Rng + ?Sized)) -> Twhere
Self: Distribution<T>,
Source§impl<T> From<T> for T
impl<T> From<T> for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T, U> Into<U> for Twhere
U: From<T>,
impl<T, U> Into<U> for Twhere
U: From<T>,
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>
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>where
F: FnOnce(&Self) -> bool,
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>where
F: FnOnce(&Self) -> bool,
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§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Same for T
impl<T> Same for T
§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.