MOOSE Newsletter (February 2026)

Mailing List is Back!

We will utilize this mailing list as a platform for notifying users of announcements on the MOOSE GitHub Discussions page.

Gmail Users: Just click the "Join group" button on the page linked above. Others must send an email to:

You can expect occasional messages about things like newsletters (once a month) and upcoming trainings and conferences. This list will remain low traffic, with only a few messages a month, and is not enabled for discussion. Announcements made there will link to the corresponding GitHub Discussions post for further engagement and discussion.

MOOSE Improvements

Capabilities Expansion

The use of the Capabilities system within the TestHarness has been expanded significantly in idaholab/moose#32294. Many test specification parameters that allow for the filtering or skipping of tests have been removed and must now use the capabilities test specification parameter. The use of these removed parameters will now produce an error with helpful information on what to specify as a capability instead.

For example, what was previously:


[Tests]
  [test]
    type = RunApp.i
    input = input.i
    min_ad_size = 50
    method = opt
    platform = linux
    vtk = true
  []
[]

Must now be described as:


[Tests]
  [test]
    type = RunApp.i
    input = input.i
    capabilities = 'ad_size>=50 & method=opt & platform=linux & vtk'
  []
[]

In the future, many more test specification parameters will be transitioned to use the capabilities parameter, such as: min_parallel, max_parallel, min_threads, max_threads, heavy, and valgrind.

Distributed mesh support expansion

The following objects now support the use of a distributed mesh:

  • the BreakMeshByBlockGenerator can be used to split meshes at interfaces.

  • the SolutionUserObject can now be used to load a Nemesis file in a distributed manner. The partitioning of the solution mesh must match the partitioning of the mesh when requesting values from the solution file.

Warning summary table

A table is now printed at the end of the simulation summarizing all the warnings that occurred. The warnings are identified using the name of the objects that reported them. The time step or steps on which the warnings occurred are also reported. Due to limitations in the interface used to manage this table, the exact text of the warning is not reported in the table, as this text could depend on each occurrence.

FullSolveMultiApp fixed point iteration optimization

When using fixed point iterations between multiapps, there was an option to keep the solution at each restore (the keep_solution_during_restore parameter). This triggered a copy of the solution vector from the end of a fixed point iteration to the initial guess for the next fixed point iteration. However, this solution vector was then copied to create the old state of the variable which is notably used to compute the time derivative. There is now a parameter to allow or prevent this copy, depending on the type of simulation being restarted at each fixed point iteration.

This new parameter "update_old_solution_when_keeping_solution_during_restore" is mandatory when using keep_solution_during_restore because either behavior may be desirable in different circumstances.

Minor changes

  • The TimeIntegratedPostprocessor has been modified to allow the implementation of additional time integration methods, as needs arise, for the time integration of the postprocessor.

  • The CombinedVectorPostprocessor has been added to be able to append and sort vectors from multiple vectorpostprocessors. If the vectors are not the same length between the two postprocessors, filler values are appended.

  • Block names and ids are now conserved when extracting one or more subdomains to form a mesh in the BlockToMeshConverterGenerator.

MFEM Backend improvements

Kokkos Backend improvements

  • A few bugs were fixed in the Kokkos-MOOSE tagging system, and tagging-based Eigenvalue calculations are now supported with Kokkos-MOOSE.

  • Moose::Kokkos::GeneralUserObject and Moose::Kokkos::GeneralPostprocessor were added to support automatic dependency resolution of general user objects with Kokkos-MOOSE user objects. Manual resolution of dependencies between MOOSE and Kokkos-MOOSE user objects is also supported through execution_order_group parameter.

  • Several improvements were made in the Kokkos-MOOSE material system:

    • A new material property concept called "on-demand" material property was added. An on-demand property is only allocated when there are its consumers other than its declaring material, which aids in saving memory usage and computing time for unused material properties. When populating an on-demand material property in a material, its validity should always be checked analogously to the optional material properties.

    • constant_on parameter is now respected by Kokkos-MOOSE materials. Material properties declared by materials with constant_on set to ELEMENT or SUBDOMAIN only allocate storage for elements or subdomains. It helps reducing memory usage and computing time for material properties that do not need to be computed and stored for every quadrature point.

    • Material properties can now have different dimension sizes on different subdomains, while the dimension itself should be the same across the domain. For example, a material property can be a (2, 2) matrix on subdomain A and a (3, 3) matrix on subdomain B. However, boundary-restricted material properties should still have the same dimension size across the domain.

MOOSE Bug Fixes

  • Coupleable::coupledAllDofValues now correctly declares the variable dependencies. These dependencies are for example used to order the execution of auxiliary kernels

  • Functor material property output will now use the property name rather than the parameter name for the name of the variable storing the output

  • Three tests which would fail on ARM Macs due to floating point calculation differences were made more robust.

MOOSE Modules Changes

Fluid Properties

Water97FluidProperties was extended to provide the temperature computed from pressure and enthalpy in region 4 and 5 as defined by the IAPWS-97.

libMesh-level Changes

2026.02.13_6232e98_0 Update

  • Added MeshBase::Preparation class, and setter APIs, supporting more fine-grained alternatives to MeshBase::is_prepared(). Mesh generation and modification code can now query whether a mesh is prepared in specific ways, and mark a mesh as unprepared in specific ways, allowing for much more efficient use of partially-prepared meshes in complex mesh generators and systems of mesh generators.

  • MeshGeneration::build_square()` now supports C0POLYGON elements, building a hexagonal mesh on a rectangular domain, with triangles and quads at boundaries to fit.

  • GhostingFunctor subclasses must now override clone() in non-deprecated builds. This allows the library to preserve their functionality when cloning a mesh.

  • Added more NemesisIO getters, similar to ExodusII_IO APIs, to enable MOOSE SolutionUserObject compatibility with distributed mesh+solution files

  • System::project_solution and project_vector can now optionally take a predicated element iterator range, to project on a subset of a mesh.

  • Added libmesh_config.h entries to query static library build settings

  • Added Elem::operator!= to test (up to reordering) element equality

  • Added Elem::total_family_tree_by_side() helper function

  • configure --with-hdf5-required now attempts to detect HDF5 in existing paths if no specific HDF5 paths are specified.

  • Added store_dirichlet_operators option for reduced_basis training

  • Compatibility with newer OSX SDKs

    • Fixes for MetaPhysicL compatibility with more-standards-conforming Apple clang

    • Workarounds for libMesh::Xdr compatibility with less-standard Apple XDR

  • Assorted bug fixes

    • Backported fix for valgrind compatibility to contrib ExodusII v8.11

    • Fixed regression in builds with PETSc but without Hypre

    • Fixed copying of interior_parent pointers in certain corner cases when e.g. stitching or cloning meshes.

    • Fixed copying of AMR children_on_boundary setting when copying BoundaryInfo

    • Fixed multiple cases of remote_elem neighbors not being made into non-remote Elem * links after a previously-remote element is received during repartitioning of refined meshes

    • Weakened overzealous assertion on distributed meshes with interior_parent pointers

    • Ensured that cached data remains up to date after various mesh and boundary data operations

    • Infinite-element builder code is now compatible with more general unstructured distributed meshes.

    • InfQuad::is_child_on_side() is no longer completely broken.

2026.02.18_f8a1758_0 Update

  • Bug fix for PetscVector(Vec) constructor for parallel non-VECMPI vectors. This fixes a regression in the use of other parallel-capable (e.g. -vec_type kokkos) implementations with our SNES solver interfaces on multiple ranks.

  • Bug fix for FEMContext initialization of data for non-local (outside any Elem) data.

PETSc-level Changes

The PETSc submodule has been updated from version 3.24.3 to 3.24.4. Find the GitHub generated set of changes here: v3.24.3...v3.24.4

Conda Package Updates

moose-tools 2026.02.05

  • Pin python package coverage to 7.13.2 (see #32313)

moose-dev 2026.02.05

  • Forced update due to coverage pinning in moose-tools 2026.02.05

moose-wasp 2025.09.19 02960f1_build_2

  • Forced update due to reformatting of pyhit

moose-dev 2026.02.10

  • Forced update due to reformatting of framework python and pyhit

moose-mpi 2026.02.16

  • Update compiler pins

moose-tools 2026.02.16

  • Update black to 26.1.0

  • Update ruff to 0.15.1

  • Remove old unused version requirements on git-lfs and matplotlib-base

moose-seacas 2025.10.14_0

  • Rebuild due to new compiler pins in moose-mpi 2026.02.16

moose-wasp 2025.09.19_02960f1_3

  • Rebuild due to new compiler pins in moose-mpi 2026.02.16

moose-libmesh-vtk 9.6.0_0

  • Update VTK v9.5.2...v9.6.0

  • Store libmesh configure and build logs in install

moose-petsc 3.24.4_0

moose-libmesh 2026.02.13_6232e98_0

moose-dev 2026.02.16

  • Updated dependencies per above

moose-wasp 2025.09.19_02960f1_4

  • Rebuild due to new black format in conda/wasp/test_pyhit.py

moose-dev 2026.02.17

  • Rebuild due to moose-wasp 2025.09.19_02960f1_4 bump

moose-libmesh 2026.02.13_6232e98_0

moose-dev 2026.02.20

  • Bump due to dependency updates

Apptainer Package Updates

moose-dev:2026.02.05

  • Forced update due to coverage pinning in moose-tools 2026.02.05

moose-dev:2026.02.10

  • Forced update due to reformatting of framework python and pyhit

moose-mpi:2026.02.25

  • Update base OS image

  • Update mpich to 5.0.0 for clang, clang_min, cuda, and gcc_min variants

  • Update mpich to 4.3.2 for intel variant

  • Update openmpi to 5.0.9

  • Add rocky9 variant with gcc 13.3.3 mpich 4.3.2, and openmpi 5.0.9

moose-petsc:3.24.4_0

moose-libmesh:2026.02.13_6232e98_0

moose-dev:2026.02.16

  • Updated dependencies per above

  • Update code-server to 4.109.2

  • Update gperftools to 2.18

  • Update go for gperftools build to 2.16.0

  • Update miniforge to 26.1.0-0

  • Update pytorch to 2.10.0

moose-dev:2026.02.17

  • Rebuild due to moose-wasp 2025.09.19_02960f1_4 bump

moose-libmesh:2026.02.18_f8a1758_0

  • Update libmesh 6232e98...f8a1758

  • Set --with-nvtx and --enable-perflog when building with cuda (see #32039)

moose-dev:2026.02.20

  • Bump due to dependency updates