physics_in_parallel 0.1.6

High-performance infrastructure for numerical simulations in physics
Documentation
# Physics-in-Parallel

**Physics in Parallel** is a scientific computing package written in Rust, designed to provide a high-performance, modular, and parallelized infrastructure for computational physics and applied mathematics. The project emphasizes both **generality** (supporting a wide range of scalar types, tensor structures, and stochastic models) and **efficiency** (fine-grained memory layouts, data-parallelism, and numerical stability).

---

## Core Goals
1. **Unified Scalar Abstraction**  
   - A single `Scalar` trait unifies integers, floating-point numbers, and complex types.  
   - Provides a consistent API for fundamental operations (conjugation, norm, square root, finiteness checks) without fragmenting the ecosystem into separate traits.

2. **Tensor Infrastructure**  
   - Dense tensor structures with flat-memory layouts for cache efficiency.  
   - Parallelized elementwise operations (`+`, `-`, `*`, `/`) using Rayon.  
   - Planned support for sparse tensors and symmetry-aware storage (symmetric, antisymmetric, triangular).  
   - Serialization and deserialization into human-readable formats (e.g., JSON, string DSL).

3. **Randomized Structures**  
   - Efficient generators for ensembles of random vectors under different distributions (uniform, Gaussian, etc.).  
   - Supports elementwise and vectorwise sampling, crucial for Monte Carlo simulations, stochastic dynamics, and statistical physics models.

4. **Vector Collections (SoA Layout)**  
   - `VectorList<T, D>` implements a **Structure-of-Arrays (SoA)** design: each dimension stored contiguously for SIMD- and cache-friendly operations.  
   - Provides raw and high-level accessors, normalization utilities, and batch linear algebra operations.  
   - Full set of arithmetic operator overloads with parallel execution.

5. **Parallelism by Default**  
   - Leverages Rayon to parallelize across vectors, tensor slices, and stochastic sampling automatically.  
   - Ensures scaling from laptops to HPC environments with minimal user intervention.

---

## Use Cases
- **Stochastic field dynamics:** simulation of Gaussian/random fields, Langevin noise terms, and diffusion processes.  
- **Ecological and population dynamics:** lattice-based simulations requiring structured random dispersal kernels.  
- **General numerical physics:** tensor operations, linear algebra utilities, and custom kernels for PDE/ODE solvers.  
- **Research reproducibility:** portable serialization and string-based tensor construction for tests and validation.

---

## Design Philosophy
- **Minimal but expressive traits**: one `Scalar` trait, extensible tensor backends.  
- **Separation of concerns**: tensors, random vectors, and physics models live in modular sub-crates.  
- **High-performance defaults**: SoA layouts, flat indexing, cache-aligned data, and parallelism without explicit boilerplate.  
- **Bridging ecosystems**: Rust core for speed, JSON/Serde for portability, and Python bindings (planned) for analysis and visualization.

---

## Current Status
The package currently provides:
- A unified `Scalar` trait for real and complex numbers.  
- Dense tensor structures with parallelized arithmetic.  
- Random vector generators with uniform/normal sampling.  
- VectorList utilities for parallel linear algebra in SoA format.  
- Serialization and deserialization utilities for testing and interchange.  

Planned extensions include:
- Sparse tensor formats.  
- Advanced symmetry handling in tensors.  
- Physics model modules (diffusion–Langevin systems, lattice ecological dynamics).  
- Python bindings for seamless workflow integration.

---

**Physics in Parallel** aims to be a research-grade platform that combines the performance of low-level Rust with the clarity and modularity needed for exploratory and large-scale physics simulations.