MOOSE Newsletter (November 2025)
MOOSE Improvements
Automatic Differentiation for Array Variables
Finite element array variables now support automatic differentiation. Some example residual objects leveraging this new capability include ADArrayDiffusion, ADArrayReaction, ADArrayDirichletBC as well as the templated (on an is_ad boolean) nodal kernel class ArrayReactionNodalKernel. Hand-coded Jacobian array nodal kernel support was introduced in MOOSE Newsletter (October 2025).
Mesh generation
The PolyLineMeshFollowingNodeSetGenerator has been added to generate a 1D line mesh, of edge elements, by averaging the positions of nodes in a multi-dimensional nodeset. Several options and heuristics have been implemented to further define the averaging process.
The XYZDelaunayGenerator now has an option to only convert the boundary of a hole mesh to tetrahedrals, rather than the entire hole mesh. A hole mesh is a mesh that is pre-existing and forming a hole inside the Delaunay tetrahedralization (and thus does not need to be tetrahedralized).
KokkosFunction
The KokkosFunction system was added to deliver the same capability as Functions but in Kokkos-based finite element simulations. As a reminder, Functions are intended to be known functions of time and space exclusively, and not depend on material properties or variable values.
DiscreteVariableResidualNorm now uses the un-scaled residual norm
DiscreteVariableResidualNorm has added the parameter "include_scaling_factor", which allows the user to control whether the residual norm includes the scaling factor or not. Before, the scaling factor was always included, but now the default behavior is to not include the scaling factor. This is ideal for the most common use case of this object, which is convergence monitoring, which usually should be independent of the scaling factor.
MFEM Backend improvements
Added support for systems of equations of complex variables, MFEMComplexVariable, unlocking problems defined in the frequency domain
Implemented auxiliary kernels, MFEMCrossProductAux and MFEMInnerProductAux, to perform the cross and dot products, respectively, of two arbitrary, real vector coefficients
Added the ability to both MFEMScalarFESpace and MFEMVectorFESpace to construct L2 spaces preserving volume integrals between reference and physical elements (L2Int)
Users can now define scalar non-linear functions of position, time, and any other scalar coefficient, including any variables, postprocessors, material properties or functions with MFEMParsedFunction
Fixed a bug that prevented the correct selection of high order finite element collections
Amended the console output to include the MFEM version MOOSE is linked against
MOOSE Modules Changes
Navier Stokes module
The Physics syntax for the weakly compressible Navier Stokes equations can now accept a fp parameter for the fluid properties being used. This helps define the functor materials needed to compute fluid properties in the kernels forming the equations.
Porous flow module
Two new ActionComponents were created to add injection and production wells in a compact syntax. These wells are represented by multiple objects to represent the flow channel from the well, and the boundary condition at the well.
Heat transfer module
A linear finite volume implementation of the P1 radiation model was added, and can now be used for coupled convective flow problems alongside the linear finite volume implementation of Navier-Stokes.
Subchannel module
A new SCMClosure system was added to allow for user-developers to specify the closures to use in the subchannel solve. For now, only the friction factors can be selected using this system. Developers may create new closures for friction factors, using the dedicated SCMFrictionClosureBase base class. Other base classes will be created for other closure-computed physical quantities in follow-on work.
Additional options were added for the computation of the heat transfer coefficient for the fuel pin and duct temperatures:
the Dittus Boelter correlation (previously only option)
the Kazimi-Carelli correlation
the Gielinski correlation
Reactor module
The PinMeshGenerator now supports the generation of a CSGBase. CSG objects are intended to provide a compatible path from reactor-module meshes to CSG used in Monte Carlo codes.
Bug Fixes, Minor Changes, and Minor Enhancements
Several controls that were unable to recover properly when set to execute on
TIMESTEP_ENDhave been fixed.The
simulation_time_intervaloutput parameter, which was not functioning, has been removed. Themin_simulation_time_intervalshould be used instead.The distributed rectilinear mesh generator now only offers
edge,quad, andhexelement types, which were the only element types supported. Other element types can still be generated by conversion.The SolutionUserObject now caches retrieval calls at a given location, to prevent scaling with the square of the number of variables.
The
Makefilesystem in MOOSE now allows for linking additional objects directly to the executable using theADDITIONAL_EXEC_OBJECTSvariable.PETSc SNES options are no longer added by default when using the linear finite volume discretization, which does not use the nonlinear SNES solver.
Material property output for vector material properties (such as
std::vector<T>) can now support vectors of more than 10 components.The BDF2 time integrator was expanded to support linear finite volume equations.