pub struct BuildInspection {
pub setup_arrays: HashMap<String, ArrayD<f64>>,
pub observed_exprs: HashMap<String, Expr>,
pub params: HashMap<String, f64>,
pub recurrences: Vec<RecurrenceInfo>,
}Expand description
Build/run observability record — the Rust mirror of the Julia binding’s
BuildInspection (build_evaluator(…; inspect=BuildInspection())). Pass
one to a EsmProblem built with crate::problem::ProblemOptions::inspect (or
ArrayCompiled::solve_inspect) and the run fills it with named
build-time products that are otherwise internal to the runtime:
setup_arrays— the STATE-FREE observed arrays, materialized once at the initial state through the official observed machinery (the observed-materialization pass): the per-pair regrid geometry (A_ij, its row-sumsA_j, the normalized weightsW_ij— RFC §8.1 / esm-spec §8.6.1), const-op mesh factors and their bare-name aliases, and every other build-once array observed whose transitive references reach no state, not, and no external forcing channel. This is the official inspection surface for conformance runners that gate per-pair regridding values (CONFORMANCE_SPEC §5.8) and for §6.6.5 assertions that target a state-free array observed directly (the MPASdiv_fluxmax/min). A state- or time-dependent observed is deliberately ABSENT (its build-time snapshot would be wrong at any later time), so a reader errors rather than consuming a stale field.observed_exprs— every observed rule’s resolved body expression (post subsystem mounting, range resolution, and keyed-factor scoping), exactly as the runtime evaluates it.
Filling the record never changes the run: the returned
crate::simulate::Solution is identical with or without a sink (the
capture is one extra read-only observed-materialization pass at t0).
Fields§
§setup_arrays: HashMap<String, ArrayD<f64>>State-free observed arrays materialized at the initial state, keyed by (possibly flattening-namespaced) observed name.
observed_exprs: HashMap<String, Expr>Resolved observed body expressions, keyed like setup_arrays.
params: HashMap<String, f64>Resolved SCALAR parameter values (model defaults with any overrides
applied), keyed by (flattened) parameter name. Load-time constants, so a
build-time cellwise evaluation (a §6.6.5 analytic reference,
coordinate-expression ic seeding) may bind them into scope — STATE
stays out. The observed-assertion form already binds them (a state-free
observed is materialized into setup_arrays with these values); params
exposes the same map for the reference / ic positions.
recurrences: Vec<RecurrenceInfo>One entry per recognized CAUSAL SELF-REFERENCE (esm-spec §4.3.1.1), so
the interpretation a document’s self-read was given is auditable without
being authored twice. This is what stands in for a declared recur
annotation (RFC §2.1): the recurrence, its axis and its derived maximum
lag are reported, not required.
Trait Implementations§
Source§impl Clone for BuildInspection
impl Clone for BuildInspection
Source§impl Debug for BuildInspection
impl Debug for BuildInspection
Auto Trait Implementations§
impl Freeze for BuildInspection
impl RefUnwindSafe for BuildInspection
impl Send for BuildInspection
impl Sync for BuildInspection
impl Unpin for BuildInspection
impl UnsafeUnpin for BuildInspection
impl UnwindSafe for BuildInspection
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Context for T
impl<T> Context for T
fn vector_from_element<V>(&self, len: usize, value: <V as VectorCommon>::T) -> Vwhere
V: Vector<C = Self>,
fn vector_from_vec<V>(&self, vec: Vec<<V as VectorCommon>::T>) -> Vwhere
V: Vector<C = Self>,
fn vector_zeros<V>(&self, len: usize) -> Vwhere
V: Vector<C = Self>,
fn dense_mat_zeros<V>(
&self,
rows: usize,
cols: usize,
) -> <V as DefaultDenseMatrix>::Mwhere
V: Vector<C = Self> + DefaultDenseMatrix,
Source§impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T> DistributionExt for Twhere
T: ?Sized,
impl<T, U> Imply<T> for U
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> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
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 moreSource§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
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>
self from the equivalent element of its
superset. Read moreSource§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).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.