Skip to content
Back to skills

Tallies Results

ASecurity

"Configure OpenMC tallies and filters, inspect statepoint, summary,

  • 247 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 8, 2026
businesspythongoreactapi

Works with

  • cli
  • api

Security analysis

A100/100

Pro scans all 5 files and shows the line behind each finding

Scanned September 8, 2026

npx -y skills add VectorSpaceLab/AREX-Skill --skill tallies-results --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tallies Results?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tallies Results
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/vectorspacelab-tallies-results/badge)](https://www.skillsdirectory.com/skills/vectorspacelab-tallies-results)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tallies-results
description: "Configure OpenMC tallies and filters, inspect statepoint, summary,
  track, and particle-restart HDF5 outputs, and perform guarded post-processing,
  plotting, arithmetic, and uncertainty checks."
disable-model-invocation: true
metadata:
  disco-role: operating
license: NOASSERTION
---

# OpenMC tallies and results

Use this route when the immediate task is to define what OpenMC scores, select
filter bins, read an existing output file, or derive and visualize result data.
This route interprets files and constructs tally/result objects; it does **not**
run transport or manufacture a result when no output file is available.

## Route the request before acting

- **Model setup:** For materials, geometry, surfaces, cells, universes, lattices,
  sources, settings, or the minimum model needed around a tally, use
  [model-geometry](../model-geometry/SKILL.md). Keep this route focused on the
  tally/filter object and its result contract.
- **Runtime and data setup:** For installation, the executable or shared
  library, CMake/build flags, command-line execution, OpenMP/MPI, XML execution,
  or `cross_sections.xml` availability, use
  [setup-runtime](../setup-runtime/SKILL.md) before interpreting a failed run.
- **Nuclear-data semantics:** For ENDF/ACE/HDF5 data libraries, MGXS,
  cross-section conversion, depletion, decay, or data-dependent physics, use the
  sibling `nuclear-data-depletion` route. Do not duplicate those procedures in
  this result-reading route.
- **Specialized native interfaces:** For `openmc.lib`, C API/library mode,
  random ray, CMFD, weight windows, or optional native integrations, use the
  sibling `advanced-solvers` route.

If only a tally/filter XML or a readable HDF5 file is involved, the Python API
and HDF5-reader gates are sufficient; a transport executable and nuclear data
are separate gates owned by the routes above.

## Choose the artifact workflow

### 1. Define an input tally

Construct `openmc.Tally` with concrete `openmc.Filter` objects, then set
`nuclides`, `scores`, and, only when justified, `estimator`, `triggers`,
`higher_moments`, or `multiply_density`. Common filters include cell, material,
universe, surface, energy, outgoing energy, mesh, particle, time, distribcell,
reaction, angle, and mesh-derived filters. Use each filter's own validation and
units; do not pass arbitrary coordinate or ID arrays to a filter that expects a
mesh or domain object.

Inspect `tally.filters`, `tally.nuclides`, `tally.scores`, `tally.estimator`,
`tally.num_filter_bins`, `tally.num_nuclides`, `tally.num_scores`, and
`tally.shape` before exporting. Export a collection with
`openmc.Tallies([...]).export_to_xml(path)` or use the model's input-export
workflow. XML generation is not a simulation. For full model validity and
runtime execution, route to the sibling skills above.

### 2. Inspect a statepoint

For an explicit file, start with the safe metadata helper:

```text
python scripts/inspect_statepoint.py --help
python scripts/inspect_statepoint.py path/to/statepoint.h5 --require-statepoint
```

The helper opens HDF5 only; it never launches OpenMC. Then use
`openmc.StatePoint(path, autolink=False)` when summary association is missing,
stale, or not independently identified. Use the context manager, inspect
`sp.version`, `sp.run_mode`, `sp.n_realizations`, `sp.tallies`, and the chosen
tally's labels and shape, and use `sp.get_tally(...)` with exact matching flags
when an ambiguous lookup could select the wrong tally.

The default `autolink=True` is a convenience, not provenance validation. If
geometry-aware labels or distribcell paths are required, open the intended
`openmc.Summary(summary_path)` explicitly, verify that its geometry and IDs
belong to the same run, and then call `sp.link_with_summary(summary)`.

### 3. Read tracks and restart records

Use `openmc.Tracks(path)` only for a track file and `openmc.Particle(path)` only
for a particle-restart file. These readers validate their own HDF5 file types;
a collision-track, statepoint, summary, or source file is not interchangeable.
A particle-restart object describes a failed particle and is not evidence that a
future run can resume. Preserve compatible input, executable, data, and build
provenance for an actual restart, then route execution to `setup-runtime`.

### 4. Post-process and plot

Treat each result as indexed by filter bins, nuclide bins, and scores. Use
`get_values(...)` for labeled selection and
`get_reshaped_data(value=..., expand_dims=True)` for mesh-aware reshaping. For
CSV/tabular work, use `get_pandas_dataframe()` only after results and any
required summary context are present. Check `np.isfinite` values and zero
means before reporting relative errors.

Tally arithmetic (`+`, `-`, `*`, `/`, `**`), `summation`, and slicing require
result-bearing operands and deliberate label/shape semantics. Check
`can_merge`, filters, nuclides, scores, realizations, estimator, and density
semantics before combining. Built-in uncertainty propagation assumes independent
operands; same-run tally covariance is not automatically represented.

Distinguish two plotting paths:

- `Plot`/`Plots` exports native geometry plot XML; PNG or voxel output still
  requires a compatible native executable and optional support.
- Python tally/track plots operate on existing arrays and may require Matplotlib;
  VTK conversion or track VTK output is optional and requires VTK.

## Non-negotiable result checks

1. Never flatten or reshape a tally result from memory-order intuition. Resolve
   filter order, bin counts/strides, nuclide labels, and score labels first.
2. A zero mean makes relative error undefined. Preserve raw `sum`, `sum_sq`,
   realization count, mean, and standard deviation; do not replace NaN or
   negative-variance symptoms with zero or silently clip them.
3. A zero standard deviation can reflect identical batches, zero contribution,
   or insufficient realizations; it is not automatically a physical guarantee.
4. A readable statepoint without a matching summary remains useful for ordinary
   tally arrays, but not necessarily for geometry-aware distribcell paths.
5. Separate Python API, native executable, native shared-library, and data gates.
   Do not claim a transport result, plotting artifact, or restart capability
   unless its corresponding input, runtime, and optional dependency are present.

Read [api-reference.md](references/api-reference.md) for object contracts,
[output-formats-and-workflows.md](references/output-formats-and-workflows.md) for
HDF5 layout and bounded workflows, and
[troubleshooting.md](references/troubleshooting.md) for symptom/cause/recovery
paths. Keep the generated helper path-independent and pass it an explicit input
file.

Files in this skill

  • SKILL.md6.6 KB
  • references/api-reference.md10.2 KB
  • references/output-formats-and-workflows.md8.1 KB
  • references/troubleshooting.md10.6 KB
  • scripts/inspect_statepoint.py5.3 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.