MOOSE Newsletter (January 2024)
MOOSE Improvements
New Physics action syntax
The Physics syntax has been added to MOOSE. The Physics
system is meant to streamline the input of a set of physical equations in MOOSE. For example, this might allow the definition of the required equations automatically but also the selection of good default parameters and preconditioners. Physics
are derived from Actions but define APIs to facilitate the implementation of a new Physics
action. As appropriate, some of the modules' actions that defined equations will be transitioned to the Physics
system over the coming months.
Separation of the Materials and FunctorMaterials block
Functor materials were added to MOOSE to allow evaluation of material properties at arbitrary locations, such as element faces or nodes, usually on-the-fly (although some caching is supported). These materials do not define traditional material properties as in the Material system, but instead they define Functors. To mark the difference between the two systems, the two types of objects should no longer be created in the same [Materials]
block; FunctorMaterials should be created inside a [FunctorMaterials]
block.
Improvements in the Navier Stokes Module
The k- turbulence model was added. This method enables more accurate turbulence modeling compared to the current mixing-length model.
A drift-flux mixture model was added which enables solutions of two-phase flows where the phases move at different velocities but assume local equilibrium over short spatial length scales.
Field Split Additions
Field splits can now be nested within each other. Moreover a NavierStokesProblem was introduced that allows for scalable preconditioning of the Navier-Stokes equations for low to moderate Reynolds numbers. The Least Squared Commutator preconditioning techniques employed have been demonstrated on problem sizes up to 70 million degrees of freedom.
libMesh-level Changes
2024.01.23
Update
New example illustrating a Hybridized Discontinuous Galerkin solve
Added new finite element support: the
HIERARCHIC_VEC
FE family, for vector-valued hierarchic shape functions, and theL2_HIERARCHIC_VEC
FE family, for the broken/L2 version of that space. Added simple-vector-valued example and Hybridized-Discontinuous-Galerkin example runs using these families.Support for a pre-check object callback from PetscNonlinearSolver
Keep track of libMesh command line queries, and avoid spurious unused-option warnings about them from PETSc
Support for upgrading the order of mixed-order input meshes in
all_second_order()
andall_complete_order()
Support for neighbor-finding and mesh stitching with mixed-order input meshes. Mixed-order meshes must still be upgraded before being used to support C0 finite element types in a linear solve (where constraint equations would be needed between incompatible-order neighbors), but mesh generation and modification with pre-upgraded mixed-order meshes is now possible.
Support for more preconditioning options in EigenSparseLinearSolver; this allows us to reenable a dozen examples that were previously skipped when Eigen was configured as the default linear algebra package.
Minor fixes to reduced basis code, string parsing of uncommon quadrature rule names, configuration on systems without stdlib.h,
Minor clarifications and typo fixes in documentation, comments, and runtime error messages
Fixes for VTK .pvtu reading, and preservation of libMesh node, element, and subdomain ids written to VTK files
Elem::volume()
no longer can throw an exception when called on an element without an invertible mapping; henceprint_info()
andget_info()
are now safe to use when emitting debugging messages about twisted geometric elements.Support
interior_parent
inElem
order upgradesAvoid creating duplicate entries in
BoundaryInfo
multimapsRemoves an overzealous assertion in variable name collection that does not work with
NodeElem
-only meshes
PETSc-level Changes
PETSc updated to 3.20.3
The moose-petsc
package has been updated alongside the repository submodule to version 3.20.3. Consequently, the moose-dev
conda environment has been updated. To update your MOOSE package to this release, please activate your MOOSE conda environment and perform the command:
mamba install moose-dev=2024.01.23
or remove and re-create your moose environment by performing the following:
conda deactivate
conda env remove -n moose
conda create -n moose moose-dev=2024.01.23
The following MOOSE package versions and builds corresponding to moose-dev=2024.01.23
should be seen in the new conda environment.
Package Version Build
===================================================
moose-dev 2024.01.23 build_0
moose-libmesh 2024.01.23 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.3 build_0
moose-tools 2023.12.20 he4b30e4_0
moose-wasp 2023.11.29 build_0
Bug Fixes and Minor Enhancements
Shorthand functor material property output was added using the "output_properties" parameter. This automatically creates a FunctorAux and a constant monomial variable for output, which had to be done manually before.
Extra element IDs can now be used to assign elements to subdomains in the ParsedSubdomainMeshGenerator.
The PropertyReadFile user object can now read multiple files, once every time it is executed. The execution is controlled with the "execute_on" parameter.
The NEML2 constitutive model library was added to the solid mechanics module as an optional dependency. NEML2 is built on top of libTorch and supports the implementation of device-independent material models (with GPU support).