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 toStitchMeshGenerator
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
Navier Stokes
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 forLAGRANGE_VEC
,NEDELEC_ONE
, andRAVIART_THOMAS
cases.Added support for
std::set
values inParameters
Added generation of boundary condition ids in
NetGenMeshInterface
outputAdded support for sliding boundary nodes and higher-order elements to
VariationalMeshSmoother
Added
SmoothnessEstimator
, switchedHPCoarsenTest
to enable smoothness-aware hp adaptivity selectionFixed undefined behavior in
ExodusII_IO
input support for Bezier Extraction blocksFixed support for
configure --enable-glibcxx-debugging
Added
contains()
andends_with()
utilities; used these to fix broken read support for files with base names of 4 characters or fewer.Changed
GhostingFunctor
containers to usevector
rather thanset
, 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 useauto
or the new iteratortypedef
.Refactored
add_periodic_boundary
, added more error checkingOptimizations in
VariationalMeshSmoother
Early-return optimization in
RBEimConstruction
Corrected link to DataTransferKit repository in
DTKSolutionTransfer
documentationCorrected
configure --help
output to reflect default-enabled status of Poly2Tri, Netgen, and QhullFix 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 simulationFixed bug in
TimeSequenceStepper
that caused segfault when restarting