MOOSE Newsletter (January 2022)
Conda MPICH Updated to 3.4.2
To gain enhanced support for newer platform architectures alongside various bug fixes and enhancements, the moose-mpich
package was updated to MPICH 3.4.2 (released May 2021). This update can be obtained by activating the conda MOOSE environment and performing:
conda update --all
where the appropriate versions and build numbers in the update output should be at least the following:
Package Version Build
=====================================================
moose-libmesh 2021.12.15 build_1
moose-libmesh-vtk 9.1.0 build_1
moose-mpich 3.4.2 build_0
moose-petsc 3.15.1 build_4
MOOSE Improvements
PeripheralTriangleMeshGenerator
A new mesh generator available in the MOOSE reactor module, the PeripheralTriangleMeshGenerator, allows users to take an arbitrary 2-D input mesh (typically a reactor core) and automatically add a triangulation of the area in between the input mesh boundary and a circular periphery. For thick peripheries, element size within that area can be reduced by user-specified parameters defining extra circles of element vertices to add. The output mesh may then be passed to other generators for further extension, extrusion to 3-D, etc.
Figure 1 shows an example triangulation around an existing core mesh.

Figure 1: An example triangulation generated by PeripheralTriangleMeshGenerator
using Steiner point rings.
PeripheralRingMeshGenerator
Another new mesh generator, PeripheralRingMeshGenerator, is also available in the MOOSE reactor module. The mesh generator adds a 2D peripheral region using first-order quadrilateral elements (i.e., QUAD4) with a circular external boundary to the input 2D mesh. It provides similar functionalities to PeripheralTriangleMeshGenerator, but with quadrilateral elements. PeripheralRingMeshGenerator also works well for reactor cores with explicit pin geometries in addition to coarser meshed assemblies, and it can be used recursively on a mesh to add as many rings of peripheral regions as desired.
Figure 2 shows an example of the peripheral mesh generated by this mesh generator.

Figure 2: An example peripheral ring (cyan region) generated by PeripheralRingMeshGenerator
.
Flux boundary conditions for the Navier Stokes finite volume implementation
Mass, momentum, energy and scalar quantity flux boundary conditions were added in order to facilitate coupling between multi-dimensional fluid simulations and subchannel or system-level simulations. The boundary conditions accept multiple formulations, based on conserved or primitive variables, enabling maximum flexibility and reducing the need for additional conversion of quantities between coupled applications.
libMesh-level Changes
Make
CompareDofObjectsByID
available to all. This is useful for building sets of node and element pointers that have more deterministic ordering than if the set was ordered based on the pointer addressesMake use of
std::condition_variable
for_get_array
. Eliminates helgrind errors during multi-thread access toPetscVector::get
Update to TIMPI 1.8.2
Nanoflann update to 1.4.1
Use get_unique_tag() for a few more MessageTags
Remove caching from FE<CLOUGH>
Higher precision when printing assert failures
resolve warning of expectedly unbinned entries.
Clear input data structure before using
Don't unnecessarily compute the Jacobian for ComputeResidualandJacobian. This optimization will likely be leveraged in MOOSE in order to compute the residual and Jacobian simultaneously, avoiding duplicate variable and material property reinitialization.
Bug Fixes and Minor Enhancements
A boolean parameter
extrap
was added to PiecewiseLinear, which when set totrue
specifies that extrapolation occurs when the sample is outside of the provided abscissa values, instead of using the nearest ordinate value.Documentation was added for certain Problems and Predictors
Additional utilities for the functor system were added, such as to create a functor that is a gradient of another functor.