# SciForge
A comprehensive scientific computing library written in pure Rust.
[](LICENSE)
[]()
[]()
## Overview
SciForge provides a wide range of scientific computing tools spanning mathematics, physics, chemistry, biology, geology, astronomy, and meteorology — all in a single, dependency-free Rust crate.
- **Zero external dependencies**
- **575 source files** — 48 600+ lines of Rust
- **94 tests** — zero clippy warnings
- **118 elements** — full periodic table dataset (IUPAC 2024)
## Modules
| **Constants** | 5 | Fundamental, astrophysical, atomic constants, unit conversions, element data |
| **Mathematics** | 17 | Complex numbers, tensors, linear algebra, FFT, ODE/PDE solvers, statistics, optimization |
| **Physics** | 11 | Relativity, quantum mechanics, thermodynamics, electrodynamics, optics, acoustics |
| **Chemistry** | 26 | Kinetics, electrochemistry, organic/inorganic, spectroscopy, polymers, quantum chemistry |
| **Biology** | 44 | Genetics, neuroscience, ecology, evolution, pharmacology, genomics, proteomics |
| **Geology** | 4 | Seismology, radiometric dating, petrology, plate tectonics |
| **Astronomy** | 4 | Orbital mechanics, stellar astrophysics, cosmology, celestial mechanics |
| **Meteorology** | 4 | Atmospheric modeling, radiation transfer, dynamics, precipitation |
| **Hub** | 5 | Central dispatch API, domain engine, tools, prelude |
| **Benchmark** | 6 | Benchmark engine, binary encode/decode, simulation, reporting, multi-format export |
| **Parser** | 5 | CSV, JSON, YAML, Markdown, HTML parsing and validation |
## Quick Start
Add SciForge to your `Cargo.toml`:
```toml
[dependencies]
sciforge = "0.0.1"
```
### Example
```rust
use sciforge::benchmark::engine::BenchmarkMetrics;
use sciforge::parser::csv;
use sciforge::parser::json;
```
## Benchmark Export
The benchmark module generates a complete interactive HTML dashboard featuring:
- IUPAC 2024 periodic table grid with category-colored gradient cells
- Click-to-detail element cards with full metrics
- SVG chart visualizations (category distribution, timing analysis, top 10 fastest/slowest)
- Tabbed file browser for CSV, JSON, YAML, TOML exports
- Markdown summary report
## Periodic Table Data
118 element data files organized by IUPAC category under `tableau-periodique/`:
```
tableau-periodique/
├── actinides/
├── elements-superlourds/
├── gaz-nobles/
├── halogenes/
├── lanthanides/
├── metalloides/
├── metaux-alcalino-terreux/
├── metaux-alcalins/
├── metaux-de-transition/
├── metaux-post-transition/
└── non-metaux/
```
## Building
```bash
cargo build
```
## Testing
```bash
cargo test
```
94 tests (28 benchmark + 66 parser), all passing.
## Linting
```bash
cargo clippy
```
Zero warnings.
## Project Structure
```
src/
├── lib.rs
├── constants/ # Physical constants and element data
├── maths/ # Mathematical computing (17 submodules)
├── physics/ # Physics simulations (11 submodules)
├── chemistry/ # Chemical modeling (26 submodules)
├── biology/ # Biological computing (44 submodules)
├── geology/ # Earth sciences (4 submodules)
├── astronomy/ # Astrophysics (4 submodules)
├── meteorology/ # Atmospheric sciences (4 submodules)
├── hub/ # Central dispatch API
├── benchmark/ # Benchmarking and export pipeline
└── parser/ # Multi-format file parsing
tests/
├── benchmark.rs # 28 benchmark tests
└── parser.rs # 66 parser tests
tableau-periodique/ # 118 element data files
```
## Contributing
See [Contributing.md](Contributing.md) for guidelines.
## Roadmap
See [ComingSoon.md](ComingSoon.md) for upcoming features and development plans.
## Changelog
See [ChangeLog.md](ChangeLog.md) for version history.
## License
[MIT](LICENSE)