endf 0.1.0

Recipe-driven parser and writer for ENDF-6 nuclear data files
Documentation

endf

A recipe-driven toolkit for reading, writing, and modifying ENDF-6 nuclear data files in Rust.

Based on the formal ENDF grammar from endf-parserpy, this crate uses a set of ENDF recipes (format descriptions) to parse any MF/MT section into structured data and write it back to valid ENDF-6 format.

Quick Start

use endf::parser::EndfParser;
use std::path::Path;

let parser = EndfParser::new()?;
let data = parser.parse_file(Path::new("neutrons.endf"))?;

// Access MF=3, MT=1, variable "QM"
if let Some(qm) = data.get_path("3/1/QM") {
    println!("QM = {}", qm);
}

// Modify and write back
let mut data = data;
data.set_path("3/1/QM", endf::value::EndfValue::Float(1.5));
let output = parser.write(&data)?;
std::fs::write("modified.endf", output)?;

Features

  • Recipe-driven -- parses and writes ENDF-6 files using a formal grammar, supporting five recipe formats: endf6, endf6-ext, jendl, pendf, errorr
  • Roundtrip support -- parse, modify values, and write back to valid ENDF-6 format
  • JSON conversion -- convert between ENDF and JSON representations
  • Parallel parsing -- optional multi-threaded section parsing via rayon (enabled by default, disable with default-features = false for WASM)
  • No unsafe code

Recipe Formats

Format Description
endf6 Standard ENDF-6 (default)
endf6-ext Extended ENDF-6 with obsolete LVT support
jendl JENDL-specific MF8/MT457 handling
pendf Pointwise ENDF (NJOY output)
errorr ERRORR covariance format (NJOY output)
let parser = EndfParser::builder()
    .endf_format("endf6-ext")
    .ignore_send_records(true)
    .build()?;

License

MIT