Skip to content
Get started

eqiora

← Python API index

Model authoring, numerical plans, execution, and results.

View source

The complete Python example creates model, plan, result, and x. Continue with those objects:

python
print(model.field("x") == x)
print(model.parameter("rate").value)
print(model.render_equations("flow", profile="plain")[0].text)
values = result.series(x).values.numpy()
print(values[-1])

This selects the declared field and parameter by name, displays the equation, and reads the final dimensionless value (about 0.367879). Result arrays are read-only; use values.copy() when you need a writable NumPy array.

See eqiora.lang.Module.

An Eqiora module built in Python; it becomes immutable once emitted or compiled.

Build the typed predicate left == right.

python
def equal(left: _ExpressionLike, right: _ExpressionLike) -> Expression: ...

Build the typed predicate left != right.

python
def not_equal(left: _ExpressionLike, right: _ExpressionLike) -> Expression: ...

Build the typed predicate left < right.

python
def less(left: _ExpressionLike, right: _ExpressionLike) -> Expression: ...

Build the typed predicate left <= right.

python
def less_equal(left: _ExpressionLike, right: _ExpressionLike) -> Expression: ...

Build the typed predicate left > right.

python
def greater(left: _ExpressionLike, right: _ExpressionLike) -> Expression: ...

Build the typed predicate left >= right.

python
def greater_equal(left: _ExpressionLike, right: _ExpressionLike) -> Expression: ...

Build the typed predicate not value.

python
def logical_not(value: _ExpressionLike) -> Expression: ...

Build the typed predicate left and right.

python
def logical_and(left: _ExpressionLike, right: _ExpressionLike) -> Expression: ...

Build the typed predicate left or right.

python
def logical_or(left: _ExpressionLike, right: _ExpressionLike) -> Expression: ...

Installed Eqiora version.

python
__version__: str

Immutable dense one-dimensional CPU float64 or complex128 result buffer.

python
@final
class Array:
def __getitem__(self, index: int, /) -> float | complex: ...
def numpy(self, *, copy: bool | None=None) -> npt.NDArray[np.float64] | npt.NDArray[np.complex128]: ...
def __array__(self, dtype: object | None=None, copy: bool | None=None) -> npt.NDArray[Any]: ...
def __dlpack_device__(self) -> tuple[int, int]: ...
def __dlpack__(self, *, stream: int | None=None, max_version: tuple[int, int] | None=None, dl_device: tuple[int, int] | None=None, copy: bool | None=None) -> object: ...
@property
def device(self) -> str: ...
@property
def device_id(self) -> int: ...
@property
def dtype(self) -> str: ...
@property
def byte_order(self) -> str: ...
@property
def shape(self) -> tuple[int]: ...
@property
def strides(self) -> tuple[int]: ...
@property
def c_contiguous(self) -> bool: ...
@property
def aligned(self) -> bool: ...
@property
def readonly(self) -> bool: ...
@property
def ownership(self) -> str: ...
@property
def origin_copy_occurred(self) -> bool: ...
def __len__(self) -> int: ...

Read-only view of a Formulation written in source, taken from a fresh compilation.

python
@final
class AuthoredFormulation:
@property
def gauge_field_ids(self) -> list[str] | None: ...
@property
def implication(self) -> Literal['strong-implies-weak', 'strong-implies-interval-conservation', 'strong-equivalent-finite']: ...
@property
def assumptions(self) -> list[str]: ...
@property
def name(self) -> str: ...
@property
def test_restrictions(self) -> list[tuple[str, str, list[str], list[tuple[int, int]], str | None]]: ...
@property
def interval(self) -> tuple[str, str, str] | None: ...
@property
def kind(self) -> str: ...
@property
def source_identity(self) -> str: ...
@property
def relation_ids(self) -> list[str]: ...
@property
def domain_id(self) -> str | None: ...
@property
def trial_field_ids(self) -> list[str]: ...
@property
def filename(self) -> str: ...
@property
def source_range(self) -> tuple[int, int]: ...

Which side, lower or upper, a Cartesian boundary domain lies on.

python
@final
class BoundarySide:
Lower: ClassVar[BoundarySide]
Upper: ClassVar[BoundarySide]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Raised when an Eqiora operation is cancelled.

python
class CancellationError(EqioraError):
...

Raised when an adapter lacks a required capability.

python
class CapabilityError(EqioraError):
...

Raised when a versioned or saved value is incompatible with this release.

python
class CompatibilityError(EqioraError):
...

Immutable declaration of an unnamed conserving connection.

python
@final
class Connection:
...

Immutable standalone periodic clock whose period and phase are exact rational seconds.

python
@final
class ClockDomain:
def __new__(cls, *, period_s: Fraction | int, phase_s: Fraction | int=0) -> Self: ...
@property
def id(self) -> str: ...
@property
def period_s(self) -> Fraction: ...
@property
def phase_s(self) -> Fraction: ...

Finite lower and upper bounds, in coherent SI units, for one dimensioned coordinate.

The bounds must be strictly increasing. The interval holds only the bounds and their dimension; the support it is attached to determines which coordinate it describes.

python
@final
class CoordinateInterval:
def __new__(cls, lower: float, upper: float, *, dimension: Dimension) -> Self: ...
@property
def lower(self) -> float: ...
@property
def upper(self) -> float: ...
@property
def dimension(self) -> Dimension: ...
def __eq__(self, other: object, /) -> bool: ...
def __repr__(self) -> str: ...
def __hash__(self) -> int: ...

Step-by-step reference execution of a Model, driven by explicit input tables.

Each advance finishes stabilizing the current execution boundary before returning.

Input Ports, Clocks, and outputs can be selected by their source name or by their ULID in the Model.

python
@final
class ExecutionSession:
def advance(self) -> bool: ...
@property
def progress(self) -> dict[str, float | int]: ...
@property
def activation_sequence(self) -> tuple[tuple[str, ...], ...]: ...
def advance_ticks(self, count: int) -> int: ...
@property
def next_tick(self) -> Fraction | None: ...
def checkpoint(self) -> ExecutionCheckpoint: ...
def across(self, name: str) -> float | None: ...
def through(self, name: str) -> float | None: ...
def field(self, name: str) -> _TypedValue | None: ...
def output(self, name: str, tick_index: int) -> tuple[Fraction, _TypedValue] | None: ...

Exact continuation of reference or supported finite-time execution.

Adaptive checkpoints retain their original Plan, Run and numerical history; reference execution checkpoints currently remain in memory.

python
@final
class ExecutionCheckpoint:
def record(self) -> RecordedTimeCheckpoint: ...
def to_bytes(self) -> bytes: ...
@staticmethod
def from_bytes(plan: Plan, data: bytes, /) -> ExecutionCheckpoint: ...
def write(self, path: str | os.PathLike[str]) -> None: ...
@staticmethod
def read(plan: Plan, path: str | os.PathLike[str], /) -> ExecutionCheckpoint: ...

Immutable declaration of a scalar conserving port.

python
@final
class ConservingPort:
def __new__(cls, name: str, *, domain: PhysicalDomain) -> Self: ...
@property
def name(self) -> str: ...
@property
def domain(self) -> PhysicalDomain: ...

Why a linear solve was considered converged.

python
@final
class ConvergenceReason:
InitialResidualSatisfied: ClassVar[ConvergenceReason]
ResidualToleranceSatisfied: ClassVar[ConvergenceReason]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Which implementation supplied the derivative for an evaluation.

python
@final
class DerivativeImplementation:
AnalyticAssembled: ClassVar[DerivativeImplementation]
OperatorIr: ClassVar[DerivativeImplementation]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Immutable compiler or runtime diagnostic, carrying every field of the underlying Rust diagnostic.

python
@final
class Diagnostic:
@property
def source(self) -> str: ...
@property
def code(self) -> str: ...
@property
def severity(self) -> str: ...
@property
def message(self) -> str: ...
@property
def graph_path(self) -> list[str] | None: ...
@property
def source_span(self) -> tuple[str, int, int] | None: ...
@property
def suggestion(self) -> str | None: ...

Converged evaluation at one parameter point.

python
@final
class DifferentiableEvaluation:
@property
def point(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
def primal(self) -> DifferentiablePrimal: ...
def jvp(self, tangent: Sequence[float | complex | Array | npt.NDArray[np.float64 | np.complex128] | _DLPackProducer]) -> DifferentiableJvp: ...
def vjp(self, cotangent: Sequence[float | complex | Array | npt.NDArray[np.float64 | np.complex128] | _DLPackProducer]) -> DifferentiableVjp: ...
@property
def accepted_unknowns(self) -> Array: ...
def residual_jvp(self, unknown: Array | _Float64Array | _DLPackProducer, parameter: Array | _Float64Array | _DLPackProducer) -> Array: ...
def residual_vjp(self, cotangent: Array | _Float64Array | _DLPackProducer) -> tuple[Array, Array]: ...
def output_partial_jvp(self, unknown: Array | _Float64Array | _DLPackProducer, parameter: Array | _Float64Array | _DLPackProducer) -> Array: ...
def output_partial_vjp(self, cotangent: Array | _Float64Array | _DLPackProducer) -> tuple[Array, Array]: ...

Ordered output leaves and their shape-preserving forward tangent leaves.

python
@final
class DifferentiableJvp:
@property
def output(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
@property
def tangent(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
@property
def evidence(self) -> DifferentiationEvidence: ...

Ordered typed output leaves from a primal evaluation.

python
@final
class DifferentiablePrimal:
@property
def output(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
@property
def evidence(self) -> DifferentiationEvidence: ...

Differentiable map between ordered typed input and output products.

python
@final
class DifferentiableProgram:
@property
def model_digest(self) -> str: ...
@property
def plan_identity(self) -> str: ...
@property
def inputs(self) -> tuple[DifferentiableValueSignature, ...]: ...
@property
def outputs(self) -> tuple[DifferentiableValueSignature, ...]: ...
@property
def dtype(self) -> str: ...
@property
def device(self) -> str: ...
def evaluate(self, parameters: Sequence[float | complex | Array | npt.NDArray[np.float64 | np.complex128] | _DLPackProducer]) -> DifferentiableEvaluation: ...
def map(self, mapped: Sequence[float | complex | Array | npt.NDArray[np.float64 | np.complex128] | _DLPackProducer], *, point_shape: Sequence[int], shared_inputs: Sequence[ParameterRef] | None=None, shared: Sequence[float | complex | Array | npt.NDArray[np.float64 | np.complex128] | _DLPackProducer] | None=None, retained_bytes_limit: int=67108864) -> EvaluationMapPlan: ...
def primal(self) -> DifferentiablePrimal: ...
def jvp(self, tangent: Sequence[float | complex | Array | npt.NDArray[np.float64 | np.complex128] | _DLPackProducer]) -> DifferentiableJvp: ...
def vjp(self, cotangent: Sequence[float | complex | Array | npt.NDArray[np.float64 | np.complex128] | _DLPackProducer]) -> DifferentiableVjp: ...

Ordered output leaves and the shape-preserving input cotangent leaves.

python
@final
class DifferentiableVjp:
@property
def output(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
@property
def input_cotangent(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
@property
def evidence(self) -> DifferentiationEvidence: ...

Exact native Model/type/support identity of one selected numerical leaf.

python
@final
class DifferentiableValueSignature:
@property
def id(self) -> str: ...
@property
def model_digest(self) -> str: ...
@property
def value_type(self) -> ValueType: ...
@property
def shape(self) -> tuple[int, ...]: ...
@property
def mesh_digest(self) -> str | None: ...
@property
def space(self) -> str | None: ...
@property
def coefficient_entities(self) -> tuple[tuple[int, int], ...]: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Completed batch retaining ordinary accepted evaluations or time Results.

python
@final
class CompleteEvaluationMap:
def record(self) -> EvaluationCollection: ...
def __len__(self) -> int: ...
def __getitem__(self, index: int, /) -> DifferentiableEvaluation | Result: ...
@property
def plan(self) -> EvaluationMapPlan: ...
@property
def statuses(self) -> list[str]: ...
def member(self, index: int) -> DifferentiableEvaluation | Result: ...
def primal(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
def jvp(self, mapped: Sequence[float | complex | Array | npt.NDArray[np.float64 | np.complex128] | _DLPackProducer], *, shared: Sequence[float | complex | Array | npt.NDArray[np.float64 | np.complex128] | _DLPackProducer] | None=None, seed_shape: Sequence[int] | None=None, point_axes: Sequence[int] | None=None, numerical_bytes_limit: int=67108864) -> EvaluationMapJvp: ...
def vjp(self, cotangents: Sequence[float | complex | Array | npt.NDArray[np.float64 | np.complex128] | _DLPackProducer], *, seed_shape: Sequence[int] | None=None, point_axes: Sequence[int] | None=None, numerical_bytes_limit: int=67108864) -> EvaluationMapVjp: ...

Ordered groups of exact recorded requests and original outcomes.

python
@final
class EvaluationCollection:
@property
def identity(self) -> str: ...
@property
def complete(self) -> bool: ...
def __len__(self) -> int: ...
def __getitem__(self, index: int, /) -> EvaluationCollectionGroup: ...
@staticmethod
def combine(collections: Sequence[EvaluationCollection]) -> EvaluationCollection: ...
def with_estimator(self, group: int, estimator: MomentEstimator) -> EvaluationCollection: ...
def to_bytes(self) -> bytes: ...
@staticmethod
def from_bytes(data: bytes) -> EvaluationCollection: ...
def write(self, path: str | os.PathLike[str]) -> None: ...
@staticmethod
def read(path: str | os.PathLike[str]) -> EvaluationCollection: ...

One exact ordered request and execution; different Plans stay in separate groups.

python
@final
class EvaluationCollectionGroup:
@property
def estimators(self) -> list[RecordedMomentEstimator]: ...
@property
def execution_id(self) -> str: ...
@property
def request_identity(self) -> str: ...
@property
def complete(self) -> bool: ...
@property
def plan(self) -> Plan: ...
@property
def program_bytes(self) -> bytes | None: ...
@property
def inputs(self) -> tuple[DifferentiableValueSignature, ...] | None: ...
@property
def outputs(self) -> tuple[DifferentiableValueSignature, ...] | None: ...
@property
def shared_input_ids(self) -> list[str] | None: ...
def __len__(self) -> int: ...
def __getitem__(self, index: int, /) -> RecordedEvaluation: ...

Saved typed statistic, exact group membership and declared estimator interpretation.

python
@final
class RecordedMomentEstimator:
@property
def identity(self) -> str: ...
@property
def model_digest(self) -> str: ...
@property
def occurrence_ids(self) -> list[str]: ...
@property
def result_identities(self) -> list[str]: ...
@property
def weights(self) -> list[float]: ...
@property
def reduction(self) -> str: ...
@property
def value(self) -> float: ...
@property
def value_type(self) -> ValueType: ...
@property
def output_indices(self) -> list[int] | None: ...
@property
def time_s(self) -> float | None: ...
@property
def observables(self) -> list[ObservableRef] | None: ...
@property
def gradient_estimator(self) -> str: ...
@property
def gradient_entities(self) -> dict[str, str]: ...

One immutable occurrence with typed accepted output or original terminal status.

python
@final
class RecordedEvaluation:
@property
def occurrence_id(self) -> str: ...
@property
def status(self) -> str: ...
@property
def reference(self) -> str | None: ...
@property
def result(self) -> DifferentiablePrimal | Result | None: ...
@property
def point(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...] | None: ...
@property
def time_request_bytes(self) -> bytes | None: ...
@property
def sampling(self) -> SamplingIdentity | None: ...
@property
def parameter_sample_bytes(self) -> bytes | None: ...
@property
def diagnostics(self) -> list[Diagnostic]: ...
@property
def input_checkpoint(self) -> RecordedTimeCheckpoint | None: ...
@property
def checkpoint(self) -> RecordedTimeCheckpoint | None: ...

Immutable checkpoint content; restore explicitly admits numerical continuation.

python
@final
class RecordedTimeCheckpoint:
@property
def identity(self) -> str: ...
@property
def request_identity(self) -> str: ...
def to_bytes(self) -> bytes: ...
@staticmethod
def from_bytes(plan: Plan, data: bytes, /) -> RecordedTimeCheckpoint: ...
def restore(self) -> ExecutionCheckpoint: ...

Ordered independent parameter evaluations or time Runs, admitted before execution.

python
@final
class EvaluationMapPlan:
@staticmethod
def from_time(plan: Plan, states: Sequence[State], /, *, until_s: float, output_times_s: Sequence[float], master_seed: bytes | None=None, sampling: Sequence[SamplingIdentity] | None=None, checkpoints: Sequence[ExecutionCheckpoint | None] | None=None, chunk_size: int=1, workers: int=1, storage_bytes_limit: int=67108864, member_bytes_limit: int=8388608) -> EvaluationMapPlan: ...
@property
def time_plan(self) -> Plan | None: ...
def __len__(self) -> int: ...
def __getitem__(self, index: int, /) -> tuple[npt.NDArray[np.float64 | np.complex128], ...] | State: ...
@property
def program(self) -> DifferentiableProgram: ...
@property
def point_shape(self) -> tuple[int, ...]: ...
@property
def shared_input_ids(self) -> list[str]: ...
@property
def mapped_input_ids(self) -> list[str]: ...
@property
def estimated_storage_bytes(self) -> int: ...
@property
def points(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
def occurrence_coordinates(self, index: int) -> tuple[int, ...]: ...
def execute(self, *, cancellation: EvaluationMapCancellation | None=None) -> CompleteEvaluationMap | EvaluationMapTerminalReport: ...
def execute_recorded(self, *, cancellation: EvaluationMapCancellation | None=None) -> EvaluationCollection: ...

Members evaluated before a batch failed or was cancelled; it never holds a complete primal or derivative product.

python
@final
class EvaluationMapTerminalReport:
def record(self) -> EvaluationCollection: ...
def __len__(self) -> int: ...
def __getitem__(self, index: int, /) -> DifferentiableEvaluation | Result | None: ...
@property
def plan(self) -> EvaluationMapPlan: ...
@property
def stopped_index(self) -> int: ...
@property
def cancelled(self) -> bool: ...
@property
def diagnostics(self) -> list[Diagnostic]: ...
@property
def statuses(self) -> list[str]: ...
def member(self, index: int) -> DifferentiableEvaluation | Result | None: ...
def checkpoint(self, index: int) -> ExecutionCheckpoint | None: ...

Cancellation token, checked between batch members.

python
@final
class EvaluationMapCancellation:
def __init__(self) -> None: ...
def cancel(self) -> None: ...
@property
def requested(self) -> bool: ...

JVPs with ordered immutable output leaves; shape describes point and seed axes only.

python
@final
class EvaluationMapJvp:
@property
def plan(self) -> EvaluationMapPlan: ...
@property
def seed_shape(self) -> tuple[int, ...]: ...
@property
def point_axes(self) -> tuple[int, ...]: ...
@property
def shape(self) -> tuple[int, ...]: ...
@property
def output(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
@property
def tangent(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
def member(self, index: int) -> DifferentiableJvp: ...

VJPs with ordered immutable input leaves; shared covectors sum over point axes.

Shapes describe collection axes only; each leaf retains its intrinsic shape.

python
@final
class EvaluationMapVjp:
@property
def plan(self) -> EvaluationMapPlan: ...
@property
def seed_shape(self) -> tuple[int, ...]: ...
@property
def point_axes(self) -> tuple[int, ...]: ...
@property
def shared_shape(self) -> tuple[int, ...]: ...
@property
def mapped_shape(self) -> tuple[int, ...]: ...
@property
def shared_input_ids(self) -> list[str]: ...
@property
def mapped_input_ids(self) -> list[str]: ...
@property
def shared_cotangents(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
@property
def mapped_cotangents(self) -> tuple[npt.NDArray[np.float64 | np.complex128], ...]: ...
def member(self, index: int) -> DifferentiableVjp: ...

Provenance of one differentiation: model, plan, solve summaries, and residual.

python
@final
class DifferentiationEvidence:
@property
def model_digest(self) -> str: ...
@property
def plan_identity(self) -> str: ...
@property
def input_ids(self) -> list[str]: ...
@property
def output_ids(self) -> list[str]: ...
@property
def mode(self) -> DifferentiationMode: ...
@property
def implementation(self) -> DerivativeImplementation: ...
@property
def linearization_state(self) -> LinearizationState: ...
@property
def state_system_fingerprint(self) -> str: ...
@property
def primal_residual_norm(self) -> float: ...
@property
def residual_tolerance(self) -> float: ...
@property
def primal_solve(self) -> LinearSolveSummary | NonlinearSolveSummary: ...
@property
def initial_state_identity(self) -> str | None: ...
@property
def derivative_solve(self) -> LinearSolveSummary | None: ...

Kind of differentiation: primal, JVP, or VJP.

python
@final
class DifferentiationMode:
Primal: ClassVar[DifferentiationMode]
Jvp: ClassVar[DifferentiationMode]
Vjp: ClassVar[DifferentiationMode]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

SI base-dimension exponents in M, L, T, I, Θ, N, J order.

python
@final
class Dimension:
def __new__(cls, *, mass: int | Fraction=0, length: int | Fraction=0, time: int | Fraction=0, current: int | Fraction=0, temperature: int | Fraction=0, amount: int | Fraction=0, luminous_intensity: int | Fraction=0) -> Self: ...
@property
def exponents(self) -> tuple[Fraction, Fraction, Fraction, Fraction, Fraction, Fraction, Fraction]: ...
def __eq__(self, other: object, /) -> bool: ...
def __ne__(self, other: object, /) -> bool: ...

Type of a value: scalar domain, dimension, shape, and spatial frame.

python
@final
class ValueType:
def to_eqi(self) -> str: ...
def render(self, profile: Literal['latex', 'mathml', 'unicode', 'plain', 'speech']='latex') -> MathRendering: ...
@staticmethod
def integer() -> ValueType: ...
@staticmethod
def boolean() -> ValueType: ...
@staticmethod
def real(dimension: Dimension | None=None) -> ValueType: ...
@staticmethod
def complex(dimension: Dimension | None=None) -> ValueType: ...
@staticmethod
def coordinates(scalar: ValueType, space: FiniteSpace, *, dual: bool=False) -> ValueType: ...
@staticmethod
def linear_map(scalar: ValueType, source: FiniteSpace, target: FiniteSpace, *, source_dual: bool=False, target_dual: bool=False) -> ValueType: ...
@staticmethod
def counts(space: FiniteSpace) -> ValueType: ...
@staticmethod
def index(set: IndexSet) -> ValueType: ...
@staticmethod
def vector(scalar: ValueType, extent: int) -> ValueType: ...
@staticmethod
def tensor(scalar: ValueType, *extents: int) -> ValueType: ...
@staticmethod
def array(element: ValueType, extent: int) -> ValueType: ...
@property
def scalar_domain(self) -> Literal['real', 'complex', 'integer', 'boolean', 'enum']: ...
@property
def dimension(self) -> Dimension: ...
@property
def shape(self) -> list[int]: ...
@property
def array_rank(self) -> int: ...
@property
def frame(self) -> Literal['invariant', 'spatial_cartesian']: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Enum declaration with a fixed set of members. A replayed enum may have no name.

python
@final
class Enum:
def __new__(cls, name: str, *, members: Sequence[str]) -> Self: ...
@property
def name(self) -> str | None: ...
@property
def id(self) -> str: ...
@property
def members(self) -> tuple[str, ...]: ...
@property
def value_type(self) -> ValueType: ...
def member(self, name: str) -> EnumValue: ...

Enum member. It does not convert to a number or a Boolean.

python
@final
class EnumValue:
@property
def value_type(self) -> ValueType: ...
@property
def enum_id(self) -> str: ...
def __bool__(self) -> bool: ...

Named finite basis with ordered labels. It is unrelated to finite-element spaces.

python
@final
class FiniteSpace:
def __new__(cls, name: str, *, labels: list[str] | tuple[str, ...]) -> Self: ...
@staticmethod
def product(name: str, left: FiniteSpace, right: FiniteSpace) -> FiniteSpace: ...
@property
def factors(self) -> tuple[FiniteSpace, FiniteSpace] | None: ...
@property
def name(self) -> str: ...
@property
def id(self) -> str: ...
@property
def labels(self) -> tuple[str, ...] | None: ...

Named, zero-based index set with a fixed positive size.

python
@final
class IndexSet:
def __new__(cls, name: str, *, extent: int) -> Self: ...
@property
def name(self) -> str: ...
@property
def id(self) -> str: ...
@property
def extent(self) -> int: ...

Domain selected from an immutable Model.

python
@final
class DomainRef:
@property
def model_digest(self) -> str: ...
@property
def id(self) -> str: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Cartesian box, or one of its oriented boundaries, used while building a Model draft.

python
@final
class Domain:
@staticmethod
def box(name: str, *bounds: tuple[float, float]) -> Domain: ...
def boundary(self, name: str, *, axis: int, side: BoundarySide) -> Domain: ...
@property
def name(self) -> str: ...
@property
def bounds(self) -> list[tuple[float, float]] | None: ...
@property
def parent(self) -> Domain | None: ...
@property
def axis(self) -> int | None: ...
@property
def side(self) -> BoundarySide | None: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Base class for Eqiora errors; diagnostics explains what was rejected.

python
class EqioraError(Exception):
category: str
diagnostics: tuple[Diagnostic, ...]

Failure during execution.

python
class ExecutionError(EqioraError):
...

Symbolic expression. Its shape and support are inferred when it is built.

python
@final
class Expression:
def __getitem__(self, index: int | slice, /) -> Expression: ...
def __neg__(self) -> Expression: ...
def __add__(self, right: _ExpressionLike, /) -> Expression: ...
def __radd__(self, left: _ExpressionLike, /) -> Expression: ...
def __sub__(self, right: _ExpressionLike, /) -> Expression: ...
def __rsub__(self, left: _ExpressionLike, /) -> Expression: ...
def __mul__(self, right: _ExpressionLike, /) -> Expression: ...
def __rmul__(self, left: _ExpressionLike, /) -> Expression: ...
def __truediv__(self, right: _ExpressionLike, /) -> Expression: ...
def __rtruediv__(self, left: _ExpressionLike, /) -> Expression: ...
def __bool__(self) -> bool: ...

Immutable typed field declaration.

python
@final
class Field:
def __new__(cls, name: str, *, domain: Domain | None=None, role: FieldRole, value_type: ValueType | None=None, spatial_regularity: SpatialRegularity=SpatialRegularity.Unspecified) -> Self: ...
@property
def spatial_regularity(self) -> SpatialRegularity: ...
@property
def name(self) -> str: ...
@property
def dimension(self) -> Dimension: ...
@property
def role(self) -> FieldRole: ...
@property
def value_type(self) -> ValueType: ...
@property
def domain(self) -> Domain | None: ...
def __getitem__(self, index: int | slice, /) -> Expression: ...
def __neg__(self) -> Expression: ...
def __add__(self, right: _ExpressionLike, /) -> Expression: ...
def __radd__(self, left: _ExpressionLike, /) -> Expression: ...
def __sub__(self, right: _ExpressionLike, /) -> Expression: ...
def __rsub__(self, left: _ExpressionLike, /) -> Expression: ...
def __mul__(self, right: _ExpressionLike, /) -> Expression: ...
def __rmul__(self, left: _ExpressionLike, /) -> Expression: ...
def __truediv__(self, right: _ExpressionLike, /) -> Expression: ...
def __rtruediv__(self, left: _ExpressionLike, /) -> Expression: ...
def __bool__(self) -> bool: ...

Computed coefficients of one Model Field on one Mesh.

python
@final
class FieldOutput:
@property
def field(self) -> FieldRef: ...
@property
def mesh(self) -> meshing.Mesh: ...
@property
def dimension(self) -> tuple[Fraction, Fraction, Fraction, Fraction, Fraction, Fraction, Fraction]: ...
@property
def coefficient_dimension(self) -> tuple[Fraction, Fraction, Fraction, Fraction, Fraction, Fraction, Fraction]: ...
@property
def value_shape(self) -> tuple[int, ...]: ...
@property
def space(self) -> str: ...
@property
def associations(self) -> tuple[str, ...]: ...
def values(self, association: str, /) -> Array: ...
def coefficient_count(self, association: str, /) -> int: ...
def logical_shape(self, association: str, /) -> tuple[int, ...]: ...

Field selected from an immutable model.

python
@final
class FieldRef:
@property
def model_digest(self) -> str: ...
@property
def id(self) -> str: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Mathematical formulation chosen when the Model was resolved into a Plan.

python
@final
class FormulationView:
@property
def requested(self) -> FormulationSelectionMode: ...
@property
def effective(self) -> FormulationKind: ...
@property
def boundary_treatment(self) -> str: ...
@property
def rule_ids(self) -> list[str]: ...
@property
def selection_reason_codes(self) -> list[str]: ...
@property
def requested_source_identity(self) -> str | None: ...
@property
def source_relation_id(self) -> str | None: ...
@property
def state_coordinates(self) -> tuple[tuple[FieldRef, int, int, bool], ...]: ...
def __repr__(self) -> str: ...

Formulation families that a resolved Plan can use.

FirstOrderEvolution is the first-order form produced by automatic time normalization.

python
@final
class FormulationKind:
FiniteHermitianPencil: ClassVar[FormulationKind]
FirstOrderEvolution: ClassVar[FormulationKind]
HarmonicResponse: ClassVar[FormulationKind]
PrimalGalerkin: ClassVar[FormulationKind]
MixedGalerkin: ClassVar[FormulationKind]
IntegralConservative: ClassVar[FormulationKind]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Whether a Formulation was selected automatically or supplied explicitly.

python
@final
class FormulationSelectionMode:
Automatic: ClassVar[FormulationSelectionMode]
Exact: ClassVar[FormulationSelectionMode]
Authored: ClassVar[FormulationSelectionMode]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Initial coefficients for one Field, in coherent SI units.

python
@final
class InitialField:
def __new__(cls, field: FieldRef, /, *, vertex_values: object | None=None, cell_values: object | None=None, value: object | None=None) -> InitialField: ...
@property
def field(self) -> FieldRef: ...

Unexpected internal failure; implementation details are not exposed.

python
class InternalError(EqioraError):
...

Linear-solve convergence report.

python
@final
class LinearSolveSummary:
@property
def backend(self) -> str: ...
@property
def adapter(self) -> str: ...
@property
def verification_adapter(self) -> str: ...
@property
def orientation(self) -> str: ...
@property
def algorithm(self) -> str: ...
@property
def preconditioner(self) -> str: ...
@property
def reduction(self) -> str: ...
@property
def relative_tolerance(self) -> float: ...
@property
def absolute_tolerance(self) -> float: ...
@property
def maximum_iterations(self) -> int: ...
@property
def reason(self) -> ConvergenceReason: ...
@property
def completed_iterations(self) -> int: ...
@property
def initial_residual_norm(self) -> float: ...
@property
def reported_residual_norm(self) -> float: ...
@property
def true_residual_norm(self) -> float: ...
@property
def residual_target(self) -> float: ...

Convergence report for a Newton solve, measured on the original residual.

python
@final
class NonlinearSolveSummary:
@property
def completed_iterations(self) -> int: ...
@property
def initial_residual_norm(self) -> float: ...
@property
def true_residual_norm(self) -> float: ...
@property
def residual_target(self) -> float: ...
@property
def linear_solves(self) -> tuple[LinearSolveSummary, ...] | None: ...

Whether the linearization was computed afresh or reused.

python
@final
class LinearizationState:
Established: ClassVar[LinearizationState]
Reused: ClassVar[LinearizationState]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Model declarations and operators that part of a rendering refers to; the same for every profile.

python
@final
class MathReference:
def __repr__(self) -> str: ...
@property
def graph_id(self) -> str | None: ...
@property
def role(self) -> str | None: ...
@property
def declarations(self) -> tuple[str, ...]: ...
@property
def operator(self) -> str | None: ...

Rendered equation or type, with plain-text and spoken alternatives and references back to the Model.

If used_fallback is true, text is plain text rather than rich markup.

python
@final
class MathRendering:
def __repr__(self) -> str: ...
@property
def profile(self) -> str: ...
@property
def text(self) -> str: ...
@property
def plain(self) -> str: ...
@property
def speech(self) -> str: ...
@property
def used_fallback(self) -> bool: ...
@property
def references(self) -> tuple[MathReference, ...]: ...

Compiled model with all references resolved. A Model is immutable; commit returns a new one.

python
@final
class Model:
@staticmethod
def from_bytes(data: bytes) -> Model: ...
@staticmethod
def read(path: str | PathLike[str]) -> Model: ...
def to_bytes(self) -> bytes: ...
def write(self, path: str | PathLike[str]) -> None: ...
def preview_value_edit(self, target: str, value: _TypedValue) -> ValueEdit: ...
def commit(self, edit: ValueEdit) -> Model: ...
def execution_session(self, *, end_time_s: float, max_step_s: float, inputs: dict[str, tuple[str, list[_TypedValue] | tuple[_TypedValue, ...]]]) -> ExecutionSession: ...
def resume_execution(self, checkpoint: ExecutionCheckpoint) -> ExecutionSession: ...
def enum(self, selection: str) -> Enum: ...
def parameter(self, selection: str) -> ParameterRef: ...
def field(self, selection: str) -> FieldRef: ...
def activation(self, selection: str) -> ActivationRef: ...
def observable(self, selection: str) -> ObservableRef: ...
def constraint(self, selection: str, ordinal: int) -> ConstraintRef: ...
def domain(self, selection: str) -> DomainRef: ...
def notation_labels(self, profile: Literal['latex', 'mathml', 'unicode', 'plain', 'speech']='latex', *, identities: Sequence[str] | None=None) -> tuple[QuantityLabel, ...]: ...
def render_equations(self, relation: str, profile: Literal['latex', 'mathml', 'unicode', 'plain', 'speech']='latex') -> tuple[MathRendering, ...]: ...
def render_formulations(self, profile: Literal['latex', 'mathml', 'unicode', 'plain', 'speech']='latex') -> tuple[MathRendering, ...]: ...
def structurally_equivalent(self, other: Model) -> bool: ...
@property
def digest(self) -> str: ...
@property
def package_compilation_digest(self) -> str | None: ...
@property
def property_bindings(self) -> tuple[PropertyBinding, ...]: ...
@property
def authored_formulations(self) -> tuple[AuthoredFormulation, ...]: ...
@property
def structural_fingerprint(self) -> StructuralSemanticFingerprint: ...
@property
def revision(self) -> Revision: ...
@property
def model_id(self) -> str: ...
@property
def field_ids(self) -> list[str]: ...
@property
def parameter_ids(self) -> list[str]: ...
@property
def domain_ids(self) -> list[str]: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Typed statistic over the complete supplied collection of accepted time Results.

Every member must use the same exact Plan and retain the requested time. Values use coherent SI units; variance squares the input units and covariance multiplies them. No interpolation or failed-member filtering occurs. assume_iid=True is the caller’s IID and finite-moment assumption. It also requires equal positive weights and distinct uncoupled identities from one initial State, horizon and seed/channel. Standard error estimates uncertainty of an IID mean; it is not a confidence interval or a discretization-error bound. This operation confers no trajectory derivatives.

python
@final
class MomentEstimator:
@staticmethod
def from_time_results(results: Sequence[Result], outputs: Sequence[ObservableRef], /, *, time_s: float, moment: Literal['mean', 'variance', 'covariance', 'sum']='mean', assume_iid: bool=False, weights: Sequence[float] | None=None) -> MomentEstimator: ...
@property
def value(self) -> _TypedValue: ...
@property
def value_type(self) -> ValueType: ...
def standard_error(self) -> _TypedValue: ...
@property
def time_s(self) -> float: ...
@property
def weights(self) -> list[float]: ...
@property
def model_digest(self) -> str: ...
@property
def observables(self) -> list[ObservableRef]: ...
@property
def result_identities(self) -> list[str]: ...
@property
def sampling_identities(self) -> list[SamplingIdentity | None]: ...
@property
def reduction(self) -> Literal['sum', 'empirical-mean', 'empirical-variance', 'empirical-covariance', 'iid-mean', 'iid-variance', 'iid-covariance']: ...

Identity fields for one package in a conformance report.

python
class PackageConformancePackage(NamedTuple):
name: str
version: str
semantic_digest: str
source_digest: str

Conformance report for a locked package and its dependencies.

python
class PackageConformanceReport(NamedTuple):
profile: str
eqiora_version: str
compiler: str
compiler_version: str
semantic_canonicalization_version: int
source_bundle_version: int
resolution_version: int
root_package: PackageConformancePackage
packages: tuple[PackageConformancePackage, ...]
entry_model: str
resolution_digest: str
package_compilation_digest: str
model_id: str
model_revision: int
model_digest: str
deterministic_replay_agreement: bool

Typed parameter declaration with its value.

A Parameter is uniform in space; use a Field for values that vary. A nonzero spatial vector or tensor value needs a frame Domain registered in the Model.

python
@final
class Parameter:
def __new__(cls, name: str, *, value: _TypedValue, value_type: ValueType | None=None, frame: Domain | None=None) -> Self: ...
@property
def name(self) -> str: ...
@property
def dimension(self) -> Dimension: ...
@property
def value(self) -> _TypedValue: ...
@property
def value_type(self) -> ValueType: ...
def __getitem__(self, index: int | slice, /) -> Expression: ...
def __neg__(self) -> Expression: ...
def __add__(self, right: _ExpressionLike, /) -> Expression: ...
def __radd__(self, left: _ExpressionLike, /) -> Expression: ...
def __sub__(self, right: _ExpressionLike, /) -> Expression: ...
def __rsub__(self, left: _ExpressionLike, /) -> Expression: ...
def __mul__(self, right: _ExpressionLike, /) -> Expression: ...
def __rmul__(self, left: _ExpressionLike, /) -> Expression: ...
def __truediv__(self, right: _ExpressionLike, /) -> Expression: ...
def __rtruediv__(self, left: _ExpressionLike, /) -> Expression: ...
def __bool__(self) -> bool: ...

Output derived from the solution; it is not an unknown of the solve.

python
@final
class Observable:
def __new__(cls, name: str, *, value_type: ValueType, expression: _ExpressionLike) -> Self: ...
@property
def name(self) -> str: ...
@property
def value_type(self) -> ValueType: ...
@property
def expression(self) -> Expression: ...
def __neg__(self) -> Expression: ...
def __bool__(self) -> bool: ...
def __add__(self, other: _ExpressionLike, /) -> Expression: ...
def __radd__(self, other: _ExpressionLike, /) -> Expression: ...
def __sub__(self, other: _ExpressionLike, /) -> Expression: ...
def __rsub__(self, other: _ExpressionLike, /) -> Expression: ...
def __mul__(self, other: _ExpressionLike, /) -> Expression: ...
def __rmul__(self, other: _ExpressionLike, /) -> Expression: ...
def __truediv__(self, other: _ExpressionLike, /) -> Expression: ...
def __rtruediv__(self, other: _ExpressionLike, /) -> Expression: ...

Observable selected from a Model.

python
@final
class ObservableRef:
@property
def model_digest(self) -> str: ...
@property
def id(self) -> str: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

One inequality or complementarity condition in a Model.

python
@final
class ConstraintRef:
@property
def model_digest(self) -> str: ...
@property
def relation_id(self) -> str: ...
@property
def ordinal(self) -> int: ...
@property
def kind(self) -> Literal['inequality', 'complementarity']: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Both sides of a constraint evaluated on the result, with their units and whether the constraint is active.

python
@final
class ConstraintMeasurement:
@property
def reference(self) -> ConstraintRef: ...
@property
def activity(self) -> Literal['active', 'inactive', 'biactive', 'inequality']: ...
@property
def left_value(self) -> float: ...
@property
def right_value(self) -> float: ...
@property
def left_dimension(self) -> Dimension: ...
@property
def right_dimension(self) -> Dimension: ...
@property
def left_tolerance(self) -> float: ...
@property
def right_tolerance(self) -> float | None: ...

Event-guard activation selected from a Model.

python
@final
class ActivationRef:
@property
def model_digest(self) -> str: ...
@property
def id(self) -> str: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Value of an Observable evaluated on a Result, with the quadrature that was used.

quadratures maps Domain IDs to (kind, dimension, points per axis). Point boundaries use one point. Values are expressed in SI units. output is (retained output position, time in seconds, State identity), or None for an instantaneous Result.

python
@final
class Observation:
def project_component(self, projection: Literal['real', 'imaginary', 'magnitude', 'squared_magnitude', 'phase'], index: int=0) -> tuple[float, Dimension] | None: ...
@property
def value(self) -> _TypedValue: ...
@property
def value_type(self) -> ValueType: ...
@property
def point(self) -> tuple[str, list[tuple[float, Dimension]]] | None: ...
@property
def output(self) -> tuple[int, float, str] | None: ...
@property
def result_identity(self) -> str: ...
@property
def observable_id(self) -> str: ...
@property
def evaluation_kind(self) -> Literal['value', 'parameter-jvp', 'state-jvp', 'state-second-variation']: ...
@property
def quadratures(self) -> dict[str, tuple[Literal['Point', 'GaussLegendre', 'SimplexDuffyGaussLegendre'], int, int]]: ...

Converged eigenvalue and mode, linked to their Fields and Result.

python
@final
class Eigenpair:
def field(self, field: FieldRef) -> tuple[Any, ValueType]: ...
@property
def eigenvalue(self) -> float: ...
@property
def mode(self) -> tuple[float | complex, ...]: ...
@property
def eigenvalue_type(self) -> ValueType: ...
@property
def mode_type(self) -> ValueType: ...
@property
def eigenvalue_field(self) -> FieldRef: ...
@property
def mode_field(self) -> FieldRef: ...
@property
def result_identity(self) -> str: ...
@property
def relative_residual(self) -> float: ...
@property
def normalization_defect(self) -> float: ...

Terminal value or temporal reduction of an Observable over a computed trajectory.

Values use coherent SI units. A time integral has the Observable’s dimension multiplied by seconds and is computed from the solver’s accepted steps, not from the saved output samples. Extrema retain the original units and return extremum_time_s. Closed windows include both event sides; exact computed ties choose earliest time then accepted occurrence. No extrema derivatives or continuous-solution error bounds are implied.

python
@final
class TrajectoryObservation:
@property
def spatial_quadratures(self) -> dict[str, tuple[str, int, int]]: ...
@property
def extremum_time_s(self) -> float | None: ...
@property
def interval_s(self) -> tuple[float, float]: ...
@property
def endpoint_convention(self) -> str: ...
@property
def value(self) -> _TypedValue: ...
@property
def value_type(self) -> ValueType: ...
@property
def result_identity(self) -> str: ...
@property
def trajectory_identity(self) -> str: ...
@property
def observable_id(self) -> str: ...
@property
def evaluation_kind(self) -> Literal['terminal', 'time-integral', 'terminal-parameter-jvp', 'time-integral-parameter-jvp', 'time-minimum', 'time-maximum']: ...
@property
def interpolation(self) -> time.TimeObservationInterpolation | None: ...
@property
def parameter_jvp(self) -> bool: ...

Discrete Fourier transform of uniformly spaced samples of an Observable.

The forward transform uses a +i exponent with a 1/N factor and the inverse a -i exponent; phases are measured from the first sample. Coefficients and amplitudes keep the input units, power squares them, and power density and the rectangle-transform estimate multiply them by seconds. reconstruct_sample returns the windowed samples. Aliasing is not excluded, and this is not a harmonic-response solve.

python
@final
class FiniteSpectrum:
@property
def result_identity(self) -> str: ...
@property
def trajectory_identity(self) -> str: ...
@property
def observable_id(self) -> str: ...
@property
def interval_s(self) -> tuple[float, float]: ...
@property
def phase_reference_s(self) -> float: ...
@property
def spacing_s(self) -> float: ...
@property
def sample_count(self) -> int: ...
@property
def window(self) -> str: ...
@property
def endpoint_convention(self) -> str: ...
@property
def convention(self) -> str: ...
@property
def input_type(self) -> ValueType: ...
@property
def coefficient_type(self) -> ValueType: ...
@property
def coefficients(self) -> list[Any]: ...
def frequency_hz(self, bin: int) -> float: ...
def angular_frequency_rad_s(self, bin: int) -> float: ...
def phase_rad(self, bin: int, *, component: int | None=None) -> float: ...
def amplitude(self, bin: int, *, component: int | None=None) -> float: ...
def one_sided_amplitude(self, bin: int, *, component: int | None=None) -> float: ...
def power(self, bin: int, *, component: int | None=None) -> float: ...
def power_density_per_hz(self, bin: int, *, component: int | None=None) -> float: ...
def one_sided_power_density_per_hz(self, bin: int, *, component: int | None=None) -> float: ...
def rectangle_transform_estimate(self, bin: int) -> Any: ...
def reconstruct_sample(self, sample: int) -> Any: ...
def projection_type(self, projection: str) -> ValueType: ...

Variation of a Result’s field coefficients, with units.

Fields that are left out have zero variation. Coefficients follow the field’s vertex order, and their unit is given by a Dimension.

python
@final
class ObservableStateTangent:
@property
def result_identity(self) -> str: ...

Construct an Observable integral with an explicit Domain measure.

python
def integral(value: _ExpressionLike, measure: _ExpressionLike) -> Expression: ...

Return the measure of a Domain, for use with integral.

python
def measure(domain: Domain) -> Expression: ...

Parameter selected from an immutable model.

python
@final
class ParameterRef:
@property
def value(self) -> _TypedValue: ...
@property
def value_type(self) -> ValueType: ...
@property
def model_digest(self) -> str: ...
@property
def id(self) -> str: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Named physical domain, such as electrical, with its across and through quantities.

python
@final
class PhysicalDomain:
def __new__(cls, name: str, *, across_name: str, across_type: ValueType, through_name: str, through_type: ValueType) -> Self: ...
@property
def name(self) -> str: ...
@property
def across_name(self) -> str: ...
@property
def through_name(self) -> str: ...
@property
def across_type(self) -> ValueType: ...
@property
def through_type(self) -> ValueType: ...

Property data (constant, analytic, or tabulated) bound into a Model, with its source and validity range.

python
@final
class PropertyBinding:
@property
def composition(self) -> str | None: ...
@property
def contract(self) -> str: ...
@property
def release(self) -> str: ...
@property
def component(self) -> str: ...
@property
def requirement(self) -> str: ...
@property
def normalized_value(self) -> _TypedValue | None: ...
@property
def inputs(self) -> list[str]: ...
@property
def branch(self) -> str | None: ...
@property
def first_partials(self) -> bool: ...
@property
def derivatives(self) -> str: ...
@property
def value_type(self) -> ValueType: ...
@property
def validity(self) -> str: ...
@property
def citation(self) -> str: ...
@property
def license(self) -> str: ...

Display label for one quantity in a rendered Model.

python
@final
class QuantityLabel:
def __repr__(self) -> str: ...
@property
def identity(self) -> str: ...
@property
def scope(self) -> str: ...
@property
def occurrence(self) -> str: ...
@property
def role(self) -> str: ...
@property
def family_member(self) -> str | None: ...
@property
def selector(self) -> str: ...
@property
def graph_id(self) -> str | None: ...
@property
def definition_span(self) -> tuple[str, int, int] | None: ...
@property
def instance_span(self) -> tuple[str, int, int] | None: ...
@property
def label(self) -> str: ...

Numerical plan: a Model together with its mesh, discretization, solver, and time settings.

The Model defines the physics. capability is a typed view of the field roles and settings for this kind of problem; fields lists every FieldRef regardless of problem kind.

python
@final
class Plan:
@property
def enforcement(self) -> solve.ActiveSet | solve.StrictInterior | None: ...
@staticmethod
def from_bytes(data: bytes) -> Plan: ...
@staticmethod
def read(path: str | PathLike[str]) -> Plan: ...
def to_bytes(self) -> bytes: ...
def write(self, path: str | PathLike[str]) -> None: ...
@property
def identity(self) -> str: ...
@property
def model_id(self) -> str: ...
@property
def model_digest(self) -> str: ...
@property
def model_revision(self) -> int: ...
@property
def package_compilation_digest(self) -> str | None: ...
@property
def geometry_digest(self) -> str | None: ...
@property
def mesh_digest(self) -> str | None: ...
@property
def correspondence_digest(self) -> str | None: ...
@property
def production_digest(self) -> str | None: ...
@property
def realization_digest(self) -> str | None: ...
@property
def model(self) -> Model: ...
@property
def harmonic_original_model(self) -> Model | None: ...
@property
def harmonic_amplitudes(self) -> tuple[tuple[str, FieldRef, FieldRef], ...]: ...
@property
def harmonic_angular_frequency(self) -> float | None: ...
@property
def mesh(self) -> meshing.Mesh | None: ...
@property
def formulation(self) -> FormulationView | None: ...
@property
def capability(self) -> SpatialPlanView | solve.AlgebraicPlanView | solve.EigenPlanView | time.TimePlanView | fluid.IncompressibleFlowPlanView: ...
@property
def fields(self) -> tuple[FieldRef, ...]: ...
def field_coefficient_entities(self, field: FieldRef, /) -> tuple[tuple[int, int], ...]: ...
def field_gradient_modes(self, field: FieldRef, /) -> dict[tuple[int, int], tuple[tuple[tuple[int, int], int], ...]]: ...
def field_exterior_derivative(self, field: FieldRef, /) -> dict[tuple[int, int], tuple[tuple[tuple[int, int], int], ...]]: ...
@property
def spatial(self) -> fem.Q1 | fem.TetrahedralEdge | fem.TetrahedralFace | fem.MiniP1 | fvm.CellCenteredTpfa | fvm.CellCentered | tuple[fem.ScopedSpatialPolicy, ...] | None: ...
@property
def solve(self) -> solve_module.ResolvedLinear | solve_module.ResolvedNewton | solve_module.HermitianEigen | None: ...
@property
def requested_solve(self) -> solve_module.Linear | solve_module.Newton | solve_module.HermitianEigen | None: ...
@property
def temporal(self) -> time.BackwardEuler | time.Tsitouras45 | time.ImplicitMidpoint | None: ...
@property
def execution(self) -> ResolvedExecution: ...
def __repr__(self) -> str: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Whether a field is a time-evolving state or an algebraic variable.

python
@final
class FieldRole:
Variable: ClassVar[FieldRole]
State: ClassVar[FieldRole]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Function-space regularity declared for a field, independent of the discretization.

python
@final
class SpatialRegularity:
Unspecified: ClassVar[SpatialRegularity]
L2: ClassVar[SpatialRegularity]
H1: ClassVar[SpatialRegularity]
HCurl: ClassVar[SpatialRegularity]
HDiv: ClassVar[SpatialRegularity]
Smooth: ClassVar[SpatialRegularity]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Equations solved together to set initial values.

python
@final
class Initial:
def __new__(cls, *equations: tuple[_ExpressionLike, _ExpressionLike]) -> Self: ...
@property
def equations(self) -> list[tuple[Expression, Expression]]: ...

Named set of equations, each given as a (left, right) pair.

python
@final
class Relation:
def __new__(cls, name: str, *, equations: Sequence[tuple[_ExpressionLike, _ExpressionLike]], domain: Domain | None=None) -> Self: ...
@property
def name(self) -> str: ...
@property
def equations(self) -> list[tuple[Expression, Expression]]: ...
@property
def domain(self) -> Domain | None: ...

Outcome of a completed run, with access to its fields and observations.

python
@final
class Result:
@property
def initial_state(self) -> State | None: ...
def reconstruct_harmonic_fields(self, *, time_seconds: float) -> tuple[tuple[FieldRef, object, ValueType], ...]: ...
def reconstruct_harmonic_field_block(self, field: FieldRef, /, *, time_seconds: float, block: int=0) -> Array: ...
@property
def eigenpair_count(self) -> int: ...
@property
def eigen_convergence(self) -> str | None: ...
@property
def eigen_candidate_counts(self) -> tuple[int, int] | None: ...
def spatial_step(self, output_index: int, /) -> SpatialStepObservation: ...
def eigenpair(self, index: int) -> Eigenpair: ...
def eigenprojector(self, indices: list[int]) -> tuple[object, ValueType]: ...
@property
def original_residual_norm(self) -> float | None: ...
@property
def compatibility_residual(self) -> float | None: ...
@property
def gauge_residual(self) -> float | None: ...
@property
def gauge_multiplier(self) -> float | None: ...
@property
def constraints(self) -> tuple[ConstraintMeasurement, ...]: ...
@property
def model_id(self) -> str: ...
@property
def model_digest(self) -> str: ...
@property
def model_revision(self) -> int: ...
@property
def plan_key(self) -> str: ...
@property
def adapter(self) -> str: ...
@property
def adapter_version(self) -> str: ...
@property
def elapsed_seconds(self) -> float: ...
@property
def profile(self) -> Profile | None: ...
def to_bytes(self) -> bytes: ...
@staticmethod
def from_bytes(plan: Plan, data: bytes) -> Result: ...
@staticmethod
def read(plan: Plan, path: str | PathLike[str]) -> Result: ...
def write(self, path: str | PathLike[str]) -> None: ...
def export_xdmf(self, path: str | PathLike[str]) -> None: ...
@property
def fields(self) -> list[Series]: ...
@property
def solve(self) -> LinearSolveSummary | NonlinearSolveSummary: ...
def observe_spectrum(self, observable: ObservableRef, *, start_s: float, spacing_s: float, count: int, window: str, max_products: int) -> FiniteSpectrum: ...
def observe_terminal(self, observable: ObservableRef) -> TrajectoryObservation: ...
def observe_time_integral(self, observable: ObservableRef, *, interpolation: time.TimeObservationInterpolation, interval_s: tuple[float, float] | None=None, quadrature_points: int | None=None) -> TrajectoryObservation: ...
def observe_time_minimum(self, observable: ObservableRef, *, interpolation: time.TimeObservationInterpolation, interval_s: tuple[float, float] | None=None, quadrature_points: int | None=None) -> TrajectoryObservation: ...
def observe_time_maximum(self, observable: ObservableRef, *, interpolation: time.TimeObservationInterpolation, interval_s: tuple[float, float] | None=None, quadrature_points: int | None=None) -> TrajectoryObservation: ...
def observe_parameter_jvp(self, observable: ObservableRef, direction: dict[ParameterRef, tuple[Dimension, float]], *, output_index: int) -> Observation: ...
def observe_terminal_parameter_jvp(self, observable: ObservableRef, direction: dict[ParameterRef, tuple[Dimension, float]]) -> TrajectoryObservation: ...
def observe_time_integral_parameter_jvp(self, observable: ObservableRef, direction: dict[ParameterRef, tuple[Dimension, float]], *, interpolation: time.TimeObservationInterpolation, interval_s: tuple[float, float] | None=None) -> TrajectoryObservation: ...
def observe(self, observable: ObservableRef, *, quadrature_points: int | None=None, output_index: int | None=None) -> Observation: ...
def discretization_error_indicators(self, field: FieldRef, /, *, quadrature_points: int) -> tuple[Array, Dimension]: ...
def observe_at(self, observable: ObservableRef, coordinates: Sequence[tuple[float, Dimension]], *, quadrature_points: int | None=None, output_index: int | None=None) -> Observation: ...
def observable_state_tangent(self, directions: dict[FieldRef, tuple[Dimension, Sequence[float]]]) -> ObservableStateTangent: ...
def observe_state_jvp(self, observable: ObservableRef, tangent: ObservableStateTangent, *, quadrature_points: int) -> Observation: ...
def observe_state_second_variation(self, observable: ObservableRef, first: ObservableStateTangent, second: ObservableStateTangent, *, wrt: FieldRef, quadrature_points: int) -> Observation: ...
def output(self, field: FieldRef, /) -> FieldOutput: ...
def boundary_force(self, selection: geometry.GeometrySelection, /, *, output_index: int | None=None) -> trajectory.BoundaryForce: ...
def boundary_flux(self, selection: geometry.GeometrySelection, /) -> trajectory.BoundaryFlux: ...
def series(self, field: FieldRef, /, *, derivative_order: int=0, component: int=0, imaginary: bool=False) -> Series: ...
def mesh(self, field: FieldRef, /) -> meshing.Mesh: ...
@property
def trajectory(self) -> trajectory.Trajectory: ...

Directed contribution from one equation in one mesh cell.

python
@final
class SpatialBalanceTerm:
@property
def domain_id(self) -> str: ...
@property
def cell_index(self) -> int: ...
@property
def relation_id(self) -> str: ...
@property
def tested_field_id(self) -> str: ...
@property
def trial_field_id(self) -> str | None: ...
@property
def term_index(self) -> int: ...
@property
def role(self) -> Literal['storage', 'state-potential', 'dissipation', 'constraint-work', 'applied-volume-work']: ...
@property
def dimension(self) -> Dimension: ...
@property
def previous(self) -> float: ...
@property
def current(self) -> float: ...
@property
def increment(self) -> float: ...
@property
def work(self) -> float: ...
def __repr__(self) -> str: ...

Boundary work and its weak action, with units and coefficient identity.

python
@final
class SpatialBoundaryWork:
@property
def domain_id(self) -> str: ...
@property
def kind(self) -> Literal['natural', 'prescribed', 'interface']: ...
@property
def field_id(self) -> str: ...
@property
def connection_id(self) -> str | None: ...
@property
def cell_index(self) -> int | None: ...
@property
def entity(self) -> tuple[int, int] | None: ...
@property
def slot(self) -> int | None: ...
@property
def component(self) -> int | None: ...
@property
def work(self) -> float: ...
@property
def work_dimension(self) -> Dimension: ...
@property
def action(self) -> float | None: ...
@property
def action_dimension(self) -> Dimension | None: ...
def __repr__(self) -> str: ...

Signed work residual for one domain and physical dimension.

python
@final
class SpatialWorkDefect:
@property
def domain_id(self) -> str: ...
@property
def dimension(self) -> Dimension: ...
@property
def value(self) -> float: ...
def __repr__(self) -> str: ...

Solver and work observations for one retained spatial output.

python
@final
class SpatialStepObservation:
@property
def result_identity(self) -> str: ...
@property
def trajectory_identity(self) -> str: ...
@property
def output_index(self) -> int: ...
@property
def step_index(self) -> int: ...
@property
def previous_state_identity(self) -> str: ...
@property
def state_identity(self) -> str: ...
@property
def assembly_counts(self) -> tuple[int, int] | None: ...
@property
def balance_error(self) -> str | None: ...
@property
def solve(self) -> LinearSolveSummary | NonlinearSolveSummary | None: ...
@property
def volume_terms(self) -> tuple[SpatialBalanceTerm, ...]: ...
@property
def boundary_work(self) -> tuple[SpatialBoundaryWork, ...]: ...
@property
def defects(self) -> tuple[SpatialWorkDefect, ...]: ...
def __repr__(self) -> str: ...

Timings and events recorded in this process for one profiled run.

python
@final
class Profile:
@property
def phases(self) -> list[ProfilePhase]: ...
@property
def events(self) -> list[ProfileEvent]: ...
@property
def total_seconds(self) -> float: ...
def summary(self) -> str: ...

Metadata recorded for a profiled phase or solver event.

Some phases keep every event. Phases that are only aggregated keep one representative event, and ProfilePhase.calls gives the full count.

python
@final
class ProfileEvent:
@property
def path(self) -> list[str]: ...
@property
def fields(self) -> dict[str, str]: ...

Total timing for one phase in the profile hierarchy.

Inclusive time includes nested phases; self time excludes them. fields distinguishes phases that share the same path.

python
@final
class ProfilePhase:
@property
def path(self) -> list[str]: ...
@property
def name(self) -> str: ...
@property
def fields(self) -> dict[str, str]: ...
@property
def calls(self) -> int: ...
@property
def inclusive_seconds(self) -> float: ...
@property
def self_seconds(self) -> float: ...
@property
def mean_seconds(self) -> float: ...

Identity of a Model: its ID, digest, and revision number.

python
@final
class Revision:
@property
def model_id(self) -> str: ...
@property
def digest(self) -> str: ...
@property
def number(self) -> int: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Scalar type, data layout, schedule, provider, and placement chosen for execution.

python
@final
class ResolvedExecution:
@property
def scalar_type(self) -> str: ...
@property
def vector_layout(self) -> str: ...
@property
def schedule(self) -> str: ...
@property
def provider(self) -> str: ...
@property
def provider_version(self) -> str: ...
@property
def placement(self) -> str: ...
@property
def workers(self) -> int: ...
def __repr__(self) -> str: ...

Plan view for a spatial problem: its scalar or vector Fields and coefficient settings.

python
@final
class SpatialPlanView:
@property
def kind(self) -> str: ...
@property
def fields(self) -> tuple[FieldRef, ...]: ...
@property
def coefficient_sampling(self) -> str: ...
@property
def face_coefficient_policy(self) -> str: ...

Handle to a submitted run. Await it, or call result(), to get the Result.

python
class Run(Generic[_RunResultT]):
def __init__(self, native: Never) -> None: ...
@property
def status(self) -> RunStatus: ...
@property
def history(self) -> tuple[RunStatus, ...]: ...
@property
def progress(self) -> RunProgress | None: ...
@property
def cancellation(self) -> RunCancellation | None: ...
@property
def done(self) -> bool: ...
@property
def model_id(self) -> str: ...
@property
def model_digest(self) -> str: ...
@property
def model_revision(self) -> int: ...
@property
def package_compilation_digest(self) -> str | None: ...
@property
def plan_key(self) -> str: ...
@property
def adapter(self) -> str: ...
@property
def adapter_version(self) -> str: ...
def cancel(self) -> bool: ...
def result(self) -> _RunResultT: ...
def __await__(self) -> Generator[Any, None, _RunResultT]: ...

Status of a run. A run only moves forward through these states.

python
@final
class RunStatus:
Created: ClassVar[RunStatus]
Validating: ClassVar[RunStatus]
Queued: ClassVar[RunStatus]
Running: ClassVar[RunStatus]
Cancelling: ClassVar[RunStatus]
Cancelled: ClassVar[RunStatus]
Completed: ClassVar[RunStatus]
Failed: ClassVar[RunStatus]
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Read-only time series of one field, in SI units.

python
@final
class Series:
@property
def field(self) -> FieldRef | None: ...
@property
def derivative_order(self) -> int: ...
@property
def component(self) -> int: ...
@property
def imaginary(self) -> bool: ...
@property
def id(self) -> str: ...
@property
def name(self) -> str | None: ...
@property
def dimension(self) -> tuple[Fraction, Fraction, Fraction, Fraction, Fraction, Fraction, Fraction]: ...
@property
def time(self) -> Array: ...
@property
def values(self) -> Array: ...
def __len__(self) -> int: ...
def __iter__(self) -> Iterator[tuple[float, float]]: ...

Physical state associated with one Plan.

python
@final
class State:
def to_bytes(self) -> bytes: ...
@staticmethod
def from_bytes(plan: Plan, data: bytes) -> State: ...
@staticmethod
def initial(plan: Plan, /, *, fields: tuple[InitialField, ...] | None=None, time_s: float | None=None) -> State: ...
@staticmethod
def zero(plan: Plan, /, *, time_s: float=0.0) -> State: ...
@staticmethod
def from_result(plan: Plan, result: Result, /, *, time_s: float) -> State: ...
@staticmethod
def interpolate(plan: Plan, result: Result, /) -> State: ...
@property
def digest(self) -> str: ...
@property
def step(self) -> int: ...
@property
def time_s(self) -> float | None: ...
@property
def fields(self) -> tuple[trajectory.FieldSnapshot, ...]: ...
@property
def state_coordinates(self) -> tuple[tuple[FieldRef, int, int, bool], ...]: ...
@property
def state_space_identity(self) -> str: ...
@property
def mesh(self) -> meshing.Mesh | None: ...
@property
def model(self) -> Model | None: ...
@property
def source_plan_identity(self) -> str | None: ...
@property
def source_request_identity(self) -> str | None: ...
@property
def source_trajectory_identity(self) -> str | None: ...
@property
def source_kind(self) -> str | None: ...
def field(self, field: FieldRef, /) -> trajectory.FieldSnapshot: ...
def curl(self, field: FieldRef, /) -> trajectory.DerivedFieldSnapshot: ...
def sample(self, field: FieldRef, /, *, at: tuple[float, float]) -> trajectory.FieldSample: ...
def value(self, field: FieldRef, /, *, derivative_order: int=0) -> _TypedValue: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Last accepted State and optional exact checkpoint when cancellation terminates.

python
@final
class RunCancellation:
@property
def progress(self) -> RunProgress: ...
@property
def request_identity(self) -> str: ...
@property
def state(self) -> State: ...
@property
def checkpoint(self) -> ExecutionCheckpoint | None: ...

Last observed accepted numerical boundary; adaptive Runs have no fixed maximum step count.

python
@final
class RunProgress:
@property
def accepted_steps(self) -> int: ...
@property
def maximum_steps(self) -> int | None: ...
@property
def model_time_s(self) -> float: ...

Fingerprint for comparing Model structure while ignoring names. Equal fingerprints do not mean identical Models.

python
@final
class StructuralSemanticFingerprint:
@property
def generation(self) -> str: ...
@property
def digest(self) -> str: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

Raised when a model or request is invalid.

python
class ValidationError(EqioraError):
...

Prepared change to one value in a specific Model revision; apply it with Model.commit.

python
@final
class ValueEdit:
@property
def key(self) -> str: ...
@property
def base_digest(self) -> str: ...
@property
def base_revision(self) -> int: ...
@property
def target_id(self) -> str: ...
def __eq__(self, other: object, /) -> bool: ...
def __hash__(self) -> int: ...

See eqiora.viewer.View.

A disposable scene showing Eqiora values.

Return the across variable of a scalar conserving port.

python
def across(port: ConservingPort) -> Expression: ...

Check a locked package and its dependencies by recompiling them and comparing the results.

python
def check_package_conformance(store_root: str | os.PathLike[str], resolution_bytes: bytes, *, entry_model: str, profile: str) -> PackageConformanceReport: ...

Compile Eqiora source, from a file or a string, into a Model, optionally with a Geometry.

python
def compile(*, path: str | PathLike[str] | None=None, source: str | Module | None=None, filename: str | None=None, geometry: geometry.Geometry | None=None, bindings: dict[str, _TypedValue | ClockDomain | CoordinateInterval | geometry.GeometrySelection | tuple[geometry.GeometrySelection, geometry.GeometrySelection] | tuple[tuple[geometry.GeometrySelection, ...], geometry.GeometrySelection]] | None=None, entry: str | None=None) -> Model: ...

Compile a Model or Component from a locked package project, optionally with a Geometry.

python
def compile_package(store_root: str | PathLike[str], resolution: bytes, *, entry: str, geometry: geometry.Geometry | None=None, bindings: dict[str, _TypedValue | ClockDomain | CoordinateInterval | geometry.GeometrySelection | tuple[geometry.GeometrySelection, geometry.GeometrySelection] | tuple[tuple[geometry.GeometrySelection, ...], geometry.GeometrySelection]] | None=None) -> Model: ...

Build an anonymous conserving connection declaration.

python
def connect(*ports: ConservingPort) -> Connection: ...

Return the time derivative of a field.

python
def derivative(field: Field) -> Expression: ...

Return the spatial divergence of a symbolic expression.

python
def div(value: _ExpressionLike) -> Expression: ...

Return the spatial gradient of a symbolic expression.

python
def grad(value: _ExpressionLike) -> Expression: ...

See module eqiora.lang.

Author Eqiora Modules, Components, expressions, and equations in Python.

See module eqiora.units.

Shared units for input quantities and explicit presentation.

See module eqiora.data.

Explicit numeric adapters and canonical resolved-array artifacts.

Combine a Model with numerical settings to produce a Plan.

The spatial, solve, and time settings choose the numerical method; they never change the physics. The Plan keeps the Model and Mesh you pass in unchanged (the Mesh is not regenerated). A Model without spatial fields rejects mesh and spatial.

python
def resolve(model: Model, *, mesh: meshing.Mesh | None=None, spatial: fem.Q1 | fem.TetrahedralEdge | fem.TetrahedralFace | fem.MiniP1 | fvm.CellCenteredTpfa | fvm.CellCentered | tuple[fem.ScopedSpatialPolicy, ...] | None=None, formulation: FormulationKind | None=None, solve: solve.Linear | solve.Newton | solve.HermitianEigen | None=None, scaling: fluid.IncompressibleScaling | dict[ConstraintRef, tuple[float, Dimension]] | None=None, temporal: time.BackwardEuler | time.Tsitouras45 | time.ImplicitMidpoint | None=None, enforcement: solve.ActiveSet | solve.StrictInterior | None=None) -> Plan: ...

Validated dependency resolution that you can inspect and then commit once.

python
@final
class ProjectUpdate:
@property
def resolution(self) -> bytes: ...
@property
def lock(self) -> bytes: ...
@property
def explanation(self) -> str: ...
def __repr__(self) -> str: ...
def commit(self, store_root: str | PathLike[str]) -> bytes: ...

Resolve a project’s dependencies without installing them or writing the lock.

python
def preview_local_project(project_root: str | PathLike[str]) -> ProjectUpdate: ...

Resolve a local package project, write eqiora.lock, and populate a store.

python
def resolve_local_project(project_root: str | PathLike[str], store_root: str | PathLike[str]) -> bytes: ...

Add or replace a local path dependency, then update the manifest and lock.

python
def add_local_dependency(project_root: str | PathLike[str], store_root: str | PathLike[str], name: str, *, version: str, path: str) -> bytes: ...

Remove a direct dependency and update the manifest and lock.

python
def remove_local_dependency(project_root: str | PathLike[str], store_root: str | PathLike[str], name: str) -> bytes: ...

Run a Plan and wait for the Result. Transient Plans need an end time or a step count.

python
def run(plan: Plan, *, state: State | None=None, checkpoint: ExecutionCheckpoint | None=None, until_s: float | None=None, output_times_s: tuple[float, ...] | None=None, steps: int | None=None, output_steps: tuple[int, ...] | None=None, master_seed: bytes | None=None, sampling: SamplingIdentity | None=None, profile: bool=False) -> Result: ...

Start a Plan running and return a Run handle immediately. Transient Plans need an end time or a step count.

python
def submit(plan: Plan, *, state: State | None=None, checkpoint: ExecutionCheckpoint | None=None, until_s: float | None=None, output_times_s: tuple[float, ...] | None=None, steps: int | None=None, output_steps: tuple[int, ...] | None=None, master_seed: bytes | None=None, sampling: SamplingIdentity | None=None, profile: bool=False) -> Run[Result]: ...

Stable sample/channel identity; lineage records occurrence without changing draws.

Coupling explicitly selects a shared stream group. Unequal identities alone do not prove statistical independence.

python
@final
class SamplingIdentity:
def __new__(cls, sample_id: bytes, channel: bytes, /, *, lineage: Sequence[int]=(), coupling_id: bytes | None=None) -> Self: ...
@property
def sample_id(self) -> bytes: ...
@property
def channel(self) -> bytes: ...
@property
def lineage(self) -> list[int]: ...
@property
def coupling_id(self) -> bytes | None: ...
def __repr__(self) -> str: ...

Return the through variable of a scalar conserving port.

python
def through(port: ConservingPort) -> Expression: ...

Return the boundary trace of a symbolic expression.

python
def trace(value: _ExpressionLike, *, on: Domain | None=None, from_: Domain | None=None) -> Expression: ...

See module eqiora.diff.

Implicit differentiation of Eqiora programs.

See module eqiora.fem.

Finite-element discretization policies.

See module eqiora.fluid.

Configure incompressible flow and inspect its results.

See module eqiora.formulation.

Choose a mathematical formulation and inspect the resolved choice.

See module eqiora.fvm.

Finite-volume discretization policies.

See module eqiora.geometry.

Build geometry and select its regions and boundaries.

See module eqiora.meshing.

Plan and generate meshes from geometry.

See module eqiora.solid.

Configure linear elasticity and inspect structural results.

See module eqiora.solve.

Linear, nonlinear, and eigenvalue solver settings.

See module eqiora.time.

Time-integration methods and related settings.

See module eqiora.trajectory.

Read spatial trajectories and derived fields.

Add a package bundled with Eqiora as a dependency, updating the manifest and lock.

python
def add_bundled_dependency(project_root: str | PathLike[str], store_root: str | PathLike[str], name: str, *, version: str) -> bytes: ...

Add a package from a Git repository at a fixed revision, updating the manifest and lock.

python
def add_git_dependency(project_root: str | PathLike[str], store_root: str | PathLike[str], name: str, *, version: str, repository: str, revision: str) -> bytes: ...

Download the packages listed in the existing lock into the store, without changing the lock.

python
def fetch_project(project_root: str | PathLike[str], store_root: str | PathLike[str]) -> bytes: ...

Open an installed project and check it against its lock, using only the given store (no network).

python
def open_project(project_root: str | PathLike[str], store_root: str | PathLike[str]) -> bytes: ...

Resolve the project’s dependency requests again and write a new lock.

python
def update_project(project_root: str | PathLike[str], store_root: str | PathLike[str]) -> bytes: ...

Copy the project’s locked dependencies into a directory for offline use.

python
def vendor_project(project_root: str | PathLike[str], store_root: str | PathLike[str], destination: str | PathLike[str]) -> bytes: ...