MOOSE Newsletter (August 2025)

MOOSE Improvements

Field splits of statically condensed systems

MOOSE can now perform field split preconditioning of statically condensed systems. This required generalization of the degree of freedom map in libMesh as well as the MOOSE PETSc Data Management (DM) code in MOOSE. The current target application for this development is preconditioning of statically condensed hybridized discontinuous Galerkin (HDG) Navier-Stokes discretizations, which we discussed in the June newsletter.

MFEM Backend improvements

  • Added three new auxiliary kernels to perform projections of scalar and vector coefficients, and time averaging of scalar variables.

  • Refactored executioners for improved timestepper and transient multiapp support.

  • Added support to add integrator contributions from auxiliary variables to the equation system.

  • Submeshes now inherit the domain and boundary attributes of their parent mesh.

  • Time derivative auxiliary variables are no longer created with each auxiliary variable.

Mesh modification & variable re-initialization

Nodal patch recovery, at various orders, was implemented for initializing variables on elements that change subdomain during a simulation. Additionally, support was added for changing the subdomain of lower-dimensional elements for contact simulations with moving subdomains.

Minor improvements and bug fixes

  • Boundary restriction support was added to NodePositions.

  • The mesh generators that stitch meshes were re-organized to share a common base class. The StitchedMeshGenerator was renamed to StitchMeshGenerator for consistency with the mesh generator naming convention.

  • Sibling transfers now execute on the expected schedule rather than as often as possible.

  • User objects and postprocessors can now be executed on TRANSFER the parent application to provide values that are as updated as possible.

  • Scalar variables are now derived from functors, as are functions, regular variables, postprocessors and spatial user objects. This enables their use in numerous objects.

MOOSE Modules Changes

Reactor Module

The hexagonal lattice utility can now be rotated around the Z-axis. A rotation by 30 degrees is a common need when defining hexagonal lattices

The linear finite volume discretization of turbulence standard k-epsilon equations was added to the module, using the linear kernels and boundary conditions syntax. A Physics action is under development.

The example inputs were transitioned towards the Physics syntax.

libMesh-level Changes

2025.08.05 Update

  • Added support for vector-valued variables in MeshFunction, with regression testing for LAGRANGE_VEC, NEDELEC_ONE, and RAVIART_THOMAS cases.

  • Added support for std::set values in Parameters

  • Added generation of boundary condition ids in NetGenMeshInterface output

  • Added support for sliding boundary nodes and higher-order elements to VariationalMeshSmoother

  • Added SmoothnessEstimator, switched HPCoarsenTest to enable smoothness-aware hp adaptivity selection

  • Fixed undefined behavior in ExodusII_IO input support for Bezier Extraction blocks

  • Fixed support for configure --enable-glibcxx-debugging

  • Added contains() and ends_with() utilities; used these to fix broken read support for files with base names of 4 characters or fewer.

  • Changed GhostingFunctor containers to use vector rather than set, to avoid undefined behavior in functors that do parallel communication. Any application code that hard coded the previous container iterator return type may need to change to use auto or the new iterator typedef.

  • Refactored add_periodic_boundary, added more error checking

  • Optimizations in VariationalMeshSmoother

  • Early-return optimization in RBEimConstruction

  • Corrected link to DataTransferKit repository in DTKSolutionTransfer documentation

  • Corrected configure --help output to reflect default-enabled status of Poly2Tri, Netgen, and Qhull

  • Fix indentation in tests/Makefile.am

  • Make sure dof index containers sized even when not active on block

PETSc-level Changes

Bug Fixes, Minor Changes, and Minor Enhancements

  • Added a new Times object ControllableInputTimes which specify a time sequence dynamically updating during the simulation

  • Fixed bug in TimeSequenceStepper that caused segfault when restarting

Conda Package Changes