Struct DistributedLinearSystem
pub struct DistributedLinearSystem { /* private fields */ }Description
Complete algebraic source lowered into one validated distributed layout.
The complete matrix is represented by its Eqiora-owned CSR agreement
identity while DistributedCsr owns the derived row shards. The finite
complete RHS and its rank-local projections are retained here. Mesh,
assembly, transport, reconstruction, and solver policy remain outside this
contract.
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 violates its closed contract.
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>
Promote already assembled owned rows into the unique distributed system for their accepted owner map.
Every shard is compared bit-for-bit with the complete verifier before it can enter the operator. The supplied partition must own exactly the rows carried by the shards; there is no balancing or secondary partition choice in this constructor.
§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
Exact complete-system algebraic agreement identity.
pub const fn partition_identity(&self) -> PartitionAgreementIdentityV1
pub const fn partition_identity(&self) -> PartitionAgreementIdentityV1
Exact owner-map agreement identity.
pub const fn layout_identity(&self) -> DistributedLayoutAgreementIdentityV1
pub const fn layout_identity(&self) -> DistributedLayoutAgreementIdentityV1
Exact derived layout/halo agreement identity.
pub fn matches_complete(&self, complete: &CanonicalCsrSystemView) -> bool
pub fn matches_complete(&self, complete: &CanonicalCsrSystemView) -> bool
Confirm that a supplied complete view is the exact captured algebraic source, including CSR, RHS, and property assertion.
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 exact fixed-size collective admission fingerprint.
§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
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.