oxirs-physics
Physics-informed digital twin simulation bridge for OxiRS semantic web platform.
Overview
oxirs-physics bridges the gap between semantic RDF knowledge graphs and SciRS2-powered physics simulations, enabling physics-informed AI reasoning and digital twin synchronization.
Key Capabilities:
- Extract simulation parameters from RDF graphs and SAMM Aspect Models
- Run physics simulations using SciRS2 (thermal, mechanical, fluid, electrical, etc.)
- Validate results against physics constraints (conservation laws, dimensional analysis)
- Inject simulation results back to RDF with full provenance tracking
- Synchronize physical asset state with digital twin representations
Architecture
┌─────────────────────────────────────────────────────────────────┐
│ RDF Knowledge Graph │
│ • Entity properties (mass, dimensions, material) │
│ • Initial conditions (temperature, pressure, velocity) │
│ • Boundary conditions (constraints, forces, heat flux) │
│ • SAMM Aspect Models (structured domain ontologies) │
└───────────────┬─────────────────────────────────────────────────┘
│ extract_parameters
▼
┌─────────────────────────────────────────────────────────────────┐
│ Parameter Extractor (SPARQL queries) │
│ • Parse RDF properties → SimulationParameters │
│ • SAMM model interpretation → structured data │
│ • Unit conversion & validation │
└───────────────┬─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Physics Simulation Engine │
│ │
│ Thermal: Heat diffusion (scirs2-integrate ODE, RK4) │
│ Mechanical: Structural FEM, modal & vibration analysis │
│ Fluid: Navier-Stokes CFD, pipe flow, Bernoulli, drag │
│ Electrical: Modified Nodal Analysis circuit simulation │
│ Coupled: Statistical mech., thermo., celestial, quantum │
│ │
│ Features (in-house on scirs2-core, opt-in): │
│ • GPU acceleration (scirs2-core::gpu, feature `gpu`) │
│ • PINN residual correction (feature `pinn_correction`) │
└───────────────┬─────────────────────────────────────────────────┘
│ SimulationResult
▼
┌─────────────────────────────────────────────────────────────────┐
│ Physics Constraint Validation │
│ • Conservation laws (energy, momentum, mass) │
│ • Dimensional analysis (unit consistency) │
│ • Physical bounds (temperature, pressure limits) │
│ • Numerical stability (convergence checks) │
└───────────────┬─────────────────────────────────────────────────┘
│ validated results
▼
┌─────────────────────────────────────────────────────────────────┐
│ Result Injector (SPARQL UPDATE) │
│ • Insert state trajectory to RDF │
│ • Add derived quantities (stress, strain, flow rate) │
│ • Record provenance (software version, parameters hash) │
│ • Link to simulation run metadata (timestamp, convergence) │
└───────────────┬─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ Updated RDF Knowledge Graph │
│ • Simulation results (time series data) │
│ • Provenance trail (reproducibility) │
│ • Digital twin state synchronized │
└─────────────────────────────────────────────────────────────────┘
Features
Core Features (Implemented)
- Simulation Orchestration:
SimulationOrchestratorcoordinates extract → run → inject workflow across registered simulation backends - Multi-Domain Simulations: Thermal (1D heat diffusion, RK4), structural (FEM stress analysis, modal analysis, vibration analysis), fluid dynamics (Navier-Stokes, pipe flow, Bernoulli, drag), electromagnetics (Modified Nodal Analysis), statistical mechanics, thermodynamics, celestial mechanics (N-body, Kepler, vis-viva), quantum mechanics (particle-in-box, QHO, tunneling, spin), optics (Snell, Fresnel, thin lens, diffraction), control systems (PID/cascade), kinematics, and 1D/2D wave propagation (FDTD)
- RDF / SPARQL Integration: SPARQL-based parameter extraction (
rdf::sparql_builder,simulation::parameter_extraction) and SPARQL UPDATE result injection (simulation::result_injection), with RDF literal parsing and SI unit conversion (rdf::literal_parser) - SAMM Aspect Model Bridge: Parses SAMM Aspect Model TTL and bridges it to simulation parameter types (
samm::physics_aspect,samm::fem_bridge) - Physics Constraint Validation: Conservation laws (energy, momentum, mass, with angular momentum/entropy checkers), Buckingham Pi dimensional analysis (
constraints::buckingham_pi), and type-safe SI quantities via theuomcrate (simulationfeature) - Digital Twin & Bidirectional Sync: RDF ↔ physics-state synchronization (
sync::rdf_to_state,sync::state_to_rdf,sync::bidirectional) and a minimal versioned twin property store (digital_twin::twin_value) - DTDL v3 Support: Parses Microsoft Digital Twin Definition Language v3 documents and maps them to/from RDF (
dtdl::{parser,mapper,validator,types}) - Predictive Maintenance: Remaining-useful-life prediction and anomaly detection (
predictive_maintenance) - Material Property Database: Reference material properties shared across simulation domains (
material_database) - FEM & Adaptive Mesh Refinement: Finite-element assembly and adaptive mesh refinement for structural/thermal analysis (
fem,mesh_refinement) - Provenance Tracking: Full simulation metadata (software version, parameters hash, execution time) attached to every result
- Error Handling: Comprehensive error types for physics operations
- GPU-Accelerated Kernels (opt-in,
gpufeature): FEM stress assembly, Navier-Stokes pressure solve, and heat-diffusion stencils dispatched toscirs2_core::gpu, with automatic CPU fallback (GpuError::BackendUnavailable) when no device is present - PINN Residual Correction (opt-in,
pinn_correctionfeature): Pure-Rust feed-forward residual network applied online as a correction term to solver output (pinn) — no external ML framework dependency
Planned / Future Work
See TODO.md for the detailed roadmap. Remaining open areas include real-time streaming integration (e.g. via oxirs-stream) and expanding PINN correction beyond the current single-residual-network scope.
Installation
Add to your Cargo.toml:
[]
= { = "0.3.2", = ["simulation"] }
Feature Flags
| Feature | Default | Description | Dependencies |
|---|---|---|---|
simulation |
SciRS2 ODE solvers + type-safe uom quantities |
scirs2-integrate, uom |
|
gpu |
GPU-accelerated FEM/Navier-Stokes/heat-diffusion kernels (CPU fallback always available) | scirs2-core/gpu |
|
pinn_correction |
Pure-Rust PINN residual correction network | — (in-house) | |
full |
Currently aliases simulation |
simulation |
Note: samm, rdf, dtdl, sync, and the various simulation-domain modules
(mechanical, fluid, electromagnetic, etc.) are unconditionally compiled — they
are not behind feature flags.
Usage
Basic Thermal Simulation
use ;
use Arc;
async
Custom Simulation with Full Control
use ;
use HashMap;
async
Conservation Law Validation
use ;
use StateVector;
use HashMap;
Code Statistics
===============================================================================
===============================================================================
===============================================================================
Project Structure
oxirs-physics/
├── src/
│ ├── lib.rs # Public API and module declarations
│ ├── error.rs # Error types (PhysicsError)
│ ├── simulation/ # SimulationOrchestrator, parameter extraction,
│ │ │ # result injection, thermal (SciRS2 ODE / RK4)
│ │ └── {mod,parameter_extraction,result_injection,samm_parser,scirs2_thermal,simulation_runner}.rs
│ ├── constraints/ # Conservation laws, Buckingham Pi, dimensional
│ │ └── {mod,buckingham_pi,conservation_laws,dimensional_analysis,physical_bounds}.rs
│ ├── conservation/ # Extended conservation checkers (entropy, angular momentum)
│ │ └── {mod,checkers,checkers_impl,checkers_types,checkers_validator}.rs
│ ├── digital_twin/ # Digital twin state + minimal versioned property store
│ │ └── {mod,twin_value}.rs
│ ├── dtdl/ # DTDL v3 parser, RDF mapper, validator
│ │ └── {mod,parser,mapper,validator,types}.rs
│ ├── rdf/ # SPARQL builder, RDF literal parsing/serialization
│ │ └── {mod,sparql_builder,literal_parser,physics_rdf*}.rs
│ ├── rdf_extraction/ # RDF-graph parameter extraction helpers
│ ├── samm/ # SAMM Aspect Model TTL → simulation bridge
│ │ └── {mod,physics_aspect,fem_bridge}.rs
│ ├── sync/ # Bidirectional RDF ↔ physics-state synchronization
│ │ └── {mod,rdf_to_state,state_to_rdf,bidirectional}.rs
│ ├── gpu/ # GPU kernels (feature `gpu`): FEM stress, Navier-Stokes, heat
│ │ └── {mod,stress_assembly,navier_stokes_kernel,heat_kernel}.rs
│ ├── pinn/ # PINN residual correction (feature `pinn_correction`)
│ │ └── {mod,residual_model,loader,corrector}.rs
│ ├── fem/, mesh_refinement.rs # Finite-element assembly + adaptive mesh refinement
│ ├── predictive_maintenance/ # RUL prediction, anomaly detection
│ ├── material_database.rs # Reference material properties
│ ├── uom_quantities.rs # Type-safe SI quantities via `uom` (feature `simulation`)
│ └── {celestial_mechanics,control_systems,electromagnetics,fluid_dynamics,
│ heat_transfer,kinematics,modal_analysis,optics,quantum_mechanics,
│ signal_processing,statistical_mechanics,stress_analysis,
│ thermal_analysis,thermal_system,thermodynamics,vibration_analysis,
│ wave_propagation}.rs # Per-domain physics simulation modules
├── Cargo.toml # Dependencies and features
├── README.md # This file
└── TODO.md # Development roadmap
SciRS2 Integration
oxirs-physics is built on the SciRS2 foundation and follows the SciRS2 Integration Policy.
Core Dependencies
| SciRS2 Crate | Usage in oxirs-physics |
|---|---|
scirs2-core |
Array operations, random, SIMD, GPU (feature gpu), parallel |
scirs2-integrate |
ODE solvers for thermal/mechanical sims (feature simulation) |
FEM/structural analysis, statistical mechanics, and the PINN residual
corrector are implemented directly on scirs2-core (no scirs2-optimize,
scirs2-neural, scirs2-linalg, or scirs2-stats dependency).
Full SciRS2 Usage Examples
// Arrays and numerical operations
use ;
use mean;
// Random number generation
use ;
// Performance optimization
use simd_dot_product;
use par_chunks;
use ;
// Memory efficiency for large RDF datasets
use MemoryMappedArray;
use BufferPool;
// Profiling and metrics
use Profiler;
use Timer;
// Error handling
use ;
Development
Build & Test
# Build with all features
# Run tests (use nextest)
# Run with specific feature
# Lint (no warnings policy)
# Format check
Benchmarking
# Run benchmarks (when implemented)
Digital Twin Definition Language (DTDL)
oxirs-physics parses Azure Digital Twins' DTDL v3 documents and maps them to/from RDF (dtdl::{parser, mapper, validator, types}) for standardized twin definitions. See TODO.md for the roadmap.
Example DTDL integration:
Contributing
See the main OxiRS README for contribution guidelines.
Development Guidelines:
- SciRS2 First: Use SciRS2 crates instead of direct
ndarrayorrandimports - No Warnings: All code must compile without warnings (
cargo clippy -- -D warnings) - Physics Validation: All simulations must validate results against conservation laws
- Provenance: All results must include full provenance metadata
- Testing: Use
std::env::temp_dir()for temporary files in tests - Naming: Use
snake_casefor variables,PascalCasefor types
References
Physics Simulation
- SciRS2:
~/work/scirs/- Scientific computing foundation - Apache Jena:
~/work/jena/- RDF/SPARQL reference - Oxigraph:
~/work/oxigraph/- RDF triple store reference
Digital Twins
- Azure DTDL: Digital Twins Definition Language
- ISO 23247: Digital Twin Framework for Manufacturing
Standards
- SAMM: Semantic Aspect Meta Model
- W3C PROV: Provenance Ontology
License
Same as OxiRS parent project (see repository root).
Version
Current version: 0.4.0 (1,292 tests passing)
Part of the OxiRS semantic web platform.