MOOSE Newsletter (October 2026)

buildconstruction:In Progress

This MOOSE Newsletter edition is in progress. Please check back in November 2026 for a complete description of all MOOSE changes.

MOOSE Improvements

MOOSE Bug Fixes

  • Apps without a Console output (e.g. [Outputs] console = false) no longer keep every message written to _console in memory. The buffer was never cleared and was copied at every flush, so long-running (sub-)apps, such as a MultiApp running many solves in one process, became slower and slower with the number of messages. (idaholab/moose#34118)

MOOSE Modules Changes

Contact module

Mechanical mortar contact now assembles the contact force by interpolating the nodal traction vector with the traction basis, instead of scaling an interpolated scalar pressure by the nodal normal of the residual row's own node. Only the former is the transpose of the weighted gap, so the contact force is now self-equilibrated across the interface and no longer depends on secondary node numbering. Contact forces and converged results therefore change on interfaces where the secondary nodal normals vary along the face.

Local-basis quasistatic mortar and mortar_penalty contact Jacobians now also include derivatives of the averaged secondary nodal normals and their tangent basis. These derivatives can require a larger AD container on high-order or high-valence interfaces. Because the contact coupling changes during the solve in most contact problems, such as when surfaces slide or come into contact, set Problem/use_hash_table_matrix_assembly = true to accommodate the changing sparsity pattern (idaholab/moose#33390).

libMesh-level Changes

2026.10.08_342ad76_0 Update

  • Updated libMesh from 90766057 to 342ad76b

  • Submodule moved to libMesh master (342ad76b, 2026-10-08)

  • libmesh_transform_reduce() shim, enabling faster std::transform_reduce() operations on supported compilers, with fallbacks for older compilers. Optimizations in dense vector/matrix functionals.

  • Faster partitioning when using partitioners (most options other than Parmetis) whose partition quality does not improve with an initial "pre"-partitioning

  • MeshBase::n_constraint_rows() now is an O(1) return of cached data, not a parallel-only recount

  • Support for calculation of gradients on interiors of H(div) FE types

  • VariationalSmoother quadrature type can now be user-overridden, enabling users to select vertex-sampling rules that are more robust for smoothing difficult meshes.

  • Support for computing a "near"-dual basis on Tri6/Quad8 elements where the standard dual fails positivity requirements

  • Regularized gradient of norm of a zero-vector to be zero rather than NaN. This makes some MOOSE AD kernels more robust.

  • Autotools detection, build support, and libMesh numerics support for Kokkos

  • Optional support for ghosting constraint DoFs of ghosted DoFs, as needed by MOOSE Kokkos

  • Improved support for shell-matrix Jacobian, sparse-matrix preconditioner PetscNonlinearSolver solve cases

  • Allow applications to flag non-reproducible residuals to PetscNonlinearSolver

  • More-accurate ExodusII elemental output of higher-order discontinuous variables

  • Option to skip spurious interior side generation in build_side_list_from_node_list() on thin meshes

  • New SKEW_ANGLE element quality metric, with implementations of that and some older metrics on more Elem types

  • New LOG_ONE_ENTITY_SCOPE macro for performance logging of high-frequency events that should not be included in per-entity logging like NVTX

  • Support for more IGA mesh types in System::solve_for_unconstrained_dofs(), for e.g. more accurate initial conditions setting on spline DoFs

  • Support for isfinite/isnormal/signbit in MetaPHysicL

  • Support for constexpr, Kokkos, in MetaPhysicL::numeric_limits

  • Fixes in HIERARCHIC basis evaluation outside of elements, which was triggerable by FDM-based HIERARCHIC gradient evaluation on element boundaries

  • Fix for HIERARCHIC shape function orientation consistency on some 3D meshes

  • Fix for corner cases in Poly2TriTriangulator refinement code, used by XYDelaunay and other MOOSE mesh generators

  • Fix for neighbor-finding on polyhedral meshes

  • Fixes and test coverage for more reference-space node position queries on Tri7 and other high-geometric-order elements

  • Automatic calculation of topological data on higher-order geometric elements

  • Refactoring+optimization+robustness improvements in DistributedMesh copy constructor

  • Non-ASCII output fix in MeshBase::get_info(), and more robustness on unprepared meshes

  • Added more stringent mesh preparation assertions, made test cases compatible with them

  • Fix for corner case where a post-redistribution distributed mesh might have ghosted-element neighbors that still have remote_elem neighbor links to each other

  • Fix for OpenMP libMesh thread backend sometimes using a full thread count when asked to temporarily use a reduced count

  • Fix for excessive-peak-memory-usage bug in pthreads parallel_reduce() backend

  • Fix for vector variable output in Nemesis_IO

  • Fix in reduced_basis training

  • Fix for BoundaryInfo::sync to an unprepared DistributedMesh with METHOD=dbg

  • C++20 compiler compatibility fixes in MetaPhysicL

  • Better error message when trying to read a checkpoint split mesh with a bad split count

  • Avoid dropping error messages from non-rank-0 failures on parallel unit test suite runs

  • Added AGENTS.md and libMesh-Civet-CI-failures skill files for AI agents

  • Apply --enable-werror flag to C/C++ preprocessing only, not linking, to avoid triggering errors from warnings in third-party code triggered by compilers using Link-Time Optimization

PETSc-level Changes

The PETSc submodule was updated from 3.25.4 to 3.26.0. OpenBLAS is held at 0.3.33 rather than the 0.3.34 that PETSc 3.26.0 downloads by default, because 0.3.34 hangs in threaded direct solves (MUMPS, SuperLU_DIST and STRUMPACK) when OMP_NUM_THREADS is greater than one.

Conda Package Updates

Pins in conda/conda_build_config.yaml now follow conda-forge-pinning-feedstock: GCC and gfortran moved from 14 to 15, clang on macOS from 19 to 21, libxml2 from 2.14 to 2.15, and ucx from 1.20 to 1.22.

moose-tools 2026.10.19

  • Updated ruff from 0.15.15 to 0.16.7

  • Updated clang-format and clang-tools from 19.1.7 to 21.1.8, matching the macOS clang pin

  • Rebuild due to updated pins in conda/conda_build_config.yaml

moose-build 2026.10.19

  • Updated the exported compiler pins to GCC 15, gxx 15 and gfortran 15 on Linux, and to clang and clangxx 21.1 on macOS

moose-libmesh-vtk 9.7.0_2 [mpich,openmpi]

  • Rebuild due to updated pins in conda/conda_build_config.yaml

moose-petsc 3.26.0_0 [mpich,openmpi]

  • Updated petsc from 3.25.4 to 3.26.0

  • Held the PETSc-downloaded OpenBLAS at 0.3.33 to avoid a hang in threaded direct solves with 0.3.34

  • Built the OpenBLAS getarch helper with the plain compiler, because the conda-forge mpich 5.0.2 mpicc no longer adds an rpath to $PREFIX/lib

moose-libmesh 2026.10.08_342ad76_0 [mpich,openmpi]

  • Updated libmesh from 90766057 to 342ad76b

  • Rebuild due to updated Conda packages moose-petsc 3.26.0 and moose-libmesh-vtk 9.7.0

moose-wasp 2026.08.13_ce25dcd_2

  • Rebuild due to updated pins in conda/conda_build_config.yaml

moose-pyhit 2026.10.19

  • Rebuild due to updated Conda package moose-wasp 2026.08.13_ce25dcd

moose-dev 2026.10.19 [mpich,openmpi]

moose-pprof 2026.07.09_b9395ee_1

  • Rebuild due to updated pins in conda/conda_build_config.yaml

moose-seacas 2025.10.14_6

  • Rebuild due to updated pins in conda/conda_build_config.yaml

Apptainer Package Updates

moose-mpi:2026.10.19

  • Update all base containers

  • Updated variants: - ubuntu24_gcc (default): Ubuntu 24.04 base with GCC 14.2.0, MPICH 5.0.2, OpenMPI 5.0.11 - ubuntu24_clang: Ubuntu 24.04 base with Clang 22.1.8, GCC 14.2.0, MPICH 5.0.2, OpenMPI 5.0.11 - ubuntu24_cuda_gcc: Ubuntu 24.04 base with CUDA 13.3.1, GCC 14.2.0, MPICH 5.0.2, OpenMPI 5.0.11 - ubuntu24_gccmin: Ubuntu 24.04 base with GCC 9.5.0, MPICH 5.0.2 - rocky8_gcc: Rocky Linux 8.10 base with GCC 13.3.1, MPICH 5.0.2, OpenMPI 5.0.11 - rocky8_oneapi: Rocky Linux 8.10 base with GCC 13.3.1, oneAPI 2026.1.1, MPICH 4.3.2 - rocky9_gcc: Rocky Linux 9.7 base with GCC 13.3.1, MPICH 4.3.2, OpenMPI 5.0.11

moose-petsc:3.26.0_0

  • Updated petsc from 3.25.4 to 3.26.0

  • Held the PETSc-downloaded OpenBLAS at 0.3.33 to avoid a hang in threaded direct solves with 0.3.34

moose-libmesh:2026.10.08_342ad76_0

moose-dev:2026.10.19

  • Updated code-server from 4.132.0 to 4.138.0

  • Updated PyFMI from 2.21.0 to 2.23.0

  • Updated go from 1.26.1 to 1.27.1

  • Updated ruff from 0.15.15 to 0.16.7 in requirements.txt

  • Updated clang-format from 19.1.7 to 21.1.8 in requirements.txt

  • Updated conduit from 0.9.7 to 0.9.9

  • Updated mfem from a7dbea1 to 6a858dc, which includes the MFEM 4.10 release

    Because the base images changed, every apptainer container is rebuilt.