MOOSE Newsletter (November 2023)
MOOSE Improvements
MeshDivisions system to split the mesh in arbitrary ways
The MeshDivisions system has been added to MOOSE. It was released with a number of simple examples, including SubdomainsDivision for a block ID-based division of the mesh and the CartesianGridDivision for a Cartesian grid-numbering overlaid on top of the mesh. It is intended to be able to specify arbitrary mappings in transfers between applications. For now, the new system can be used for arbitrary reduction operations over the mesh divisions using the MeshDivisionFunctorReductionVectorPostprocessor mostly for postprocessing purposes.
Coordinate transformations during transfers between applications
General coordinate transformations between applications have been implemented in the MultiAppGeneralField-derived transfers. This enables transfers between from RZ to XYZ geometries, for example, or accounting for arbitrary rotations (defined in the [Mesh]
blocks) when transferring between applications.
Changes to Darcy/Forchheimer friction
We have changed the way that users should formulate Darcy and Forchheimer friction coefficients for simulating friction flows with the finite-volume Navier-Stokes classes. Information about the new formulation can be found in the relevant friction kernel, PINSFVMomentumFriction. We have also introduced a real example of a class that computes Darcy and Forchheimer friction coefficients, FunctorErgunDragCoefficients.
Selective exclusion of finite element families for p-refinement
Users may now selectively exclude finite element families from p-refinement. This allows a use case such as a discontinuous Galerkin discretization for the "nonlinear" variables and Lagrange-based auxiliary variables for data transfers. In this example the user may want to exclude the Lagrange family from p-refinement while p-refining the monomial or L2 Lagrange nonlinear variable. Families to exclude are controlled using the disable_p_refinement_for_families
parameter in the Adaptivity
block. By default, all non-hierarchic finite element families are excluded from p-refinement.
Custom eigen normalizations
Users may now provide a custom normalization to their eigen solves using the "bx_norm" parameter. This is the last piece that the "new" SLEPc-based eigen system needed to emulate the native MOOSE-based eigen system. With this addition, the native MOOSE implementation may be removed in the future.
libMesh-level Changes
2023.11.06
Update
Added low-order
RAVIART_THOMAS
finite element support, including general H(div) mapping support for future divergence-conforming finite element families. AddedL2_RAVIART_THOMAS
support for the broken/L2 version of that space. Example codes for each, using mixed and hybridized formulations.Option to remove a boundary id globally from a mesh without re-preparing it afterward
Option to merge subdomains when stitching meshes based on inspection of both subdomain ids and subdomain names
Better matching of input file ids when reading Abaqus files
Fixes for independent control over which variables see p-refinement
Added
QBase::clone()
methodAdded parameter for user-supplied hash when doing Just-In-Time compilation with fparser
Added
Packing
specializations forEigen
matrices; this enables parallel communication of these classes and of many derived types including them.Bug fixes for nodal interpolation of rational elements; this corrects an error in VTK output of many IsoGeometric Analysis mesh results.
Bug fix for overzealous caching of rational elements' shape functions. This corrects an error in computation on many IsoGeometric Analysis meshes
Bug fixes for refinement of Tet14 elements.
More robust
reduced_basis
EIM error indicator calculationsHigher-order default quadrature choice in integration-based error estimators and error indicators, avoiding underintegration on superconvergent results
Removal of Fortran/C++ detection for HDF5 libraries, so we can more easily find the desired C HDF5 library we do use.
Upgrade to latest autotools versions in libMesh, TIMPI, and MetaPhysicL
Update VTK compatibility to support VTK 9.3
GCC warning workarounds to allow –enable-werror builds with -Wextra in GCC 13
Minor refactoring in Threads/PerfLog interactions
More parallel synchronization assertions during System setup and update operations
Minor fixes to documentation, comments, and unit tests, including VexCL-enabled unit tests of MetaPhysicL
2023.11.29
Update
enum_to_string
andstring_to_enum
now initialize their maps via static constructors, so they (and functions which depend on them, likeElem::get_info()
are now thread-safe.Added
FEInterface::is_hierarchic()
shim.Added
TypeTensor<T>::column()
extraction method.Added
L2_LAGRANGE_VEC
finite element family, providing a space which locally matchesLAGRANGE_VEC
but which is discontinuous between elements.Configure option
--with-xdr-include
, to make it easier to build on systems with XDR support in non-default locations.Configure now detects non-default $CC from PETSc when possible.
Configure now adds compiler flags to enable safe use of Floating-Point Exceptions, even with newer clang/clang++ and optimization enabled.
Support for reads of ExodusII meshes with the
WEDGE6
element string.Support for Metis partitioning of meshes with overlapping nodes or elements even with
unique_id()
disabled.Updated to newer Nanoflann, switched to git submodule
PETSc now uses VecGhostGetGhostIS instead of VecGetLocalToGlobalMapping for more efficiency on newer PETSc versions.
Bugfix and test coverage for recent bug in reads of Abaqus meshes with element sets.
Bugfix and test coverage for XDR writes of refined meshes with extra element integers.
Fixes for
reduced_basis
EIM features.Fixes for example codes triggering GCC 13 warnings.
PETSc-level Changes
PETSc updated to 3.20.1
The moose-petsc
package has been updated alongside the PETSc submodule to version 3.20.1. To update your older MOOSE environment to include this change, please activate your MOOSE conda environment and perform the command:
mamba install moose-dev=2023.11.30
The MOOSE package versions and builds included in this environment version are the following:
Package Version Build
===================================================
moose-dev 2023.11.30 build_0
moose-libmesh 2023.11.29 build_0
moose-libmesh-vtk 9.2.6 build_8
moose-mpich 4.0.2 build_15
moose-peacock 2023.11.29 hb4c3223_0
moose-petsc 3.20.1 build_0
moose-tools 2023.11.28 hd1db04d_0
moose-wasp 2023.11.29 build_0
Bug Fixes and Minor Enhancements
A DirichletBC leveraging functors was added for finite element variables: FunctorDirichletBC. This helps create arbitrary couplings between variables at boundary conditions.
The ability to evaluate functors defined on the other side of a boundary was added to the FVFunctorDirichletBC. This helps connect two volumes together where variables connected through Dirichlet boundary conditions are defined on two separate subdomains.
The MultiAppCopyTransfer now supports transfer of vector variables.