Upstream example

Cardinal LWR pincell: OpenMC transport coupled to MOOSE heat conduction.

For one pressurised-water-reactor fuel pin, what converged fission heat-source distribution and solid temperature field result when OpenMC eigenvalue transport with temperature feedback is iterated against a MOOSE heat-conduction solve?

Upstream exampleCardinalOpenMCMOOSEChecked 2026-10-10
Scope

A two-code coupling tutorial from the Cardinal documentation: OpenMC (wrapped by Cardinal) and the MOOSE heat transfer module exchange a volumetric heat source and cell temperatures over five fixed Picard iterations. nekRS is not used and no fluid flow is solved; coolant is represented by a convective boundary condition. The case teaches how Cardinal maps OpenMC cells onto a MOOSE mesh and how to tally heat per cell or on an unstructured mesh.

Relationship to fusion

A fission (LWR) example. The mechanics it demonstrates (Monte Carlo nuclear heating tallied onto a MOOSE mesh, a thermal solve, temperature fed back into cross sections) are the pattern a fusion first-wall or blanket heating problem needs, and Cardinal ships a CAD tokamak tutorial on the same machinery. Nothing here validates an inertial-fusion chamber; treat it as a worked example of the coupling workflow.

Evidence status: Upstream example

A specific published external example has been documented.

What stands between this and a Morton reproduction

  • Requires a from-source Cardinal build with its MOOSE and OpenMC submodules; Morton Labs has not built or run this case.
Inputs
  1. mesh.i: MOOSE mesh generators for the clad annulus and fuel disk, extruded 300 cm in 40 layers
  2. make_openmc_model.py (or the checked-in XML): UO2 at 2.4 wt % enrichment, helium gap, Zircaloy-4, borated water; concentric cylinders at r = 0.392, 0.400 and 0.457 cm; reflective square pitch; 20,000 particles, 1,500 batches, 500 inactive
  3. solid.i: heat conduction with a convective clad boundary and a gap-conductance model; five Picard steps
  4. openmc.i: Cardinal wrapper with a 3000 MWth core power divided over 273 bundles of 289 pins, cell-level temperature feedback and a heat-source cell tally
  5. Run command from the tutorial: mpiexec -np 2 cardinal-opt -i solid.i --n-threads=2
Outputs
  • Exodus files with the MOOSE temperature field and the mapped OpenMC heat source and cell temperatures
  • CSV postprocessor histories: integrated heat source, maximum tally relative error, maximum heat source and temperature
  • A console mapping table showing which MOOSE elements feed each OpenMC cell
  • Qualitatively, a slightly bottom-peaked axial heat source from negative Doppler feedback
Assumptions and limits
  • Single pincell with reflective lateral boundaries and vacuum top and bottom
  • No fluid flow or density feedback; steady-state physics with fixed Picard iterations rather than a convergence criterion
  • Constant fuel and clad conductivities; the helium gap is not meshed
  • Temperature feedback resolution equals the number of OpenMC cells (40 axial layers)
Dependencies
Cardinal
devel branch, commit b0ad9c9ea53e28758bb6fc5426fff68e413049f5 (2026-10-07) · Only tagged release is v0.1 (July 2026), which predates this commit. github.com ↗
MOOSE
submodule at idaholab/moose 60ec5e6cd51c08f79c70536b5e97f566082587f1 · Brings PETSc, libMesh and hypre. github.com ↗
OpenMC
submodule at openmc-dev/openmc 150f9ac044031a840c555cfdb2bb2c7f63f23d7c (post-0.16.0) github.com ↗
Nuclear data
ENDF/B-VII.1 HDF5 (fetched by the repository's helper script) · Temperature data from 250 to 2500 K.
nekRS
not required · Can be disabled at build time; this tutorial uses no CFD.

This case was written by Morton Labs from public sources and last checked on 2026-10-10. Spotted an error, or want something changed or removed? Email zach@mortonlabs.ai with the page address.

Sources checked for this page (4)