Skip to main content

qualia_core_db/modalities/calculus/
mod.rs

1//! # Calculus Modality
2//!
3//! Zero-heap numerical integration and differential equation solving for QualiaDB.
4//!
5//! ## Architecture
6//!
7//! This module operates under strict `#![no_std]` constraints:
8//! - No heap allocations (no `Vec`, `String`, `Box`)
9//! - Stack-bound processing only
10//! - Memory-mapped I/O via Host-Core split
11//! - SIMD-accelerated chunked processing
12//!
13//! ## Usage
14//!
15//! ### Host-Side (std)
16//! ```no_run
17//! use qualia_core_db::modalities::calculus::host::MmapGridManager;
18//!
19//! let manager = MmapGridManager::new("grid_data.bin")?;
20//! let slice = manager.get_slice();
21//! ```
22//!
23//! ### Core-Side (no_std)
24//! ```no_run
25//! use qualia_core_db::modalities::calculus::{ContinuousGrid, integrate_simpsons_chunked};
26//!
27//! let grid = ContinuousGrid::new(slice, 5000)?;
28//! let result = integrate_simpsons_chunked(&grid, 0.001);
29//! ```
30//!
31//! ## Submodules
32//!
33//! - `host`: Host-side I/O management (ZeroCopyStreamer, io_uring, IOCP)
34//! - `gpu`: GPU integration (DirectStorage, GPUDirect, WebGPU)
35
36// Numerical core (ContinuousGrid + integration + DMA/SIMD helpers) relocated to
37// `solvers::calculus::grid`; re-exported so `modalities::calculus::{ContinuousGrid,
38// integrate_*, resolve_aligned_byte_offset, SimdWidth, CalculusError, ...}` keep resolving.
39pub use crate::solvers::calculus::grid::*;
40
41// Hardware I/O + dispatch relocated to `crate::platform`; re-exported here so existing
42// `modalities::calculus::{host,gpu,hetero_dispatch}` paths keep resolving (facade).
43#[cfg(not(target_arch = "wasm32"))]
44pub use crate::platform::host;
45
46#[cfg(not(target_arch = "wasm32"))]
47pub use crate::platform::gpu;
48
49#[cfg(not(target_arch = "wasm32"))]
50pub use crate::platform::hetero_dispatch;
51
52// Numerical solvers relocated to `crate::solvers::calculus`; re-exported here so the
53// existing `modalities::calculus::{ode_solver,ode_advanced,tensor_*}` paths and their
54// item re-exports keep resolving (facade).
55pub use crate::solvers::calculus::ode_solver;
56pub use ode_solver::{
57    create_ode_step_quin, extract_ode_state, pack_ode_state, BvpSystem, ChaoitonProfile,
58    CoupledBoltzmann, ExponentialDecay, HarmonicOscillator, LinearDecayBvp, OdeSystem,
59    QuantizationMapper, Rk4Solver, ShootingMethod, StandardModelMasses, StepSizeAnalyzer,
60};
61
62pub use crate::solvers::calculus::ode_advanced;
63pub use crate::solvers::calculus::tensor_provenance;
64pub use ode_advanced::{
65    bdf1_step, bdf2_step, hermite_dense_output, integrate_bdf, integrate_symplectic,
66    integrate_with_sensitivity, ruth3_step, verlet_step, yoshida4_step, SensitivityResult,
67    SymplecticMethod, SymplecticResult,
68};
69pub use tensor_provenance::{TensorProvenance, TensorState};
70
71pub use crate::solvers::calculus::tensor_integrity;
72pub use tensor_integrity::{
73    commit_state, integrity_root, lineage_commitment, transformation_commitment, verify_lineage,
74    LineageCommitment,
75};
76
77#[cfg(not(target_arch = "wasm32"))]
78pub use host::{DmaBuffer, IoError, DEFAULT_BUFFER_SIZE, PAGE_SIZE};
79
80#[cfg(not(target_arch = "wasm32"))]
81pub use gpu::{GpuError, GpuIntegrator, PlatformGpuIntegrator, WebGpuIntegrator};
82
83#[cfg(not(target_arch = "wasm32"))]
84pub use hetero_dispatch::{
85    plan_fusion, select_precision, ComputeBackend, HeterogeneousDispatcher, HostCapabilities,
86    PowerThermalBudget, Precision, TensorOp, TensorOpKind, ZeroCopyStrategy,
87};
88
89// ─── Opcodes ─────────────────────────────────────────────────────────────────────
90//
91// - `OP_SIMPSONS_INTEGRATION` (0x50): Simpson's rule integration
92// - `OP_TRAPEZOIDAL_INTEGRATION` (0x51): Trapezoidal rule
93// - `OP_RK4_STEP` (0x52): Runge-Kutta 4th order ODE step
94// - `OP_ADAPTIVE_STEP` (0x53): Adaptive step size control
95// - `OP_GPU_INTEGRATION` (0x54): GPU-accelerated integration
96
97pub const OP_SIMPSONS_INTEGRATION: u8 = 0x50;
98pub const OP_TRAPEZOIDAL_INTEGRATION: u8 = 0x51;
99pub const OP_RK4_STEP: u8 = 0x52;
100pub const OP_ADAPTIVE_STEP: u8 = 0x53;
101pub const OP_GPU_INTEGRATION: u8 = 0x54;