Materials
Build materials from chemical formulas, inspect fractions, mix, and export XML.
Nucleide models a material as a map from canonical nuclide identifiers to masses. From that compact representation it can derive atom fractions, weight fractions, and serializations used by transport codes.
From a chemical formula
The formula parser understands element symbols, parentheses, and hydrates. For
example, H2O expands to natural hydrogen and natural oxygen using AME2020
masses and natural abundances.
Loading the live demo…
Browse the Materials Compendium
The full DOE/PNNL Materials Compendium — hundreds of named materials with
isotope-level weight fractions — is fetched as JSON and parsed on this page,
using the same MaterialsCompendium API available
in Python. Pick a material to inspect its composition.
Loading the live demo…
Atom vs. weight fractions
For a material with stored masses :
where is the atomic mass of nuclide . The demo above computes both and plots them as grouped horizontal bars.
Mixing materials
Material::mix_by_mass combines materials using relative mass weights. The
fractions do not need to sum to one; they are normalized internally.
Separator, blender, and CUSUM
The demo’s scalar section runs the fuel-cycle micro-adds below:
materialSeparate (mass-efficiency split into product/tails),
materialBlend (fixed-ratio blend), and cusumDetect (one-sided upper Page
CUSUM over a scalar series with Welford statistics).
XML export
The to_xml(name, density) method produces an OpenMC-style material XML
fragment, including the canonical nuclide list, densities, and mass fractions.
Dose per gram and code-card emission
Screening-level dose factors (vendored HNF-5636 tables; dose_factor
lookups and dose_per_g per pathway with the EPA default) run in the
dose section at the end of the demo above: pick a pathway
(air/soil/ingest/inhale) and source (EPA/DOE/GENII) to score
the current formula. Compositions with nuclides outside the tables —
including the -1 GENII/DOE air sentinels — report an inline error instead
of a value; fully stable compositions such as H2O return 0 (no activity to
convert). For external-exposure coefficients, EPA FGR 15
(nucleide.nuclei.fgr15_dose_rate) is the Python-side complement —
runtime-downloaded, not vendored, and the live demos do not expose it; it
never silently overrides dose_per_g. The five-dialect card emitter (emit_cards /
emit_drift_table, plus the emit_armi_cards ARMI blueprint bridge) runs in
the Code-card emission demo. For batch use see
the Build materials and
Emit code cards tutorials.
See also
- Tutorial: Build materials
- Theory: Nuclear data
- Crate docs:
crates/material/src/lib.rs