MOOSE Newsletter (July 2024)

MOOSE Improvements

Execution at specific times

With the TimesEnableControl control object, any object which can be turned on/off using controls can now be activated or de-activated based on the times listed in a Times object. The execute_on parameter of the controlled object is still obeyed, only when it is set to be active.

Checkpoint system updates

After receiving user feedback, MOOSE's checkpoint system has been updated:

  • By default, checkpoints are now written every 60 minutes of elapsed wall time (increased from 10 minutes).

  • The Outputs/wall_time_checkpoint=false syntax is introduced as an easy way to turn off automatic checkpoint output. Before this change, the only way to turn it off was to set Outputs/Checkpoint/wall_time_interval to a number of seconds longer than the total simulation wall time.

  • An informative block is output to the MOOSE header in the console output describing the configuration of the checkpoint system for each simulation.

  • Checkpoints are now written in compressed ASCII (.cpa.gz) format instead of binary (.cpr) format. This allows checkpoints to be output on systems without XDR support. Reading and writing binary checkpoint files is no longer supported.

Modules changes

  • Several additional routines for evaluating LinearFluidProperties with the (pressure, temperature) and the (specific volume, specific internal energy) variable sets were implemented.

  • The INSFVMomentumTimeDerivative finite volume kernel can now optionally not contribute to the Rhie Chow coefficients. This enables INSFV flow solutions to be independent from the timestep size.

  • TabulatedFluidProperties support for the (specific volume, specific internal energy) variable set was entirely reworked to enable the direct use of tabulated data with these variables. Properties tabulated in (pressure, temperature) can also be loaded simultaneously.

Minor changes

  • A basic line search was added to the contact point search Newton solve, along with improved floating point exception handling, both to increase robustness of the contact point search.

  • The PropertyReadFile can now read a list of files to read from another file, containing the files' names in a single column.

libMesh-level Changes

2024.07.16 Update

  • Support for QuadShell9 elements, and fixes for refinement of QuadShell8 elements. This is a behavior-changing update: QuadShell4 elements, when elevated to second order, now become QuadShell9 (with a full biquadratic Lagrange space) rather than QuadShell8 (with a "Serendipity element" space).

  • Fixes for libMesh make dist and make distcheck with new submodules and new contributed packages.

  • Support and unit tests for non-square EigenSparseMatrix matrices

  • Support and unit tests for reading sparse matrices from gzipped-Matlab format files.

  • Utility for converting sparse matrix files from PETSc binary formats to Matlab format.

  • Improved speed for reading sparse matrices.

  • Refactoring of some solution transfer code; exposure of MeshfreeInterpolationFunction class to users.

  • Support and unit tests in TIMPI for set_union of multiset and multimap containers, including unordered_ versions.

  • Refactored Nedelec finite element code for simplification and generality.

  • Fixes and testing for more IsoGeometricAnalysis use cases on distributed meshes.

  • More test coverage: ExodusII_IO with shell elements, PETSc DMlibMesh interface

  • New Elem::is_internal() API for local node indices

  • Additional fparser headers installed, to enable user subclassing

  • Assorted bug fixes: configure now supports preexisting -Werror in compiler flags (with tested compilers), more standard treatment of PETSc error codes, --node-major-dofs now works with FE types that have element DoFs too.

  • Added LIBMESH_PETSC_SUCCESS shim

  • PetscVector subvectors can now be created by supplying only local subvector indices.

  • Slight change to restore_subvector() arguments

  • Incoming vectors to local_variable_indices() are now cleared before filling.

  • PerfLog profiling of matrix reads and mesh constraint initialization.

  • Refactoring and optional debugging features for mesh constraint code.

  • Added RBConstruction::is_serial_training_type() and EIM updates to reduced basis code.

  • Added a DofMap API for users to request full matrix sparsity pattern retention even with linear algebra packages that do not need it themselves.

  • System::is_initialized() is now const

  • Added LibmeshPetscCall macro that can wrap any PETSc function call without need for LIBMESH_CHKERR(ierr)

2024.07.27 Update

  • Bounding box testing for .msh $Entities in GmshIO::read(), to detect file inconsistencies

  • Added Netgen as an optional submodule. With Netgen enabled, libMesh now includes a NetGenMeshInterface class which can be used to generate tetrahedral meshes within triangulated boundaries or within volume mesh domains.

  • Added libmesh/fuzzy_equals.h methods: absolute_fuzzy_equals() and relative_fuzzy_equals(), for checking equality to within a specified absolute or relative tolerance. Added l1_norm() and l1_norm_diff() methods as necessary to classes (TypeVector, NumericVector, SparseMatrix) and subclasses which might be compared.

  • Fixes for make distcheck testing of release candidate tarballs

  • Updates to EIM error indicator normalization in Reduced Basis code