MOOSE Newsletter (August 2026)
MOOSE Improvements
Testing with -march
The Apptainer environments used for testing have been updated in idaholab/moose#33466 to build with -march=x86-64-v3. Previously, these environments did not explicitly specify -march, effectively targeting the baseline x86-64 architecture.
Because the updated compiler flags can produce numerical differences, gold files and test tolerances have been updated as needed to ensure that the MOOSE framework and module test suites continue to pass under the newer architecture target.
As a result, dependent applications that test using these containerized environments may also require regolding, refactoring, or adjustments to test tolerances.
New input brace expressions
${enumerate <prefix> <first_index> <last_index>}: expands to the whitespace separated list appending each integer in the range to the prefix, e.g.${enumerate foo 0 2}evaluates tofoo0 foo1 foo2. Added in idaholab/moose#33511${repeat <name> <count>}: expands to the name repeated count times, separated by whitespace, e.g.${repeat foo 3}evaluates tofoo foo foo. Added in idaholab/moose#33536
Finite Volume gradient method system
A new, encapsulated system for computing finite volume (FV) gradients was introduced for linear FV. Gradient computation now lives in dedicated FVGradientMethod objects registered per variable through a new [FVGradientMethods] block and AddFVGradientMethodAction, with FVGreenGaussGradient as the default. This lets different variables or systems use different (optionally limited) gradient schemes within a single input; the legacy interface is retained temporarily during the transition. As part of this work, the FVAdvectedVenkatakrishnanDeferredCorrection interpolation method was renamed to FVAdvectedMUSCLDeferredCorrection. (idaholab/moose#33381)
Constructive Solid Geometry engineering units
The constructive solid geometry (CSG) system gained reusable "engineering units": plug-and-play components that behave like surfaces/regions, cells, or universes and expand into primitive CSG components, including under geometric transformations, along with a regular N-sided polygon unit. See Engineering Units and N-Sided Regular Polygon Unit. (idaholab/moose#33105)
Point containment classification
The point-in-polyhedron (inside/outside/on-surface) capability that previously lived in the shifted boundary method module was generalized and moved into the framework behind a PointContainmentClassifier facade, with composable containment user objects for mesh surfaces, signed functions, and unions of these. Numerous edge cases were hardened, including ambiguous ray orientation, degenerate geometry, empty boundary sets, and KD-tree search-radius underestimation. This work also enabled new signed-distance and element-reclassification features in the shifted boundary method module. (idaholab/moose#33398)
MFEM backend improvements
Mixed sesquilinear forms
The MFEM complex equation system now supports mixed (off-diagonal, cross-variable) sesquilinear forms, enabling coupled complex-valued and frequency-domain problems. New objects include MFEMMixedSesquilinearFormKernel, MFEMMixedScalarWeakCurlKernel, and MFEMMixedVectorWeakDivergenceKernel, along with complex initial conditions such as MFEMComplexScalarIC and complex L2-error postprocessors such as MFEMComplexL2Error. (idaholab/moose#32020)
Discontinuous Galerkin
Discontinuous Galerkin support was added to the MFEM backend via the ability to add both interior and boundary face integrators to the equation system, enabling new interior-penalty MFEMDGDiffusionKernel and MFEMDGDiffusionBC. (idaholab/moose#32267)
Coordinate-system coefficients
Built-in coordinate transformations, such as cylindrical coefficients, can now be constructed in the [Functions] block through MFEMCoordinateTransformations. (idaholab/moose#32378)
In addition, the ordering of MFEM adaptive-mesh-refinement marker setup was fixed (idaholab/moose#33573), the MFEM recover capability was repaired and tested (idaholab/moose#33479), and the MFEM documentation was refreshed (idaholab/moose#33465).
Multi-system fixed point iterations
Multi-system fixed point iterations are now distinguished from MultiApp fixed point iterations. The MULTISYSTEM_FIXED_POINT_CONVERGENCE execute flag introduced last month has been replaced by MULTISYSTEM_FIXED_POINT_ITERATION_END, and (AD)FunctorChangeFunctorMaterial gained a multisystem_fixed_point option so it can act on these iterations. (idaholab/moose#33328)
Mesh generation and diagnostics
MeshDiagnosticsGenerator gained an
examine_nonconforming_facescheck that detects faces bordering another element but matching no neighbor face (for example, a HEX8 quad face abutting two TET4 faces), a case the existing hanging-node check does not catch. This face check runs by default alongside the conformality check. (idaholab/moose#33612)XYZDelaunayGenerator can now generate quadratic tetrahedra through a new
tet_element_typeparameter (TET4,TET10,TET14), and a related segmentation fault was fixed. (idaholab/moose#33592)SideSetsFromBoundingBoxGenerator now works on distributed meshes, and its deprecated parameters were removed. (idaholab/moose#33191)
Several mesh generators now release their input meshes once
generate()completes, reducing peak memory during mesh generation. (idaholab/moose#33311)The MeshInfo reporter can now emit richer diagnostics, including per-element information, element-quality metrics, and processor ids for sidesets and elements. (idaholab/moose#33437)
Functor tools
A new FunctorNodalCorrector overrides nodal variable values from a functor (optionally restricted to a boundary or nodeset), and FunctorSmoother gained a NODE_AVERAGE smoothing option. (idaholab/moose#33157)
Materials can write to coupled variables
Coupleable::writableVariable() may now be called from Material objects, in addition to the object types that already supported it, so a material can write directly to a coupled (for example, finite volume) variable. (idaholab/moose#33483)
Restart robustness
The catch-all default dataStore/dataLoad templates, which could serialize padded bytes and corrupt restart data, were removed in favor of explicit specializations across the framework and modules (idaholab/moose#32985). To make writing those specializations easier, dataStoreEnum and dataLoadEnum helper macros were added for enum types (idaholab/moose#33496).
Usability and tooling
A
--show-actionscommand-line flag was added to print an application's actions. (idaholab/moose#33567)The syntax dump (
--dump) now lists the allowed options forMooseEnumandExecFlagEnumparameters, including each option's documentation when available. (idaholab/moose#33231)The MOOSE language server now reports HIT syntax errors originating from included files and makes the block name the first autocomplete tab stop. (idaholab/moose#33162)
The
FileOutputbase class gained anappend_object_nameparameter (defaulttrue) so outputs added with full syntax can omit the object name from the default output file base. (idaholab/moose#33379)A new setup-time diagnostic errors when a
SideUserObject(such asSideIntegralMaterialProperty) depends on a material property supplied by anInterfaceMaterialon the same boundary, since side user objects do not execute in an interface-material context and would otherwise consume invalid values. (idaholab/moose#33168)GoogleTest unit tests are now checked for software-quality metadata as part of
moosedocs.py check, extending SQA coverage to unit tests (with per-module grandfathering of existing tests). (idaholab/moose#33464)MooseDocs no longer implicitly converts
[path]or[text](path)into source-file modal links; such links must now use the explicit[!file](...)command, which gained atextsetting. Documentation pages were migrated accordingly. (idaholab/moose#33383)Building on the GPU acceleration work, the Kokkos backend gained SYCL build support. (idaholab/moose#33555)
The source tree was clang-formatted, and unnecessary empty declarations were removed. (idaholab/moose#33546, idaholab/moose#33550)
MOOSE Bug Fixes
DiracKernels in combined residual and Jacobian evaluations
DiracKernel point-source contributions were silently dropped when the residual and Jacobian were computed together. They are now included, including in the automatic differentiation path, and the object types that remain unsupported in this mode (ScalarKernel, NodalKernel, and nodal constraints) now raise a clear error instead of being silently skipped. (idaholab/moose#33289)
Multi-system nonlinear convergence
DefaultNonlinearConvergence now sets and honors the nonlinear solve parameters (maximum iterations, absolute and relative tolerances) per nonlinear system, fixing convergence checks for applications with multiple nonlinear systems. (idaholab/moose#33293)
Finite volume flux boundary conditions and interface kernel domain of definition checks
Finite volume interface kernels and flux boundary conditions were hardened: interface side semantics were made more intuitive, ambiguous FV interface orientation is now rejected, and face ownership for FVFluxBC and interface kernels is validated at setup and run time, making results independent of subdomain and variable ordering. (idaholab/moose#33506)
Miscellaneous
Restart of the infinite-element map type is now supported through explicit
dataStore/dataLoadspecializations. (idaholab/moose#33615)Compatibility with older VTK versions was restored, fixing a regression introduced by the
-marchpackaging update. (idaholab/moose#33610)The interior (center) node of quadratic
TRI7triangles is now placed and repaired correctly during triangulation, fixing quadratic Delaunay and polygon meshes. (idaholab/moose#33593)A premature geometric-search map build that ran before remote element deletion was removed. (idaholab/moose#33570)
The displaced mortar segment mesh is no longer rebuilt during ordinary Newton Jacobian assembly; the rebuild is now restricted to the standalone automatic-scaling Jacobian, eliminating redundant work while keeping the scaling path correct. (idaholab/moose#33505)
Solution-state access in
SystemBasewas hardened with size and range checks and clearer error messages. (idaholab/moose#33554)A long-standing race in the TestHarness signal-handler test was fixed by not signaling the MOOSE process until it is ready. (idaholab/moose#33475)
The SQA reporting utilities now warn and skip missing optional directories (for example, an un-checked-out optional submodule) instead of aborting the documentation build. (idaholab/moose#33549)
Verbose timestep diagnostics are now flushed to the console immediately. (idaholab/moose#33620)
MOOSE Modules Changes
Navier-Stokes
Segregated (SIMPLE-type) and linear FV solves received several performance and capability improvements:
The linear SIMPLE solver gained a
pressure_pc_recompute_frequencyparameter that rebuilds the pressure preconditioner only once every N pressure-corrector solves and reuses it in between, skipping most of the expensive algebraic multigrid setup; DOF-index and dof-value retrieval for linear FV variables in steady solves were also optimized. The lid-driven cavity example runs about 28% faster with an unchanged solution. (idaholab/moose#32746)Preconditioner reuse was extended to the momentum, energy, solid energy, turbulence, and scalar equations of the linear FV segregated solve. (idaholab/moose#33575)
The momentum absolute convergence tolerance can now be set per component: the
momentum_absolute_toleranceparameter of the segregated solvers accepts a vector, while a single value still applies to all components. See SIMPLE. (idaholab/moose#33628)A new anisotropic-diffusion Neumann boundary condition, LinearFVAnisotropicDiffusionFunctorNeumannBC, respects boundary orientation on rotated meshes, and LinearFVPressureFluxBC and LinearFVAnisotropicDiffusion were reworked with more explicit flux-contribution flags and a one-term-expansion option; a bug in anisotropic diffusion was fixed. (idaholab/moose#32727)
Field-split preconditioner configuration is now applied through a PETSc PC post-setup hook instead of a KSP pre-solve hook, fixing preconditioner setup timing for field-split solves. (idaholab/moose#33495)
PETSc options are now correctly scoped for segregated solves running as sub-applications within eigenvalue problems, via a new framework
PetscOptionsScopehelper. (idaholab/moose#33477)
Solid Mechanics
Automatic-differentiation versions of generalized plane strain and 1D axisymmetric strain calculators were added, enabling AD Jacobians for these formulations. See ADGeneralizedPlaneStrain, ADComputeAxisymmetric1DSmallStrain, and ADComputeAxisymmetric1DFiniteStrain. (idaholab/moose#33416)
Generalized-plane-strain and many other tests and examples were modernized to the recommended
Physics/SolidMechanics/QuasiStatic(andDynamic) action syntax, and documentation referencing deprecated strain-material syntax was cleaned up. (idaholab/moose#33551, idaholab/moose#32428)
Contact
Mortar cohesive zone modeling gained output-only quantities through CohesiveZoneMortarUserObjectAux, exposing per-component tangential jumps and local cohesive tractions; small robustness fixes avoid zero-tangent floating-point exceptions and skip missing cohesive-zone node data during interpolation. See also BilinearMixedModeCohesiveZoneModel. (idaholab/moose#33045)
A compiler-bug workaround was added to
WeightedVelocitiesUserObjectto avoid using uninitialized memory. (idaholab/moose#33603)
Heat Transfer
A new FVSideSetHeatTransferKernel models a heat flux across an internal sideset through an interface, gap, or contact conductance. (idaholab/moose#33506)
Porous Flow
New aquifer (Robin-type) boundary conditions, PorousFlowAquiferBC and FVPorousFlowAquiferBC, couple a model boundary to a far-field aquifer through a conductance flux. (idaholab/moose#33449)
The PorousFlow examples and tutorials were updated to remove deprecated syntax, notably replacing
MeshExtruderGeneratorwithAdvancedExtruderGenerator. (idaholab/moose#33616)
Subchannel
The subchannel (SCM) solver received an overhaul of its time derivatives, solver ordering, and convergence handling (including mass-diagonal handling in PBSodiumFluidProperties), with improved solver and parameter error reporting, new convergence tolerance parameters (P_tol, T_tol), and substantially expanded theory documentation including a solver flowchart. Many validation gold files were updated to reflect the new convergence metrics. (idaholab/moose#33441)
Fluid Properties
Optional fluid-properties sub-applications (air, carbon dioxide, helium, nitrogen, potassium, sodium) now register a false capability when compiled out, so TestHarness capability checks resolve cleanly rather than erroring. (idaholab/moose#33527)
libMesh-level Changes
2026.08.18_0772c3d_0 Update
Added
MeshTools::Modification::interpolate_surface()method, to reinterpolate nodes using aSurfacespecificationMeshModificationoperations (rotate(),translate(),redistribute(),scale()) now mark potentially-invalidated element data caches as unpreparedFixed
find_interior_parents()calculation on meshes with unprepared element-dimension cachesFixed nodal output for
SIDE_HIERARCHICelementsFixed edge adjacency calculations on
C0PolyhedronelementsFix for outdated
global_boundary_idscache when renumbering boundary idsFix and performance improvements for Adaptive Mesh Refinement/Coarsening projections including
SCALARvariablesFix for
broadcast()in cases where aReplicatedMeshhas had elements deleted in a non-replicated way, via an improvement toReplicatedMesh::update_parallel_id_counts()for this caseAdded support to
all_tri()for tetrahedralization ofPyramid5andPyramid14elementsEnabled quadratic tetrahedralization of domains defined by curved Tri6/Tri7 boundary elements.
Improved element quality when using
Tri7elements to triangulate curved boundariesAdded parallel communication support for
C0PolygonandC0PolyhedronelementsAdded ExodusII and CheckpointIO support for
C0PolygonandC0PolyhedronelementsAdded element quality metrics for
C0PolygonandC0PolyhedronelementsAdded a subdomain name setter with option for marking synchronization as maintained and avoiding unnecessary mesh re-preparation, along with a facility for marking preparation status of subdomain name maps in parallel. The old
subdomain_name()setter that returned a writable reference is now deprecated.Added
isfinite(),isinf(), andisnan()support forstd::complexand for our vector and tensor types tolibMesh::Autodetection of compiler options to request IEEE754-precise calculations (e.g. eschewing Fused-Multiply-Add rounding); we now use these options for triangulation calculations for better reproducibility between differing architectures.
Treat
XYZelement type as elemental in ExodusII and Nemesis outputRefactoring of constant-monomial ("elemental") data in output
Printing of failed assertion expressions in general assertion failure cases
PerfLoglogging ofMeshModification::all_*methodsAdditional
all_rbb()unit test coverage, using quadratic Rational-Bernstein-Bezier sphere approximationsFix for installed-example
$CXXFLAGShandling with pkgconfig
PETSc-level Changes
The PETSc submodule was updated from 3.25.2 to 3.25.4.
Conda Package Updates
moose-tools 2026.08.19
Trigger rebuild; no package changes
moose-build 2026.08.19
Trigger rebuild; no package changes
moose-mpi 2026.08.19 [mpich,openmpi]
Trigger rebuild; no package changes
moose-libmesh-vtk 9.7.0_0 [mpich,openmpi]
Updated VTK from 9.6.2 to 9.7.0
moose-petsc 3.25.4_0 [mpich,openmpi]
Updated petsc from 3.25.2 to 3.25.4
moose-libmesh 2026.08.18_0772c3d_0 [mpich,openmpi]
Updated libmesh from
ab36c00to0772c3d
moose-wasp 2026.08.13_ce25dcd_0
Updated wasp from
d8777a8toce25dcd
moose-pyhit 2026.08.19
Rebuild due to updated Conda package
moose-wasp 2026.08.13_ce25dcd
moose-dev 2026.08.19 [mpich,openmpi]
Rebuild due to updated dependencies
moose-pprof 2026.07.09_b9395ee_0
Updated pprof from
92041b7tob9395ee
moose-seacas 2025.10.14_5
Trigger rebuild; no package changes
moose-tools 2026.08.23
Trigger rebuild; no package changes
moose-build 2026.08.23
Trigger rebuild; no package changes
moose-mpi 2026.08.23 [mpich,openmpi]
Trigger rebuild; no package changes
moose-libmesh-vtk 9.7.0_1 [mpich,openmpi]
Trigger rebuild; no package changes
moose-petsc 3.25.4_1 [mpich,openmpi]
Trigger rebuild; no package changes
moose-libmesh 2026.08.18_0772c3d_1 [mpich,openmpi]
Trigger rebuild; no package changes
moose-wasp 2026.08.13_ce25dcd_1
Trigger rebuild; no package changes
moose-pyhit 2026.08.23
Trigger rebuild; no package changes
moose-dev 2026.08.23 [mpich,openmpi]
Trigger rebuild; no package changes
Apptainer Package Updates
moose-mpi:2026.08.19
Added support for building from Ubuntu-based images
Updated all base packages
Updated variants: -
rocky8_gcc: Rocky 8 base with GCC 13.1.1, MPICH 5.0.1, OpenMPI 5.0.10 -rocky8_oneapi: Rocky 8 base with GCC 13.3.1, Intel OneAPI 2026.1.1, MPICH 4.3.2 -rocky9_gcc: Rocky 9 base with GCC 13.1.1, MPICH 4.3.2, OpenMPI 5.0.10 -ubuntu24_clang: Ubuntu 24.04 base with Clang 22.1.8, GCC 14.2.0, MPICH 5.0.1, OpenMPI 5.0.10 -ubuntu24_cuda_gcc: Ubuntu 24.04 base with Cuda 13.3.0, GCC 14.2.0, MPICH 5.0.1, OpenMPI 5.0.10 -ubuntu24_gcc(default): Ubuntu 24.04 base with GCC 14.2.0, MPICH 5.0.1, OpenMPI 5.0.10 -ubuntu24_gccmin: Ubuntu 24.04 base with GCC 9.5.0, MPICH 5.0.1
moose-petsc:3.25.4_0
Updated petsc from 3.25.2 to 3.25.4
Added
MARCHandMTUNEdefinition template options for building with-marchand-mtune--marchis set tox86-64-v3by default for all PETSc builds
moose-libmesh:2026.08.18_0772c3d_0
Updated VTK from 9.6.2 to 9.7.0
Updated VTK configure to be more consistent with the configure in Conda
moose-libmesh-vtkUpdated libmesh from
ab36c00to0772c3dAdded
MARCHandMTUNEdefinition template options for building with-marchand-mtune--marchis set tox86-64-v3by default for all VTK and libMesh builds - As MOOSE inherits its build flags from libMesh, this implies the same default for all MOOSE application builds
moose-dev 2026.08.19
Updated wasp from
d8777a8toce25dcdUpdated pytorch from 2.12.0 to 2.13.0
Updated python from 3.14.6 to 3.14.7
Updated code-server from 4.123.0 to 4.132.0
Updated mfem from
b7ac196toa7dbea1Install python package
nvidia-ml-pyAdded
MARCHandMTUNEdefinition template options for building with-marchand-mtune--marchis set tox86-64-v3by default for building WASP, libtorch, NEML2, conduit, and MFEM - As MOOSE inherits its build flags from libMesh, this implies the same default for all MOOSE application builds
moose-mpi:2026.08.23
Update all base containers
Build valgrind with
--enable-lto=yes
moose-petsc:3.25.4_1
Add
OPTFLAGSgenerator variable to overrideOPTFLAGSBuild
ubuntu24-gcc-mpich-valgrind-x86_64variant for valgrind withOPTFLAGS="-O1 -g -march=x86-64"
moose-libmesh:2026.08.18_0772c3d_0
Add
OPTFLAGSgenerator variable to overrideOPTFLAGSBuild
ubuntu24-gcc-mpich-valgrind-x86_64variant for valgrind withOPTFLAGS="-O1 -g -march=x86-64"
moose-dev 2026.08.23
Add
OPTFLAGSgenerator variable to overrideOPTFLAGSBuild
ubuntu24-gcc-mpich-valgrind-x86_64variant for valgrind withOPTFLAGS="-O1 -g -march=x86-64"