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.

MCNP ↔ OpenMC — stableMCNP → Serpent / SCONE — experimental

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.

TopicMCNP ↔ OpenMCMCNP → Serpent / SCONE
Pin cells & fuel pinsGreatOK — review
Assemblies & full coreGreatNot yet
Surfaces & macrobodiesGreatOK — review
LatticesGreatNot yet
Materials & densitiesGreatOK — review
Criticality settingsGreatOK — review
Tallies & exotic sourcesOK — reviewNot yet

Great = trust with normal review · OK — review = check output carefully · Not yet = manual rewrite likely

How to use it

In OWEN (VS Code)

  1. Open an MCNP, OpenMC, Serpent, or SCONE deck in the workspace.
  2. Run OWEN: Convert Deck… from the Command Palette — pick source and target code.
  3. Review the Rosetta diff webview: left = source, right = converted output; TODO markers and issue lines highlight gaps.
  4. For OpenMC → MCNP on procedural scripts, choose the trace path when prompted (no OpenMC install required for tracing).
  5. Verify geometry with OWEN: Render with OpenMC or Verify Geometry with OpenMC before trusting a converted deck for production runs.

In GROVES (desktop)

  1. Open a deck in the GROVES editor (File → Open or a prebuilt model).
  2. Use Tools → Convert Deck… (or the toolbar converter action) and select the target code.
  3. GROVES uses the same hi-fi MCNP→OpenMC engine as OWEN (converter_hifi.py); legacy regex fallback remains for edge cases.
  4. 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.

AreaPlain EnglishMCNP ↔ OpenMCMCNP → Serpent / SCONE
Geometry surfacesMost 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.
LatticesPin 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.
SourcesPoint 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.
TalliesMesh 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 → MCNPScripts 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 constructsGaps 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.
BELVOIR DYNAMICS

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.