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=falsesyntax 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_intervalto 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 - QuadShell9elements, and fixes for refinement of- QuadShell8elements. This is a behavior-changing update:- QuadShell4elements, 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 distand- make distcheckwith 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 - MeshfreeInterpolationFunctionclass to users.
- Support and unit tests in TIMPI for - set_unionof- multisetand- multimapcontainers, 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_IOwith 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 - -Werrorin compiler flags (with tested compilers), more standard treatment of PETSc error codes,- --node-major-dofsnow works with FE types that have element DoFs too.
- Added - LIBMESH_PETSC_SUCCESSshim
- 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 - LibmeshPetscCallmacro 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 - NetGenMeshInterfaceclass which can be used to generate tetrahedral meshes within triangulated boundaries or within volume mesh domains.
- Added - libmesh/fuzzy_equals.hmethods:- 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 distchecktesting of release candidate tarballs
- Updates to EIM error indicator normalization in Reduced Basis code