| Crates.io | deep_causality_physics |
| lib.rs | deep_causality_physics |
| version | 0.5.0 |
| created_at | 2025-12-13 23:57:06.33026+00 |
| updated_at | 2026-01-22 07:38:44.369577+00 |
| description | Standard library of physics formulas and engineering primitives for DeepCausality. |
| homepage | |
| repository | https://github.com/deepcausality/deep_causality.rs |
| max_upload_size | |
| id | 1983566 |
| size | 566,660 |
A library of physics formulas and engineering primitives for DeepCausality.
deep_causality_physics provides a comprehensive collection of physics kernels, causal wrappers, and physical
quantities designed for use within the DeepCausality hyper-graph simulation engine. It leverages Geometric Algebra (via
deep_causality_multivector) and Causal Tensors to model complex physical interactions with high fidelity.
Add this to your Cargo.toml:
[dependencies]
deep_causality_physics = { version = "0.3.0" }
# For QCD hadronization (Lund string fragmentation) - use os-random feature
# deep_causality_physics = { version = "0.3.0", features = ["os-random"] }
This crate is organized into modular domains, each providing low-level computation kernels and high-level causal wrappers:
This library is designed with a clear distinction between computational kernels and theoretical frameworks:
schwarzschild_radius, lorentz_force,
cahn_hilliard_flux) in isolation, use the standalone kernels. These are pure functions, stateless, and
efficient.src/theories). These leverage Geometric Algebra (GA) and *
Gauge Fields* to model the entire coherent system, ensuring mathematical consistency and high precision across all operations.๐ Read More: Understanding Gauge Theories & Geometric Algebra โ A detailed guide on how Gravity, Electromagnetism, and Weak Force have been implmented using a shared topological backend.
The library follows a functional and causal architecture:
Kernels (*::mechanics, *::gravity, etc.): Pure functions that perform the raw physical computations. They
operate on CausalTensor, CausalMultiVector, Manifold, or primitive types. They are stateless and side-effect
free.
klein_gordon_kernel computes $(\Delta + m^2)\psi$.Theories (theories/*): High-level implementations of complete physical theories (GR, EM, Electroweak) that
integrate with deep_causality_topology. They use Gauge Fields and Geometric Algebra to unify disparate
physical phenomena under a single mathematical roof.
GR struct implements GrOps by calling topology-level CurvatureTensor methods.Wrappers (*::wrappers): Monadic wrappers that lift kernels into the PropagatingEffect monad. These allow
physics functions to be directly embedded into CausalEffect functions within a DeepCausality graph.
apply_gate wraps apply_gate_kernel to validly propagate state changes in the causal graph.Quantities (*::quantities, units::*): Newtype wrappers (e.g., Speed, Mass, Temperature, FourMomentum,
Hadron) that enforce physical invariants (e.g., mass cannot be negative) and type safety.
Metric Types: Re-exports from deep_causality_metric for sign convention handling (LorentzianMetric,
EastCoastMetric, WestCoastMetric, PhysicsMetric).
use deep_causality_physics::{
time_dilation_angle, spacetime_interval,
Speed, Time, Length
};
use deep_causality_multivector::{CausalMultiVector, Metric};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// 1. Define Spacetime Events using Geometric Algebra
// Minkowski Metric (+---) for 4D spacetime
let metric = Metric::Minkowski(4);
// Event A at origin
let event_a = CausalMultiVector::new(vec![0.0; 16], metric).unwrap();
// Event B at (t=10, x=5, y=0, z=0)
// Multivector data layout depends on dimension, assume standard layout
let mut data_b = vec![0.0; 16];
data_b[1] = 10.0; // Time basis
data_b[2] = 5.0; // X basis
let event_b = CausalMultiVector::new(data_b, metric).unwrap();
// 2. Compute Spacetime Interval (Wrapper returns PropagatingEffect)
let interval_effect = spacetime_interval(&event_b, &metric);
if let Ok(s2) = interval_effect {
println!("Spacetime Interval s^2: {}", s2);
}
Ok(())
}
use deep_causality_physics::{
FourMomentum, LundParameters, lund_string_fragmentation_kernel
};
fn main() -> Result<(), Box<dyn std::error::Error>> {
// Configure Lund parameters (defaults tuned to LEP e+e- data)
let params = LundParameters::default();
// Define a quark-antiquark string (e.g., from e+e- โ qqฬ)
// Quark moving in +z, antiquark in -z
let quark = FourMomentum::new(50.0, 0.0, 0.0, 50.0);
let antiquark = FourMomentum::new(50.0, 0.0, 0.0, -50.0);
let endpoints = vec![(quark, antiquark)];
// Fragment the string into hadrons
let mut rng = rand::thread_rng();
let hadrons = lund_string_fragmentation_kernel(&endpoints, ¶ms, &mut rng)?;
println!("Produced {} hadrons:", hadrons.len());
for h in &hadrons {
println!(" PDG ID: {}, Energy: {:.2} GeV", h.pdg_id(), h.energy());
}
Ok(())
}
Code examples are in the repo example folder.
The crate supports no_std environments via feature flags.
default: Enables std.std: Usage of standard library (includes alloc).alloc: Usage of allocation (Vec, String) without full std.os-random: Enables OS-based secure random number generator and Lund string fragmentation for QCD hadronization.Licensed under MIT. Copyright (c) 2025 DeepCausality Authors.