# New OpenMC Post Processing Code for Unstructured Mesh Analysis

**URL:** <https://openmc.discourse.group/t/new-openmc-post-processing-code-for-unstructured-mesh-analysis/6231>\
**Category:** Development\
**Created:** [February 19, 2026, 8:27pm UTC](https://openmc.discourse.group/t/new-openmc-post-processing-code-for-unstructured-mesh-analysis/6231 "2026-02-19T20:27:31Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![thallam](https://avatars.discourse-cdn.com/v4/letter/t/71c47a/32.png) [@thallam](https://openmc.discourse.group/u/thallam)\
**Post date:** [February 19, 2026, 8:27pm UTC](https://openmc.discourse.group/t/new-openmc-post-processing-code-for-unstructured-mesh-analysis/6231/1 "2026-02-19T20:27:31Z")

</div>

Howdy,

I’ve been working with unstructured meshes in OpenMC and got tired of the  
post-processing side of things, so I built a tool to make it easier:  
TONI-Exo (Translator for OpenMC Neutron Information To Exodus).

OpenMC can already write tally results to an Exodus file if you’re using an  
Exodus mesh with libMesh, but those values are in raw per-source-particle  
units. TONI-Exo picks up where that leaves off — it reads the statepoint  
file and the mesh, maps tally results onto the mesh elements with the  
physics unit conversions applied, and writes the output as an Exodus II file  
that you can open directly in ParaView or VisIt. It also handles material  
mapping from a DagMC geometry so that the conversions have the volume and  
composition data they need.

Right now it supports a few physics conversions that are relevant to fusion  
neutronics:

- Heating (eV/source-particle → W/m^3)
- Tritium Production (reactions/source-particle → g/s/m^3)
- Damage-Energy (eV/source-particle → DPA)

It also supports energy-bin decomposition, so if your tally has an energy  
filter it will write out a separate variable for each bin plus a total.  
There’s a --raw flag if you just want the values straight from the  
statepoint without any conversion.

It’s written in C++ with OpenMP parallelism and streams the HDF5 data in  
chunks, so it can handle large meshes (I’ve been running it on 13M element  
problems) without blowing up memory.

The tool is still pretty basic and doesn’t have a lot of example problems  
beyond my own research, but I figured sharing it with the community might  
help it grow. The current unit conversions are geared toward fusion  
neutronics, but the framework is set up so that adding new conversions for  
other applications (shielding, activation, medical physics, etc.) would be  
straightforward. With more people contributing, we could build out support  
for additional score types, different tally filters, and application-specific  
post-processing that the community actually needs. If you work with  
unstructured meshes in OpenMC and have been doing your own post-processing  
scripts, this might save you some time — and any feedback, issues, or  
contributions would be welcome.

Repo: [Travis Hallam / TONI-Exo — Translator for OpenMC Neutron Information To Exodus · GitLab](https://gitlab.com/thallam1/toniexo)

Cheers,  
Travis
