Open, reproducible activation and nuclide-inventory calculations with a native desktop, command line, and Python.
Download ACTINV selects the desktop installer for your computer when the browser can identify it. If it cannot, choose from the downloads shown. No Rust or Python is needed. Windows: open the installer, then launch ACTINV from Start. macOS: open the disk image and drag ACTINV to Applications. Linux: allow the AppImage to run in its file properties, then double-click it. Windows and Linux downloads are for x86_64 computers.
Desktop 0.5.0-preview.1 (solver 1.6.1) is unsigned. See first-launch help and installation details if your system shows a security notice, or for an optional Linux application-menu shortcut.
Open in browser lets you try the results tutorial, inspect and compare result files, and edit and download problem files. Your files stay on your device. Use the desktop app to run calculations and work with nuclear data. See the browser guide for details.
ACTINV answers a practical question: what radioactive nuclides are created when a material is irradiated, and what happens to them afterward? Give it a material, particle-flux spectrum, irradiation and cooling schedule, and evaluated nuclear data. It returns inventories, activity, decay heat, photon sources, selected radiological responses, and an explicit record of anything the supplied data could not account for.
It is useful for activation studies, shutdown inventories, source-term preparation, and reproducible comparisons with other inventory codes. The numerical core is written in Rust and shared by the desktop, Python interface, and standalone command.
PyPI · crates.io · Desktop preview downloads — Windows, macOS, Linux · v1.6.1 software release · v1.1.0 nuclear-data release · Documentation
Explore the desktop interface ↓
ACTINV is research-grade software. Version 1.0 is a technically validated release, not an approval for licensing, safety, waste classification, or regulatory decisions. See Qualification boundary before using results in a formal analysis chain.
ACTINV support was merged into JADE's developing branch on
October 1, 2026. The reviewed integration runs ACTINV
locally and compares the initial FNS iron five-minute decay-heat case at all 20 measured cooling times.
The accompanying benchmark input and measurement package
was accepted into the IAEA Nuclear Data Section's Open Benchmarks repository the same day.
See external review, integrations, and validation for the dated evidence and scope, and the JADE setup guide for the merged upstream workflow. These records document acceptance of the integration and benchmark package; scientific benchmark results remain in the validation documentation.
For command-line and Python use, one command installs both the Python interface and the actinv terminal
command on Python 3.9 or newer:
pip install actinvPrebuilt wheels are available for supported systems, so this route does not require a Rust compiler. If you already use Rust and only want the command-line program, install it directly from crates.io:
cargo install --locked actinv-cliPrebuilt standalone executables are also attached to the v1.6.1 GitHub Release.
Confirm the installation at any time with actinv --version or explore every command with actinv --help.
The software package stays small by keeping nuclear data in a separate, versioned release. Download the recommended neutron data in one command:
actinv data fetchThe command downloads about 79 MiB, verifies every file with SHA-256 before installing it under
actinv-data/v1.1.0/, and prints the exact paths to paste into a problem. Nothing is silently updated: a later data
release goes in a new version directory. See Data setup for the other particle and covariance bundles.
Problem files may also use portable symbolic references — "path": "catalog:tendl-2025-neutron-709g" resolves the
installed artifact by ID and fills its declared hash from the embedded catalog. actinv new emits these by default;
set ACTINV_DATA_DIR if your data lives somewhere other than ./actinv-data.
If you are working from the source checkout, the included iron example already uses those default paths:
actinv validate examples/fns_fe_5min.json
actinv run examples/fns_fe_5min.json fns_fe_5min_result.jsonAn ACTINV problem is a JSON file containing the data paths printed by actinv data fetch, a material composition, a
group flux spectrum, and an irradiation/cooling schedule. Validate it first, then run it:
actinv new problem.json
actinv validate problem.json
actinv run problem.json result.jsonactinv new creates the complete FNS iron example, including its spectrum, without overwriting an existing file.
Use --data-dir /path/to/actinv-data if you installed data elsewhere. Edit its material and history for your study.
validate checks the specification; symbolic catalog references must resolve to installed artifacts. Add --files to check readable inputs
(including library indexes), or --hashes to also check declared hashes. Evaluated-data compatibility is checked during a run.
Use actinv doctor problem.json to diagnose setup and actinv COMMAND --help for command help.
The same calculation from Python is:
from pathlib import Path
import json
import actinv
problem = Path("problem.json").read_text(encoding="utf-8")
print(actinv.validate(problem))
result = json.loads(actinv.run(problem))
last_step = result["steps"][-1]
print("decay heat (W/g):", last_step["heat_W_per_g"]["total"])
print("activity (Bq/g):", sum(last_step["activity_Bq_per_g"].values()))
print("unaccounted inputs:", result["ledger"])On the first run for a library and flux spectrum, ACTINV prepares a verified local calculation cache. That setup is automatic; later runs reuse the compact data and need much less memory. The original nuclear-data files and their SHA-256 hashes remain the recorded inputs—cache files never replace them in the result certificate.
Deleting the cache is always safe and changes only how long the next preparation takes. ACTINV normally uses your
platform's standard cache directory. Set ACTINV_CACHE_DIR to an absolute path if you want the disposable cache on a
larger or faster disk, for example ACTINV_CACHE_DIR=/data/actinv-cache actinv run problem.json result.json.
Start with the specification guide, which explains every field and includes complete examples. Unknown fields are rejected, so misspelled options do not silently change a calculation. At any time, verify the installed data without downloading it again:
actinv data verifyThe optional native egui desktop supports problem editing, verified data downloads, background calculations, interactive results and comparisons, photon spectra, production pathways, and JSON/CSV export. The Help button provides guided walkthroughs that dim the workspace and highlight the relevant controls.
From a source checkout with Rust installed:
cargo run --release -p actinv-guiThis launches a native application window. After building, the executable is target/release/actinv-gui
(actinv-gui.exe on Windows). Desktop builds are checked on Windows, macOS Apple Silicon, and Linux;
desktop preview installers and application bundles are prepared separately from the published v1.6.1 release. PyPI and
cargo install actinv-cli install the command-line interface, not the desktop.
Download the unsigned desktop preview for Windows, macOS, and Linux. The desktop installation guide covers first-launch notices, data setup, and verification.
Edit durations with familiar units, reorder segments, and inspect their relative lengths in the timeline.
Select a time and nuclide, switch between activity, heat, and inventory, add a comparison, and export JSON or CSV. This capture uses the small synthetic P11 control fixture to demonstrate the interface.
The walkthrough highlights the actual controls, dims the surrounding workspace, and explains each step. Use Back, Next, or Exit tour at any point; F1 opens Help and Escape closes the walkthrough.
See Desktop guide for setup, walkthroughs, and verification. The desktop uses the same solver as the CLI and Python API, with Avila Labs branding and the full result ledger and certificate.
The standalone command builds deterministic libraries from supported ENDF-6 evaluations. For example:
actinv build-library /data/TENDL-2025/n /data/tendl2025-n.npz \
--format tendl --projectile neutron --groups fispact-709 \
--temperature-K 293.6 --workers 4 --cache /data/actinv-cacheFor MF=33 cross-section uncertainty information:
actinv build-covariance /data/TENDL-2025/n /data/tendl2025-n.npz \
/data/tendl2025-n.cov.npz --workers 4 --cache /data/actinv-cov-cacheFor damage-energy (dpa) tables from ENDF-6 evaluations carrying MF=3/MT=444:
actinv build-damage /data/damage-evaluations /data/damage-709g.json \
--projectile neutron --groups fispact-709 --cache /data/actinv-damage-cacheEvery input file is SHA-256 hashed in the result certificate. Generated bulk libraries and raw nuclear-data inputs are not stored in this repository.
ACTINV accepts a spectrum from any source. It also has strict importers for documented subsets of OpenMC statepoints, MCNP MESHTAL/MCTAL files, and FISPACT flux files. Normalization must always be stated explicitly:
actinv import-flux openmc statepoint.h5 flux.ndjson \
--tally 7 --source-rate 1.0e15 --energy-floor-eV 1.0e-5
actinv mesh mesh.json mesh-result.ndjsonSelected decay-photon steps can be exported as OpenMC or MCNP source fragments:
actinv export-openmc result.json 2 source.py
actinv export-mcnp result.json 2 source.sdefMesh cells are solved independently. ACTINV does not perform particle transport, spatial coupling, criticality, or
thermal-hydraulic feedback. The mesh spec (docs/SPEC.md) supports group_workloads (identical rebinned spectra
share one solve, recorded as cells_served_from_reuse), cell_result_fields (selectable per-cell output),
memory_limit_bytes (a post-hoc peak-RSS guard), and resume (the output file is its own checkpoint; an
interrupted run resumes after its last complete cell record byte-identically). The executed scale evidence is a
20,000-cell run on the pinned TENDL-2025 library, recorded in results/g3_p21_executed.json.
Depending on the requested outputs, each time step can contain:
- nuclide atoms and activity;
- total and alpha/beta/gamma decay heat;
- evaluated decay-photon lines or multigroup sources;
- ranked production pathways;
- user-selected clearance, waste, ingestion, or inhalation responses;
- NRT damage observables (damage-energy rate, per-element and aggregate dpa) from a hash-pinned
actinv-damage-table-1produced byactinv build-damage; - an MF=33 cross-section uncertainty band and numerical-method comparison; and
- a ledger for missing decay/yield/response/damage data, pruned populations, balance terms, and method resolution.
Schedule steps may also declare continuous feed (atoms s⁻¹ g⁻¹ per nuclide) and first-order removal (s⁻¹ per
nuclide or element) — for flowing systems, coolant purification, or irradiated-target feed — with removed atoms
accounted in a dedicated sink.
actinv reverse inverts a schedule against measured activities: scalar mode recovers a common flux multiplier by
weighted least squares; --segments recovers per-irradiation-step multipliers by non-negative least squares. Both
are linear-regime methods with named refusals outside it:
actinv reverse problem.json measurements.json estimate.json
actinv reverse problem.json measurements.json estimate.json --segmentsactinv reverse-qualified is the banded counterpart: it propagates MF=33 nuclear-data covariance into the
measurement covariance (C = C_meas + C_model, with C_model[i,j] = G_iᵀΣG_j evaluated at a first-pass
estimate), then re-solves by generalized least squares. The emitted actinv-reverse-qualified-1 document
carries the posterior covariance and correlation between segments, per-segment identifiability flags, chi-square
pulls, and which measurements dominate each estimate — the forward problem's uncertainty block must declare
banded activity:<nuclide> responses for every measured nuclide:
actinv reverse-qualified problem.json measurements.json qualified.ndjsonactinv optimize searches a declared design box — composition fractions, flux scale, schedule step durations —
with a seeded, derivative-free optimizer. Every candidate is solved through the identical solver path and ledgered;
objectives and constraints can evaluate on propagated MF=33 band edges, so a nominally acceptable design can be
rejected for failing at its 95th-percentile uncertainty edge:
actinv optimize examples/optimize_ra_steel/opt.json out/See OPTIMIZE.md for the optspec schema. Band-propagated candidates cost minutes each — this is a batch tool, not an interactive one.
Radiological coefficients are user-supplied, hash-pinned tables. ACTINV does not choose a jurisdiction, regulation, chemical form, aerosol class, or safety margin for you.
On identical TENDL-2017 data ACTINV leads FISPACT-II on the FNS 132-experiment decay-heat corpus — median |log C/E| 0.103 vs 0.105, experiments within 30% 71 vs 69 — and on identical ENDF-8 data it beats OpenMC's depletion path on every pooled metric (median |ln C/E| 0.131 vs 0.181; p90 0.970 vs 1.640). On the decay-aware TENDL-2023 rebuild the pooled geometric-mean C/E is 1.097 vs the frozen FISPACT-T17 reference's 1.244. ACTINV also emits what the compared codes do not: propagated covariance bands on every response, band-certified optimization, and a certified-screening fast tier. Full numbers and methods: competitive benchmark.
For a complete measured-data example, see the FNS iron decay-heat case: download verified inputs, run the CLI, and compare all twenty experimental measurements with a table and plot.
The repository carries executable controls and compact evidence for every release phase. Highlights include:
- 132 IAEA FNS decay-heat experiments across 73 materials;
- independent decay-photon, transport-import, fission-yield, pulse-history, and mesh checks;
- complete deterministic TENDL-2025 neutron/proton/deuteron/alpha and EAF-2010 library builds;
- independent CRAM, sensitivity, MF=33 covariance, and uncertainty-propagation checks;
- a fixed one-million-case reliability check across all supported public input readers; and
- an independently reproduced FNG/ITER cell-620 activation history at all 170 time points.
Validation establishes behavior for the recorded models, inputs, and acceptance bounds. It does not establish that a particular user's material, spectrum, nuclear-data choice, radiological table, or regulatory scenario is suitable. The shipped TENDL-2025 evaluations carry documented upstream defects affecting 17 IRDFF-II benchmark targets — see known data limitations. See the competitive benchmark, Validation, P17 held-out validation, v1.0 release notes, and the qualification boundary for the evidence and complete limitations.
- Inputs stay attributable. Nuclear data are distributed separately under their own terms, verified before use, and recorded by hash in every calculation.
- Incomplete information stays visible. Missing data and approximations appear in the ledger.
- Interfaces share one solver. CLI, Python, prepared, and mesh paths are checked for scientific identity.
- Evidence is reproducible. Protocols are frozen before results; repair records are append-only.
Read the ACTINV Handbook for installation, a first calculation, results, data setup, troubleshooting, benchmark interpretation, and CLI/Python reference. You can also browse its Markdown source in this repository.
Start a calculation · Problem specification · Data setup · Competitive benchmark explained · Scope and qualification
Technical evidence and contributor material remain in the repository: benchmark report, validation records, external evidence, data-source record, and maintainer documentation.
ACTINV is dual-licensed under MIT or Apache-2.0. Contributions use the Developer Certificate of Origin. Physics or data-handling changes need a regression control and an append-only evidence record; see CONTRIBUTING.md.


