MOOSE Newsletter (October 2025)

MOOSE Improvements

AuxKernel support in Kokkos-MOOSE

Kokkos-MOOSE now supports GPU-based AuxKernels, with the limitation that boundary-restricted elemental AuxKernels are not supported yet. The user can create their own GPU AuxKernel by subclassing Moose::Kokkos::AuxKernel. See the linked document for details.

New Reporters

Several Reporters were added that apply a parsed function to the entries in the reporter. ParsedVectorReporter will apply parsed functions to vector entries held in reporters, allowing the user to compute differences or multiplications between vectors. The ParsedVectorRealReductionReporter uses a parsed function to iterate through a vector and reduce it to a scalar. This can be used to find maximum, minimum, or sum of squares of a Reporter containing a vector. These reporters are useful in optimization problems to sum gradient vectors or to compute objective values, like an L2 norm between simulation and target values.

ArrayNodalKernel

MOOSE now supports nodal kernels applied to array variables. Example implementations include ArrayTimeDerivativeNodalKernel and ArrayReactionNodalKernel. Nodal kernels are most useful for implementing ordinary differential equations (functions of time) throughout the simulation domain. We anticipate array nodal kernels to be useful for defining systems of chemical reactions.

Test change reports on pull requests

CIVET now automatically generates testing reports on pull requests which notably indicate:

  • which tests were added by the pull request,

  • which tests were removed by the pull request, and

  • any significant change in runtime by the existing tests.

MFEM Backend improvements

  • Fixed an issue where time step information in the console output lagged by one time step

  • Added the ability to compile MFEM with the full range of supported build methods: oprof, devel, dbg, and opt

  • Improved support for selecting/validating basis functions for different FE spaces

  • Fixed the attributes inherited by boundary submeshes from the parent mesh

  • Workaround for breaking changes in hypre 3.0 to PCG/GMRES relating to preconditioning matrix reuse

  • Performance and documentation improvements

  • Added the ability to define cut transition submeshes, e.g., to model an induced electromotive force on a closed loop

  • Added an auxiliary kernel to sum an arbitrary number of variables

  • Added two mixed form kernels akin to the diffusion and vector mass kernels, for when test and trial variables may differ

  • Added the ability to set an initial condition on a scalar variable on a boundary

  • Added a postprocessor to integrate the dot product of two vector variables over a given domain

MOOSE Modules Changes

Optimization module

A flexible framework for adding spatial regularization to the parameter field was added to ParameterMeshOptimization. Currently only L2 regularization of the parameter mesh field has been implemented. The ParameterMeshFunction uses a separate finite element mesh to interpolate parameter fields onto the simulation domain's mesh. This functionality has been improved with the project_points option to allow simulation mesh points not encompassed by the parameter mesh to be projected onto the nearest parameter mesh element to determine the function value.

The Physics syntax in the Navier Stokes module can now create the energy conservation equation using a specific enthalpy variable instead of a temperature variable. This was implemented to facilitate code coupling and the future study of phase changes.

Subchannel module

Subchannel simulations can now be run in serial within a simulation with multiple processes. This enables using a SCM solve as the parent application along with child(ren) MultiApps that are ran in parallel.

The interwrapper problems for quadrilateral and triangular lattice geometries were removed. This is part of a simplification and abstraction effort which will facilitate the maintenance and development of capabilities in SCM.

Solid mechanics module

The ElementJacobianDamper can now operate on elements that have become so distorted that the Jacobian of the mapping is negative. The loop on dampers will now catch the exception caused by a negative Jacobian, and MOOSE will re-try the solve with a smaller time step.

XFEM module

The algorithms used to create meshes defining the location of the XFEM cut have been improved to consume reporters to define the crack growth rate. New reporters were created to capture growth due to stress corrosion cracking and fatigue crack growth using the ParisLaw.

libMesh-level Changes

2025.10.29 Update

No change to libmesh itself, but scripts/update_and_rebuild_libmesh.sh --help now works. Previously, invocation of --help would result in a script error.

2025.10.21 Update

  • Dropped deprecated public Mesh::boundary_info member. Other long-deprecated APIs are now dropped in libMesh master and will be removed in the next submodule update!

  • Added BoundaryInfo methods to enable ID removal and/or renumbering one boundary at a time

  • VariationalMeshSmoother now supports prism elements; additionally, the verbosity and tolerances of the variational system solve are now user-controllable

  • Fix for MeshTools::find_nodal_neighbors to work with higher order elements

  • Fixes for get_diagonal() and get_transpose() in EigenSparseMatrix, and implementations in LaspackMatrix

  • DofObject and Elem invalid id constants are now constexpr, for improved CPU performance and GPU compatibility

  • Fix for a potential preallocation error in parallel HDF5 sparse matrix reads

  • Fixes for poly2tri headers

  • More optimization for Lagrange 1D shape computations, including in tensor product (e.g. quad, hex, prism) calculations

  • Test coverage for higher order quads and for mixed elements in the variational smoother

  • Improved test coverage for sparse matrix transposes and norms

PETSc-level Changes

2025.10.29 Update

Still a 3.24.0 version but includes a patch commit that enables CF relaxation for hypre boomeramg running on GPU. This patch is helpful to ensure module tests using boomeramg continue to pass when using a PETSc configured with GPU support.

Additionally, PETSc configuration was changed such that zlib is now picked up by hdf5 when the latter is built by PETSc. Proper configuration of hdf5 with zlib is required by the netcdf 4.9.2 version available in libmesh.

2025.10.21 Update

Updated PETSc to 3.24.0. See release notes here.

Bug Fixes, Minor Changes, and Minor Enhancements

  • Invalid IDs are now excluded when generating a positions list with ElementGroupCentroidPositions

  • An example was added for activating objects for single time step using chain controls.

  • The outputs=none parameter, on a per-object basis, is now obeyed more closely when the show parameter, in the Outputs block, is used.

  • The ADScaledCoupledTimeDerivative kernel was added to the framework to handle the common case of needing to scale a time derivative of a coupled variable.

  • The ParsedAux now uses face arguments for functors when restricted to one or more boundaries.

Conda Package Changes