BelvoirDynamics · Cross-code tooling
Cross-Code Deck Converter
Move a reactor model from one Monte Carlo code to another — geometry, materials, lattices, and run settings. Paste a deck below and convert it in your browser, or install OWEN/GROVES for the full Rosetta diff and geometry verify workflow.
Live tool — runs in your browser
Try it in your browser
Paste an MCNP deck (or OpenMC script for the reverse direction), pick a target code, and convert client-side — no upload, no server. The block map tab shows which sections correspond after conversion.
Runs entirely in your browser — same OWEN converter engine as the VS Code extension. Verify geometry with OpenMC before production criticality work. OpenMC → MCNP here uses the static parser only (no Python trace harness).
Our take on the converter
What it is great at: moving standard reactor geometry between MCNP and OpenMC — pin cells, 17×17 assemblies, and the full BEAVRS core have been converted and run in real OpenMC. Surfaces (including macrobodies), boolean cell logic, square and hex lattices, material cards, and basic k-eigenvalue settings all translate reliably enough that you start from a working scaffold instead of a blank file.
What to double-check: tally cards (only a subset converts), complex sdef source distributions, surface TR transforms (flagged, not silently applied), and any line marked TODO(owen-convert). Serpent and SCONE paths are experimental — fine for a first draft of a simple pin cell, not for production multi-assembly models without heavy manual editing.
Bottom line: If you are a grad student porting a textbook pin cell or assembly from MCNP homework to OpenMC, this converter will save you a day of syntax wrangling and get you to a verifiable model fast. If you are shipping a safety case, treat every converted deck as a draft: run OpenMC geometry checks, compare k-eff trends, and finish tallies and sources by hand.
What it can do
In everyday terms: the converter copies the structure of your input — where the fuel is, what it is made of, how pins repeat, and how you set up a k-eigenvalue run — and rewrites it in another code's syntax.
- ·Port geometry between codes — cells, surfaces, boolean regions, universe hierarchies
- ·Copy material definitions — nuclides, densities, thermal scattering on water
- ·Translate lattices — square and hex pin maps, fill arrays, repeats
- ·Carry criticality settings — batches, inactive cycles, source points
- ·MCNP ↔ OpenMC — stable: pin cells, assemblies, full core, booleans, macrobodies, lattices
- ·MCNP → Serpent / SCONE — experimental: starting scaffold only; expect manual cleanup
MCNP ↔ OpenMC — stable
The main path. Handles pin cells through BEAVRS full core (327 cells, 16 lattices), macrobodies, hex lattices, and round-trip on procedural OpenMC scripts. Validated in real OpenMC 0.15.3.
MCNP → Serpent / SCONE — experimental
A smaller, cleanly mapping subset — simple surfaces, square lattices, basic materials. Treat output as a draft: search for TODO(owen-convert) before running.
How good is it?
Verdict: Very good for standard reactor geometry between MCNP and OpenMC — pin cells, assemblies, and full-core BEAVRS have been tested end-to-end. Not perfect for exotic tallies, complex source distributions, or production Serpent/SCONE ports. Always verify converted geometry before trusting it for criticality work.
| Topic | MCNP ↔ OpenMC | MCNP → Serpent / SCONE |
|---|---|---|
| Pin cells & fuel pins | Great | OK — review |
| Assemblies & full core | Great | Not yet |
| Surfaces & macrobodies | Great | OK — review |
| Lattices | Great | Not yet |
| Materials & densities | Great | OK — review |
| Criticality settings | Great | OK — review |
| Tallies & exotic sources | OK — review | Not yet |
Great = trust with normal review · OK — review = check output carefully · Not yet = manual rewrite likely
How to use it
In OWEN (VS Code)
- Open an MCNP, OpenMC, Serpent, or SCONE deck in the workspace.
- Run OWEN: Convert Deck… from the Command Palette — pick source and target code.
- Review the Rosetta diff webview: left = source, right = converted output; TODO markers and issue lines highlight gaps.
- For OpenMC → MCNP on procedural scripts, choose the trace path when prompted (no OpenMC install required for tracing).
- Verify geometry with OWEN: Render with OpenMC or Verify Geometry with OpenMC before trusting a converted deck for production runs.
In GROVES (desktop)
- Open a deck in the GROVES editor (File → Open or a prebuilt model).
- Use Tools → Convert Deck… (or the toolbar converter action) and select the target code.
- GROVES uses the same hi-fi MCNP→OpenMC engine as OWEN (
converter_hifi.py); legacy regex fallback remains for edge cases. - Converted output opens in a new tab; search for
TODO(groves-convert)before running.
Known limitations
Honest scope — use this table to decide when to trust the converter vs. manual rewrite.
| Area | Plain English | MCNP ↔ OpenMC | MCNP → Serpent / SCONE |
|---|---|---|---|
| Geometry surfaces | Most reactor shapes convert; surface transforms (TR cards) are flagged, not silently applied. | Common primitives + macrobodies (RPP, RCC, BOX, RHP), quadrics, cones, tori. Surface TR cards are flagged — transforms are not applied to coefficients. | Planes, cylinders, spheres, RPP→cuboid, RCC, RHP subset. Exotic surfaces emit TODO(owen-convert) comments. |
| Lattices | Pin maps and assembly fills are strong MCNP↔OpenMC; other codes get square lattices only when pitch is obvious. | lat=1 square and lat=2 hex with full fill arrays, nR repeats, 3D stacks; outer= uses a boundary-majority heuristic. | Square lattices only when pitch is derivable; hex (lat=2) and 3-D fills are not converted. |
| Sources | Point k-eigenvalue sources convert; fancy source distributions need you to finish by hand. | kcode + multi-point ksrc → IndependentSource list. General sdef distributions beyond point sources are flagged, not silently dropped. | kcode → set pop subset; complex sdef not covered. |
| Tallies | Mesh and a few cell tallies map; most MCNP tally cards still require manual rewrite. | FMESH → RegularMesh; F4/F6/F7 → cell tallies. Other tally types (F1, F2, FM cards, etc.) are not emitted. | Not converted — manual tally rewrite required. |
| OpenMC → MCNP | Scripts and procedural decks can round-trip; always verify lattice padding and graveyard cells. | Static scripts and procedural decks traced via a stub openmc harness. Lattice windows may add an outer padding ring; verify graveyard synthesis. | N/A (one-way from MCNP for Serpent/SCONE). |
| Unconvertible constructs | Gaps are never hidden — you get a TODO comment with a reason in the output file. | Marked with TODO(owen-convert) or TODO(groves-convert) in output — never silently omitted. | Same marker convention; experimental subset only. |
The converter ships in OWEN v1.0.0 (VS Code Marketplace and Open VSX) and GROVES v1.3.4. Always verify converted geometry before production criticality calculations.