nucl-parquet
Fast, thread-safe access to nuclear interaction data stored as Parquet files.
Designed as the physics data backbone for Monte Carlo particle transport codes.
All data structures are Send + Sync — load once, share across threads via Arc.
Data sources
- EPDL97: Photon cross-sections (photoelectric, Compton, Rayleigh, pair production)
- EADL: Atomic relaxation (fluorescence X-ray and Auger transition probabilities)
- EEDL: Electron cross-sections (elastic, bremsstrahlung, ionization)
- XCOM: Total mass attenuation coefficients (µ/ρ, µ_en/ρ)
- Stopping: NIST PSTAR/ASTAR/ESTAR + dSTAR/tSTAR and CatIMA mass stopping power tables
- Meta: Isotopic abundances, radioactive decay chains, and dose rate constants
- XS: Nuclear reaction cross-sections (TENDL and other evaluated libraries)
Usage
use nucl_parquet::PhotonDb;
use std::sync::Arc;
# fn main() -> nucl_parquet::Result<()> {
let db = Arc::new(PhotonDb::open("path/to/nucl-parquet/meta")?);
// Thread-safe lookups (no locks, data is immutable)
let xs = db.cross_section(29, 511.0, nucl_parquet::Process::Photoelectric);
let ff = db.form_factor(29, 0.5); // Rayleigh form factor at q=0.5
# Ok(())
# }
Quick start (with fetch feature)
// requires `fetch` feature
let data = nucl_parquet::DataDir::ensure()?;
let photon = data.photon_db()?;