Struct PureOperatorDefinition
pub struct PureOperatorDefinition { /* private fields */ }Description
A capture-free operator definition within the size limits, identified by content.
Implementations§
§impl PureOperatorDefinition
impl PureOperatorDefinition
pub fn instantiate<'a, I>(
&'a self,
arguments: &[ExpressionType<I>],
) -> Result<PureOperatorInstantiation<'a, I>, PureOperatorError>where
I: Clone + Eq,
pub fn instantiate<'a, I>(
&'a self,
arguments: &[ExpressionType<I>],
) -> Result<PureOperatorInstantiation<'a, I>, PureOperatorError>where
I: Clone + Eq,
Derive and validate one typed application.
Rational polynomial definitions embed real inputs into the common real/complex scalar domain without changing dimension or component roles.
§Errors
Rejects arity, shape, frame, support, and result-rule mismatches before any lowered component expansion.
§impl PureOperatorDefinition
impl PureOperatorDefinition
pub fn cross_product() -> Result<PureOperatorDefinition, PureOperatorError>
pub fn cross_product() -> Result<PureOperatorDefinition, PureOperatorError>
Bilinear three-dimensional cross product in the right-handed Cartesian frame. Complex inputs use the same algebraic products, without conjugation.
pub fn curl_from_gradient(
dimensions: u32,
operand_rank: u16,
) -> Result<PureOperatorDefinition, PureOperatorError>
pub fn curl_from_gradient( dimensions: u32, operand_rank: u16, ) -> Result<PureOperatorDefinition, PureOperatorError>
Curl of a physical gradient whose final axis is the derivative axis. In 3D this maps grad(vector) to a vector; in 2D it maps grad(vector) to the oriented scalar, or grad(scalar) to (partial_y, -partial_x). The caller keeps the physical gradient node and its support.
pub fn tangential_lift(
dimensions: u32,
) -> Result<PureOperatorDefinition, PureOperatorError>
pub fn tangential_lift( dimensions: u32, ) -> Result<PureOperatorDefinition, PureOperatorError>
Lift a vector so that contracting its final axis with the outward normal n gives n cross u. In 2D the normal contraction is n_xu_y - n_yu_x, an oriented scalar. The normal node determines the boundary and its parent.
pub fn matrix_trace(
extent: u32,
) -> Result<PureOperatorDefinition, PureOperatorError>
pub fn matrix_trace( extent: u32, ) -> Result<PureOperatorDefinition, PureOperatorError>
Algebraic diagonal sum of a full rank-two spatial tensor.
pub fn componentwise_product(
extent: u32,
rank: u16,
) -> Result<PureOperatorDefinition, PureOperatorError>
pub fn componentwise_product( extent: u32, rank: u16, ) -> Result<PureOperatorDefinition, PureOperatorError>
Multiply matching full tensor coordinates without contraction or broadcasting.
pub fn tensor_component(
extent: u32,
indices: &[u32],
) -> Result<PureOperatorDefinition, PureOperatorError>
pub fn tensor_component( extent: u32, indices: &[u32], ) -> Result<PureOperatorDefinition, PureOperatorError>
Select one scalar from full spatial tensor coordinates.
pub fn permute_axes(
extent: u32,
order: &[u16],
) -> Result<PureOperatorDefinition, PureOperatorError>
pub fn permute_axes( extent: u32, order: &[u16], ) -> Result<PureOperatorDefinition, PureOperatorError>
Permute full spatial axes. order[k] identifies input axis of output axis k.
pub fn contract(
extent: u32,
left_rank: u16,
right_rank: u16,
pairs: &[(u16, u16)],
) -> Result<PureOperatorDefinition, PureOperatorError>
pub fn contract( extent: u32, left_rank: u16, right_rank: u16, pairs: &[(u16, u16)], ) -> Result<PureOperatorDefinition, PureOperatorError>
Explicit bilinear contraction, without conjugation or implicit symmetry. Uncontracted left axes precede uncontracted right axes, in their original order. An empty pair list is the outer product, including scalar multiplication.
§impl PureOperatorDefinition
impl PureOperatorDefinition
pub fn canonical_bytes(&self) -> Vec<u8> ⓘ
pub fn canonical_bytes(&self) -> Vec<u8> ⓘ
Canonical byte encoding, which excludes names and package paths.
pub fn digest(&self) -> OperatorDefinitionDigest
pub fn digest(&self) -> OperatorDefinitionDigest
Digest of the canonical encoding, which excludes names and package paths.
pub fn formals(&self) -> &[PureValueClass]
pub fn formals(&self) -> &[PureValueClass]
Formal-argument rules in slot order.
pub const fn result_rule(&self) -> PureValueClass
pub const fn result_rule(&self) -> PureValueClass
Result-type rule.
pub const fn dimension_monomial(&self) -> &FormalDimensionMonomial
pub const fn dimension_monomial(&self) -> &FormalDimensionMonomial
Symbolic body dimension over formal dimensions.
pub fn nodes(&self) -> &[CalculusNode]
pub fn nodes(&self) -> &[CalculusNode]
Calculus nodes in topological order.
pub const fn root(&self) -> CalculusNodeId
pub const fn root(&self) -> CalculusNodeId
Root node of the calculus body.
pub fn symmetric_part() -> Result<PureOperatorDefinition, PureOperatorError>
pub fn symmetric_part() -> Result<PureOperatorDefinition, PureOperatorError>
Standard symmetric-part definition (A[i,j] + A[j,i]) / 2.
pub fn isotropic_lift() -> Result<PureOperatorDefinition, PureOperatorError>
pub fn isotropic_lift() -> Result<PureOperatorDefinition, PureOperatorError>
Standard isotropic lift delta[i,j] * s.
pub fn dyadic_product() -> Result<PureOperatorDefinition, PureOperatorError>
pub fn dyadic_product() -> Result<PureOperatorDefinition, PureOperatorError>
Standard dyadic product a[i] * b[j].
Trait Implementations§
§impl Clone for PureOperatorDefinition
impl Clone for PureOperatorDefinition
§impl Debug for PureOperatorDefinition
impl Debug for PureOperatorDefinition
§impl PartialEq for PureOperatorDefinition
impl PartialEq for PureOperatorDefinition
§fn eq(&self, other: &PureOperatorDefinition) -> bool
fn eq(&self, other: &PureOperatorDefinition) -> bool
self and other values to be equal, and is used by ==.impl Eq for PureOperatorDefinition
impl StructuralPartialEq for PureOperatorDefinition
Auto Trait Implementations§
impl Freeze for PureOperatorDefinition
impl RefUnwindSafe for PureOperatorDefinition
impl Send for PureOperatorDefinition
impl Sync for PureOperatorDefinition
impl Unpin for PureOperatorDefinition
impl UnsafeUnpin for PureOperatorDefinition
impl UnwindSafe for PureOperatorDefinition
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>,
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
impl<Q, K> Equivalent<K> for Qwhere
Q: Eq + ?Sized,
K: Borrow<Q> + ?Sized,
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
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.