Back to Eqiora docs Skip to main content

eqiora/
lib.rs

1//! **eqiora** — the public facade.
2//!
3//! This is the only crate downstream users and physics packages depend on.
4//! Its stable and transitional exports are enumerated in
5//! `api/eqiora-facade-v1.json`; internal crates may refactor without silently
6//! expanding the curated surface. Physics packages must not depend on
7//! `eqiora-*` crates directly; that rule is enforced socially now and by the
8//! package toolchain later.
9//! The repository's `docs/architecture.md#dependency-layers` section is the
10//! human-readable contract; `cargo xtask check-layers` and
11//! `cargo xtask check-facade` enforce the two boundaries.
12//!
13//! Each underlying crate is also independently usable: depending on
14//! `eqiora-core` alone for its unit system is a legitimate use of Eqiora.
15
16mod release_identity {
17    pub const VERSION: &str = env!("CARGO_PKG_VERSION");
18}
19
20#[cfg(feature = "gmsh")]
21mod cylinder_mesh_family;
22
23pub use eqiora_core::diagnostic::{self, Code, Diagnostic, GraphPath, Patch, Severity, Span};
24pub use eqiora_core::entity::{self, Entity, EntityKind, GraphClass, GraphKind, kinds};
25pub use eqiora_core::id::{Id, RawId};
26pub use eqiora_core::quantity::{
27    self, DimExponents, Dimension, DynQuantity, Quantity, Scalar, aliases, dim,
28};
29pub use eqiora_core::{InvalidValueShape, ValueShape};
30/// Exact Cargo SemVer release identity of the public Eqiora facade.
31pub use release_identity::VERSION;
32
33/// Shared application operations used by thin language and Studio clients.
34///
35/// [`crate::api::ModelDocument::compile`] owns transport-neutral compilation;
36/// client adapters may apply their own admission and projection without
37/// redefining it.
38pub mod api {
39    pub use eqiora_api::package;
40    pub use eqiora_api::{
41        CadBoxIntentV1, CadBoxPlanV1, CadRegenerationPlanV1, CadRenderProjectionV1,
42        CadRenderTriangleV1, CadSelectionRequestV1, CadSemanticEntityKindV1, CadSemanticEntityV1,
43        CadSemanticSelectionV1, CartesianDomainEditPlan, CartesianDomainEditResult,
44        CartesianFieldOrder, CartesianScalarFieldProjection, CompleteParameterStudy,
45        DerivativeContract, DerivativeImplementation, DifferentiableDevice,
46        DifferentiableEvaluation, DifferentiableJvp, DifferentiableParameterPoint,
47        DifferentiablePrimal, DifferentiableProgram, DifferentiableProgramIdentity,
48        DifferentiableScalarType, DifferentiableVjp, DifferentiationEvidence, DifferentiationMode,
49        FixedMeshFieldTrajectoryReplay2dV1, FixedMeshMonolithicFsiIntent2d,
50        FixedReferenceFsiResult2d, FixedReferenceFsiSnapshotSetV1, LinearElasticityIntent2d,
51        LinearizationState, MAX_SCALAR_ELLIPTIC_ENTITY_COUNT, MixedBoundaryElasticityResult2d,
52        MlDatasetArtifactsV1, MlDatasetBlockArrayV1, MlDatasetDerivationPlanV1,
53        MlDatasetDescriptorRoleV1, MlDatasetFieldSelectionV1, MlDatasetMaterializationLimitsV1,
54        MlDatasetMaterializationV1, MlDatasetSampleArraysV1, MlDatasetSampleSelectionV1,
55        MlDatasetSampleSplitV1, ModelDocument, ModelFieldRef, ModelParameterRef,
56        ParameterGeometryRegenerationPlan, ParameterGeometryRegenerationResult, ParameterStudyPlan,
57        ParameterStudyPointKey, ParameterStudyTerminalReport,
58        PrescribedDynamicSolidExternalProviderStateRun3d, PrescribedDynamicSolidStateRun3d,
59        REFERENCE_EXECUTION_ADAPTER, ReferenceAcceptance, ReferenceExecutionPlacement,
60        ReferenceIntegrationMethod, ReferenceNonlinearMethod, ReferenceRunCancellation,
61        ReferenceRunDirective, ReferenceRunEvidence, ReferenceRunObserver, ReferenceRunOutcome,
62        ReferenceRunPlan, ReferenceRunProgress, ReferenceRunResult, ReferenceSeries,
63        RemeshingTrajectoryReplayInputV1, ResolvedFixedMeshMonolithicFsiPlan2d,
64        ResolvedLinearElasticityPlan2d, ResolvedSteadyStokesPlan2d, ScalarEllipticBalanceEvidence,
65        ScalarEllipticExecutionEnvironment, ScalarEllipticIntent, ScalarEllipticMethod,
66        ScalarEllipticRunCancellation, ScalarEllipticRunDirective, ScalarEllipticRunObserver,
67        ScalarEllipticRunOutcome, ScalarEllipticRunPlan, ScalarEllipticRunProgress,
68        ScalarEllipticRunResult, ScalarFieldLocation, ScalarFieldSummary,
69        SemanticFingerprintGeneration, SteadyStokesIntent2d, StructuralSemanticFingerprint,
70        TransientNavierStokesInitialCondition2d, TransientNavierStokesReference2d,
71        UnstructuredP1ScalarFieldProjection2d, ValueEditPlan, ValueEditResult, VerifiedMlDatasetV1,
72        derive_ml_dataset_v1, snapshot_fixed_reference_fsi_solution_v1, verify_ml_dataset_v1,
73    };
74
75    /// Fresh XDMF artifact derivation and verified persisted replay.
76    #[cfg(feature = "xdmf")]
77    pub use eqiora_api::{
78        VerifiedXdmfImportV1, XdmfImportArtifactsV1, import_xdmf_v1, verify_xdmf_import_v1,
79    };
80
81    /// Fresh VTU artifact derivation and verified persisted replay.
82    #[cfg(feature = "vtu")]
83    pub use eqiora_api::{
84        VerifiedVtuImportV1, VtuImportArtifactsV1, import_vtu_v1, verify_vtu_import_v1,
85    };
86
87    /// Native HDF5-backed XDMF import and remeshing-trajectory export.
88    #[cfg(feature = "hdf5")]
89    pub use eqiora_api::{
90        VerifiedXdmfHdf5TrajectoryExportV1, XdmfHdf5TrajectoryExportArtifactsV1,
91        XdmfHdf5TrajectoryExportLimits, export_xdmf_hdf5_trajectory_v1, import_xdmf_hdf5_v1,
92        verify_xdmf_hdf5_import_v1, verify_xdmf_hdf5_trajectory_storage_v1,
93    };
94}
95
96/// Versioned control-v2 wire values and adapter for thin clients.
97///
98/// Compilation meaning remains owned by [`api::ModelDocument::compile`].
99pub mod control {
100    pub use eqiora_api::control::{
101        COMPILE_COMMAND_V1, COMPILE_V2_SCHEMA_JSON, CONTROL_PROTOCOL_V2, CompileControlExecutionV2,
102        CompileModelDescriptorV2, CompileOutcomeV2, CompileRequestV2, CompileResponseV2,
103        ControlDiagnosticSourceV2, ControlDiagnosticV2, ControlPatchV2, ControlSeverityV2,
104        ControlSourceSpanV2, MAX_COMPILE_FILENAME_BYTES_V2, MAX_COMPILE_REQUEST_BYTES_V2,
105        MAX_COMPILE_RESPONSE_BYTES_V2, MAX_COMPILE_SOURCE_BYTES_V2,
106        MAX_CONTROL_REQUEST_ID_BYTES_V2, execute_compile_v2,
107    };
108}
109
110/// Closed Semantic Kernel node definitions and residual expressions.
111pub mod kernel {
112    pub use eqiora_schema::kernel::*;
113}
114
115/// Standard Ontology: typed named subgraphs, never graph nodes.
116pub mod ontology {
117    pub use eqiora_core::{NamedSubgraph, OntologyId, OntologySchema, OntologyView, RawOntologyId};
118    pub use eqiora_schema::{
119        Coupling, CouplingView, EvidenceSet, EvidenceSetView, Model, ModelView, Objective,
120        ObjectiveView, Scale, ScaleView, Solver, SolverView,
121    };
122}
123
124/// Graph Federation: stores, typed transactions, semantic diff.
125pub mod graph {
126    pub use eqiora_graph::{
127        CommitRecord, Committed, Edge, EdgeKind, GraphStore, InMemoryGraphStore, Node, Op,
128        Precondition, Revision, Snapshot, Transaction,
129    };
130}
131
132/// Eqiora Language syntax, lossless tokens, parser, and canonical formatter.
133pub mod language {
134    pub use eqiora_lang::*;
135}
136
137/// Typed Eqiora Language lowering to Graph Federation transactions.
138pub mod compiler {
139    pub use eqiora_compiler::*;
140}
141
142/// Exact, offline model-package contracts and the locked compilation facade.
143pub mod package {
144    pub use eqiora_api::package::*;
145    pub use eqiora_package::*;
146}
147
148/// Backend-independent lowered representations.
149pub mod ir {
150    pub use eqiora_ir::{
151        BoundAffineFailure, BoundAffineScalarIr, ComponentScalarRow, ComponentScalarization,
152        ConstantSymbolJacobian, DifferentiationRole, DiscreteStepLinearization, LinearizedOutput,
153        LinearizedRelation, LocalLinearActionIr, RelationCotangent, RelationTangent,
154        ScalarInputOperatorIr, ScalarInputSlot, ScalarLinearization, ScalarObjectiveLinearization,
155        ScalarOperatorIr, ScalarSymbolCoordinate, SymbolicLinearityFailure,
156    };
157}
158
159/// Implicit forward and adjoint differentiation over lowered relations.
160pub mod differentiation {
161    pub use eqiora_differentiation::*;
162}
163
164/// Backend-neutral local contributions, assembly maps, and sparse algebra.
165pub mod assembly {
166    pub use eqiora_assembly::*;
167}
168
169/// Backend-neutral device identity, capability, residency, and evidence.
170pub mod device {
171    pub use eqiora_device::*;
172}
173
174/// Numerical realizations kept separate from canonical model meaning.
175pub mod numerics {
176    pub use eqiora_numerics::ale::{
177        AleFsiCartesianModel2d, FinalizedResolvedFixedTopologyAleFsi2d,
178        finalize_resolved_fixed_topology_ale_fsi_2d, lower_ale_fsi_cartesian_2d,
179    };
180    pub use eqiora_numerics::fluid::{
181        FinalizedSteadyStokesMini2dProblem, IncompressibleFlowScaleProfile2d,
182        SteadyIncompressibleStokesCartesianModel2d, SteadyStokesMiniSolution2d,
183        finalize_resolved_steady_stokes_mini_2d, lower_steady_incompressible_stokes_cartesian_2d,
184        solve_resolved_steady_stokes_mini_2d,
185    };
186    pub use eqiora_numerics::scalar::{
187        FinalizedScalarEllipticCartesianProblem, ResolvedScalarEllipticCartesianSolution,
188        ScalarEllipticCartesianModel, finalize_resolved_scalar_elliptic_cartesian,
189        lower_scalar_elliptic_cartesian, solve_resolved_scalar_elliptic_cartesian,
190    };
191    pub use eqiora_numerics::solid::{
192        CartesianLinearElasticity2dSolution, FinalizedIsotropicElasticityCartesian2dProblem,
193        IsotropicElasticityCartesianModel2d, finalize_resolved_isotropic_elasticity_cartesian_2d,
194        lower_isotropic_elasticity_cartesian_2d, solve_resolved_isotropic_elasticity_cartesian_2d,
195    };
196}
197
198/// Backend-neutral mesh topology, affine geometry, and quality contracts.
199pub mod meshing {
200    pub use eqiora_meshing::*;
201}
202
203/// Geometry identity, geometry-to-mesh correspondence, and kernel-neutral CAD
204/// contracts.
205pub mod geometry {
206    pub use eqiora_geometry::*;
207
208    /// Concrete bounded Truck STEP/B-rep implementation of the CAD contracts.
209    #[cfg(feature = "cad-truck")]
210    pub mod truck {
211        pub use eqiora_cad_truck::*;
212    }
213}
214
215/// Optional external-format adapters. Imported data is always reconstructed
216/// through the backend-neutral contracts exposed by [`meshing`].
217pub mod io {
218    /// Bounded ASCII and binary Gmsh MSH 4.1 simplex import.
219    #[cfg(feature = "gmsh")]
220    pub mod gmsh {
221        pub use eqiora_io_gmsh::*;
222    }
223
224    /// Pure, bounded XDMF 3 metadata planning and caller-owned array replay.
225    #[cfg(feature = "xdmf")]
226    pub mod xdmf {
227        pub use eqiora_io_xdmf::*;
228    }
229
230    /// Pure, bounded VTK XML UnstructuredGrid import.
231    #[cfg(feature = "vtu")]
232    pub mod vtu {
233        pub use eqiora_io_vtu::*;
234    }
235
236    /// Native HDF5 file-image resolution with no caller path authority.
237    #[cfg(feature = "hdf5")]
238    pub mod hdf5 {
239        pub use eqiora_io_hdf5::*;
240    }
241}
242
243/// Backend-neutral solver plans, operators, capabilities, and evidence.
244pub mod solver {
245    pub use eqiora_solver::*;
246}
247
248/// Backend-neutral lowered time problems, adaptive plans, and evidence.
249pub mod time {
250    pub use eqiora_time::*;
251}
252
253/// Transport-neutral distributed ownership, halo, and collective contracts.
254pub mod distributed {
255    pub use eqiora_distributed::*;
256}
257
258/// Optional production execution adapters.
259pub mod backends {
260    /// faer host linear-algebra adapter.
261    #[cfg(feature = "faer")]
262    pub mod faer {
263        pub use eqiora_backend_faer::*;
264    }
265
266    /// MPI distributed-transport adapter.
267    #[cfg(feature = "mpi")]
268    pub mod mpi {
269        pub use eqiora_backend_mpi::*;
270    }
271
272    /// Diffsol adaptive ODE and mass-matrix DAE adapter.
273    #[cfg(feature = "diffsol")]
274    pub mod diffsol {
275        pub use eqiora_backend_diffsol::*;
276    }
277
278    /// Dynamically loaded single-device CUDA adapter.
279    #[cfg(feature = "cuda")]
280    pub mod cuda {
281        pub use eqiora_backend_cuda::{
282            CUDA_ADAPTER_VERSION, CUDA_BINDING_TOOLKIT, CUDA_LINEAR_EXECUTION,
283            CUDA_LINEAR_EXECUTION_PROVIDER, CUDA_LINEAR_SOLVER_BACKEND,
284            CUDA_LINEAR_SOLVER_PROVIDER, CUDA_RUNTIME_ID, CUDARC_VERSION, CudaComputeCapability,
285            CudaCsrActionEvidence, CudaCsrActionResult, CudaCsrTransferEvidence,
286            CudaLibraryVersions, CudaLinearSolveEvidence, CudaLinearSolveResult, CudaLinearSolver,
287            CudaLinearTransferEvidence, CudaRuntime, verify_csr_action, verify_csr_action_against,
288        };
289    }
290
291    /// Explicit host-staged MPI plus rank-local CUDA composition adapter.
292    #[cfg(feature = "mpi-cuda")]
293    pub mod mpi_cuda {
294        pub use eqiora_backend_mpi_cuda::*;
295    }
296
297    /// Run-owned Rayon CPU adapter.
298    #[cfg(feature = "rayon")]
299    pub mod rayon {
300        pub use eqiora_backend_rayon::*;
301    }
302}
303
304/// Versioned model/run artifacts and deterministic content identity.
305pub mod artifact {
306    pub use eqiora_artifact::*;
307}
308
309/// Typed Realization Graph policies kept separate from model meaning.
310pub mod realization {
311    pub use eqiora_realization::*;
312}
313
314/// Lowered Rust CPU execution and backend conformance.
315pub mod runtime {
316    pub use eqiora_runtime::*;
317}
318
319/// Reference semantics: the interpreter that defines what programs mean.
320pub mod sem {
321    pub use eqiora_sem::{
322        ComposedResidualSystem, Interpreter, JunctionResidual, KernelProgram, PhysicalUnknown,
323        ReferenceConfig, RelationResidual, Sample, ScalarPhysicalSubsystemId, Trajectory,
324    };
325}