Struct PortableRealizationGraph
pub struct PortableRealizationGraph { /* private fields */ }Description
Canonical portable DAG projected from one already resolved Realization.
Its canonical wire preserves every graph family currently projected by this crate. Graph validation proves structural closure and solver compatibility. An equation-aware consumer must additionally compare all claimed Semantic identities and mathematical properties with its accepted lowering before this graph can authorize a run or become evidence. Model, Mesh, and provider payloads remain separate content-addressed dependencies.
Implementations§
§impl PortableRealizationGraph
impl PortableRealizationGraph
pub fn with_harmonic_geometry(
self,
motion: &P1HarmonicMeshMotionPolicy,
current_domains: impl IntoIterator<Item = Id<Domain>>,
pullbacks: impl IntoIterator<Item = BackwardEulerRelationStep>,
) -> Result<PortableRealizationGraph, Diagnostic>
pub fn with_harmonic_geometry( self, motion: &P1HarmonicMeshMotionPolicy, current_domains: impl IntoIterator<Item = Id<Domain>>, pullbacks: impl IntoIterator<Item = BackwardEulerRelationStep>, ) -> Result<PortableRealizationGraph, Diagnostic>
Add harmonic coordinate extension and explicit endpoint GCL pullbacks.
current_domains selects current coordinates independently of harmonic
or driven membership. Other selected Domains use reference coordinates.
pullbacks selects the exact transported Relation/Field pairs and their
shared Backward Euler duration. The graph owns their derivative and GCL
transformations; no physical-family name selects a numerical action.
This checks graph structure. Equation lowering and mesh binding still authenticate each selected Field, transport law and conforming trace.
§Errors
Returns EQ0807 for absent or duplicate selections, conflicting geometry,
inconsistent durations or derivatives, or invalid graph closure.
§impl PortableRealizationGraph
impl PortableRealizationGraph
pub fn represented_physical_fields(&self) -> Vec<RepresentedPhysicalField>
pub fn represented_physical_fields(&self) -> Vec<RepresentedPhysicalField>
Complete represented physical Field inventory, including eliminated states.
§impl PortableRealizationGraph
impl PortableRealizationGraph
pub fn to_bytes(&self) -> Result<Vec<u8>, Diagnostic>
pub fn to_bytes(&self) -> Result<Vec<u8>, Diagnostic>
Encode this resolved Plan graph as deterministic canonical JSON bytes.
The payload is portable: it contains no filesystem path, runtime handle, device ordinal, communicator, credential, or deployment binding.
§Errors
Returns EQ0807 if the graph is invalid, a platform count cannot be
represented by the wire, or serialization unexpectedly fails.
pub fn from_bytes(bytes: &[u8]) -> Result<PortableRealizationGraph, Diagnostic>
pub fn from_bytes(bytes: &[u8]) -> Result<PortableRealizationGraph, Diagnostic>
Decode and revalidate one exact portable Plan graph.
Unknown versions, fields, noncanonical JSON, excessive input, malformed identities, disconnected nodes, and invalid numerical combinations fail closed before a graph is returned.
§Errors
Returns EQ0807 when the bytes are not the exact bounded v5 wire.
§impl PortableRealizationGraph
impl PortableRealizationGraph
pub const fn lineage(&self) -> RealizationLineage
pub const fn lineage(&self) -> RealizationLineage
Exact Model and Realization lineage.
pub fn domains(&self) -> &[DomainDiscretizationNode]
pub fn domains(&self) -> &[DomainDiscretizationNode]
Canonically ordered Domain discretizations.
pub fn fields(&self) -> &[FieldRepresentationNode]
pub fn fields(&self) -> &[FieldRepresentationNode]
Canonically ordered Field representations.
pub fn geometry_actions(&self) -> &[GeometryActionNode]
pub fn geometry_actions(&self) -> &[GeometryActionNode]
Canonically ordered sealed moving-geometry actions.
pub fn transformations(&self) -> &[TransformationNode]
pub fn transformations(&self) -> &[TransformationNode]
Canonically ordered numerical transformations.
pub fn systems(&self) -> &[AlgebraicSystemNode]
pub fn systems(&self) -> &[AlgebraicSystemNode]
Connected algebraic systems.
pub fn linear_solves(&self) -> &[LinearSolveNode]
pub fn linear_solves(&self) -> &[LinearSolveNode]
Linear-solver roles.
pub fn nonlinear_solves(&self) -> &[NonlinearSolveNode]
pub fn nonlinear_solves(&self) -> &[NonlinearSolveNode]
Nonlinear-solver roles.
pub fn placements(&self) -> &[PlacementRequirementNode]
pub fn placements(&self) -> &[PlacementRequirementNode]
Portable compute requirements without environment-local ordinals.
pub fn domain(
&self,
id: DomainDiscretizationId,
) -> Option<&DomainDiscretizationNode>
pub fn domain( &self, id: DomainDiscretizationId, ) -> Option<&DomainDiscretizationNode>
Resolve a typed Domain reference.
pub fn field(
&self,
id: FieldRepresentationId,
) -> Option<&FieldRepresentationNode>
pub fn field( &self, id: FieldRepresentationId, ) -> Option<&FieldRepresentationNode>
Resolve a typed Field reference.
pub fn geometry_action(
&self,
id: GeometryActionId,
) -> Option<&GeometryActionNode>
pub fn geometry_action( &self, id: GeometryActionId, ) -> Option<&GeometryActionNode>
Resolve a typed moving-geometry action reference.
pub fn transformation(
&self,
id: TransformationId,
) -> Option<&TransformationNode>
pub fn transformation( &self, id: TransformationId, ) -> Option<&TransformationNode>
Resolve a typed transformation reference.
pub fn system(&self, id: AlgebraicSystemId) -> Option<&AlgebraicSystemNode>
pub fn system(&self, id: AlgebraicSystemId) -> Option<&AlgebraicSystemNode>
Resolve a typed algebraic-system reference.
pub fn linear_solve(&self, id: LinearSolveId) -> Option<&LinearSolveNode>
pub fn linear_solve(&self, id: LinearSolveId) -> Option<&LinearSolveNode>
Resolve a typed linear-solve reference.
pub fn nonlinear_solve(
&self,
id: NonlinearSolveId,
) -> Option<&NonlinearSolveNode>
pub fn nonlinear_solve( &self, id: NonlinearSolveId, ) -> Option<&NonlinearSolveNode>
Resolve a typed nonlinear-solve reference.
pub fn placement(
&self,
id: PlacementRequirementId,
) -> Option<PlacementRequirementNode>
pub fn placement( &self, id: PlacementRequirementId, ) -> Option<PlacementRequirementNode>
Resolve a typed placement reference.
§impl PortableRealizationGraph
impl PortableRealizationGraph
pub fn spatial_regions(
lineage: RealizationLineage,
regions: impl IntoIterator<Item = DomainFieldDiscretization>,
quotients: impl IntoIterator<Item = ConformingTraceQuotient>,
kinematic_step: Option<&BackwardEulerStep>,
discretization: Discretization,
operator_properties: LinearOperatorProperties,
scalar_type: ScalarType,
vector_layout: VectorLayoutKind,
solver: SolverPlan,
nonlinear: Option<NonlinearSolvePlan>,
target: Target,
schedule: ExecutionSchedule,
scaling: SystemScaling,
) -> Result<PortableRealizationGraph, Diagnostic>
pub fn spatial_regions( lineage: RealizationLineage, regions: impl IntoIterator<Item = DomainFieldDiscretization>, quotients: impl IntoIterator<Item = ConformingTraceQuotient>, kinematic_step: Option<&BackwardEulerStep>, discretization: Discretization, operator_properties: LinearOperatorProperties, scalar_type: ScalarType, vector_layout: VectorLayoutKind, solver: SolverPlan, nonlinear: Option<NonlinearSolvePlan>, target: Target, schedule: ExecutionSchedule, scaling: SystemScaling, ) -> Result<PortableRealizationGraph, Diagnostic>
Resolve one graph-native spatial realization for exact Field bindings.
The equation-aware caller supplies the exact Semantic identities and
operator class. This constructor owns graph closure and solver
compatibility; provider capability admission remains a separate step.
None selects a linear root. An explicit nonlinear policy selects a
Newton root and requires a general Jacobian and a compatible linear solver.
§Errors
Returns EQ0807 when the supplied choices cannot form one connected
portable solve graph.
Trait Implementations§
§impl Clone for PortableRealizationGraph
impl Clone for PortableRealizationGraph
§impl Debug for PortableRealizationGraph
impl Debug for PortableRealizationGraph
§impl PartialEq for PortableRealizationGraph
impl PartialEq for PortableRealizationGraph
§fn eq(&self, other: &PortableRealizationGraph) -> bool
fn eq(&self, other: &PortableRealizationGraph) -> bool
self and other values to be equal, and is used by ==.impl StructuralPartialEq for PortableRealizationGraph
Auto Trait Implementations§
impl Freeze for PortableRealizationGraph
impl RefUnwindSafe for PortableRealizationGraph
impl Send for PortableRealizationGraph
impl Sync for PortableRealizationGraph
impl Unpin for PortableRealizationGraph
impl UnsafeUnpin for PortableRealizationGraph
impl UnwindSafe for PortableRealizationGraph
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§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.