Current Status
aleathor is in alpha. The codebase is usable, but the public API is still being refined and some workflows need more validation on large production models.
Available Now
- MCNP input parsing from files and strings.
- OpenMC XML parsing from files and strings.
- Programmatic CSG model construction with surfaces, regions, cells, materials, and universes.
- Point queries with
model.cell_at()and hierarchy inspection withmodel.cell_path_at(). - Ray tracing through geometry with
model.trace(). - Cell collection filtering by material, universe, fill, bounding box, and custom predicates.
- Axis-aligned and arbitrary-plane slice sampling.
- Matplotlib/numpy slice plotting, contours, labels, multi-view plots, and optional tally overlays. Plotting dependencies are installed with aleathor.
- MCNP, OpenMC XML, and Serpent export through
model.save()and explicit export methods. - Structured mesh sampling and export to Gmsh or VTK.
- Volume estimation, bounding-box tightening, ID renumbering, and void-region generation helpers.
Experimental Or Still Evolving
- OpenMC and Serpent conversion paths need broader real-world validation.
- Overlap detection is sampling-based unless you use grid-level checks on a selected slice.
- Volume estimates are Monte Carlo estimates; results depend on the number of rays and bounding volume.
- Imported cells expose a reconstructed or C-backed region view, but not every piece of original input formatting is preserved.
- The Python API may still change before a stable release.
Point Query Names
Use model.cell_at(x, y, z) for normal "what material/cell is here?" queries. It returns the terminal cell reached after following universe fills.
Use model.cell_path_at(x, y, z) when debugging nested universes. It returns the full containment path, ordered from the outermost cell to the innermost cell, with cell.depth set on each result.