nucl-parquet 0.13.6

Nuclear data as Parquet — zero-copy cross-section lookups for Monte Carlo transport
Documentation

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()?;