MOOSE Newsletter (January 2026)

MOOSE Improvements

  • Added the option to pass command line arguments to all RunApp testers in the TestHarness, via --append-runapp-cliarg (idaholab/moose#31935 and idaholab/moose#32239).

    • For example, --append-runapp-cliarg="foo=bar" will pass the command line option foo=bar to all tests that run a MOOSE application.

  • The test harness now explicitly checks for a specific exit code on non-zero exits, instead of allowing any non-zero exit codes. The should_crash test specification parameter was deprecated and replaced with expect_exit_code. Test specifications that set should_crash = True now implicitly set expect_exit_code = 1. Applications should remove the use of should_crash when possible, replacing it with expect_exit_code.

  • When assigning a name string to a MooseEnum (perhaps most notably the order parameter), if such a name does not exist amongst the enumerated items, and if it is plainly parseable as an integer, its existence is also now checked amongst the values of the enumerated items, allowing specifications such as order = 3 instead of order = THIRD. (idaholab/moose#32164)

  • MOOSE now supports the hypre Auxiliary-space Maxwell Solver (AMS) and the hypre Auxiliary-space Divergence Solver (ADS) for curl-curl and grad-div problems, respectively, via its well-known PETSc interface. A new DivDivField kernel has been added to allow discretizations of grad-div problems. (idaholab/moose#32233)

MFEM Backend improvements

  • All hypre AMS problems, including singular problems, are now verified to correctly execute on CUDA GPUs. (idaholab/moose#32197)

  • Time-dependent problems are now solved in terms of the state of the system at the next timestep, instead of time derivatives, using only MFEM's new capabilities. (idaholab/moose#32233)

UserObject and Postprocessor support in Kokkos-MOOSE

Kokkos-MOOSE now supports GPU-based UserObjects and Postprocessors. Kokkos-MOOSE postprocessors leverage the reducer concept of Kokkos and have substantially different interfaces from the original MOOSE postprocessors. The Kokkos-MOOSE VectorPostprocessors and Reporters will also adopt the same reducer interface and be added soon. (idaholab/moose#31858)

Mesh generation capabilities additions

A mesh generator was added to project a sideset onto a level-set surface. Level-set surfaces are defined implicitly with an equation, such as f(x,y,z) = 0. See ProjectSideSetOntoLevelSetGenerator. (idaholab/moose#32167)

A mesh generator was added to delete elements from a mesh in the proximity of another mesh. See DeleteElementsNearMeshGenerator. (idaholab/moose#32139)

Added ability to detect steady-state conditions using a post-processor

PostprocessorSteadyStateConvergence was added for detecting steady-state conditions using a post-processor value. This is similar to PostprocessorConvergence but lacks iteration-count parameters, which are often inappropriate for steady-state detection. (idaholab/#32242)

Allowed ChangeOverTimePostprocessor to estimate time derivative

ChangeOverTimePostprocessor was modified to allow division of the change in a post-processor value over a time step by the time step size, yielding an approximation of the time derivative. One use case is to use this quantity to check convergence to steady-state conditions (see the new PostprocessorSteadyStateConvergence). (idaholab/#32242)

MOOSE Modules Changes

Added passive scalar transport support in thermal hydraulics module

The ability to model the passive transport of quantities, like concentrations of molecules, has been added to the Thermal Hydraulics module. This support has been added to the components FlowChannel1Phase, SolidWall1Phase, InletMassFlowRateTemperature1Phase, and Outlet1Phase. (idaholab/#32149)

libMesh-level Changes

2026.01.14_887039c_0 Update

  • Preliminary support for configuring with NVTX, and for triggering NVTX profiler events via the PerfLog

  • Added TypeTensor::is_hpd() to report whether a tensor is Hermitian Positive-Definite

  • Deprecated boostcopy::enable_if_c; use the std:: version instead.

  • Fixed segmentation faults in cases where uncaught exceptions (including from any libMesh and MOOSE errors and assertion failures) are unhandled and reach the C++ terminate handler

  • Fixed GhostPointNeighbors behavior in cases where the new disjoint-boundaries feature is used on a distributed mesh with more elements than MPI ranks - this was blocking a major update in the functionality underlying the MOOSE BreakMeshByBlockGenerator.

  • Free all memory (and keep valgrind happy) when running a subset of tests in unit test driver app

  • Fixed nvcxx compiler warnings

  • Fixed issues with HDF5 linking on some systems

  • Fixed out-of-bounds access in VariationalMeshSmoother in 1D-only and 2D-only configurations

  • Clarified comment in JumpErrorEstimator

  • Add support for hypre AMS and ADS

  • TIMPI update:

    • Fix non-blocking string receive()

    • Added more all-reduce APIs, for bitwise and logical operators (or, xor, and) and for products.

PETSc-level Changes

The PETSc submodule has been updated from v3.24.2 to v3.24.3. Please see the GitLab changeset listing for a summary of changes in this minor release update.

Package Changes

PR #31935

  • Update MFEM 9708cc5...b5af0e9

  • Enable GSLIB support within MFEM

  • Update OSX SDK to 14.5 in conda, removing support for OSX Ventura (EOL September 15, 2025)

  • Updated MooseDocs to support python 3.14

    - Explicitly set multiprocessing context to fork; python 3.14 changes the default to forkserver - Remove some picking of objects that do not work with multiprocessing forkserver

Conda moose-tools 2026.01.27

  • Add build for python 3.14 and use as default

  • Update clang-format to 19

  • Update ruff to 0.14.5

Conda moose-mpi 2026.01.27

  • Update MPICH to 4.3.2

  • Update OpenMPI to 5.0.8

  • Update HDF5 to 1.14.6

  • Update CMake to 4

  • Update GCC to 14.3.0 on Linux

  • Update Clang to 19.1.7 on Mac

  • Update GFortran to 14.3.0

  • Allow python 3.14

  • Correct variable replacement in activation script

  • Force using OFI for mpich now that conda mpich comes with UCX

Conda moose-libmesh-vtk 9.5.2_0

Conda moose-petsc 3.24.3_0

Conda moose-libmesh 2026.01.27_502d428_0

  • Update libmesh c144a6e3...502d428

  • Do not strip symbols for libmesh build by removing -Wl,-S from LDFLAGS

Conda moose-seacas 2025.10.14_0

Conda moose-wasp 2025.09.19_02960f1_0

  • Update C and C++ compilers to match those in moose-mpi==2026.01.14

Conda moose-pprof 2026.01.11_71be6bf

  • Pin to a specific version of pprof

  • Update pprof to 71be6bf

Apptainer moose-mpi:2026.01.27

  • Update base container for clang, clang_min, and gcc_min variants

  • Update MPICH to 4.3.2 for clang, clang_min, and gcc_min variants

  • Update Clang to 20.1.8 for moose-mpi-clang

  • Add MOOSE_BASHRC variable to allow for a custom bashrc when entering the shell; defaults to ~/.bashrc_apptainer if available

  • Add bash completion to shell, notably for git

Apptainer moose-petsc:3.24.3_0

Apptainer moose-libmesh:2026.01.27_502d428_0

Apptainer moose-dev:2026.01.27

  • Update NEML2 9708cc5...b5af0e9

  • Update MFEM 9708cc5...b5af0e9

  • Update code-server to 4.108.0

  • Update pytorch v2.7.1...v2.9.1

  • Update gperftools to 2.17.2 for openmpi-profiling variant

  • Update Go to 1.25.5 for gperftools in openmpi-profiling variant

  • Update miniforge to 25.11.0-1

  • Pin python to 3.14