MOOSE Newsletter (May 2024)

MOOSE Improvements

Hybridizable Discontinuous Galerkin methods

We have added the ability to implement hybridizable discontinuous Galerkin (HDG) methods. Thus far, we have added HDG discretizations of diffusion and Navier-Stokes physics. For more information about HDG, please visit the HDG overview page. More information about HDG Navier-Stokes can be accessed here.

Add new linear system assembly for finite volume methods

We have added a new assembly algorithm for finite volume systems which does not rely on Newton's method. With the new interfaces, the developer can decide which fixed-point algorithm is needed for a given problem and implement matrix and right hand side contributions accordingly. The current examples in MOOSE asssume a Picard-style fixed-point iteration. For more information we refer the interested reader to the design page.

Override parameters when using included files

Either of following syntaxes can now be used to override parameters from included files:


param := value
param :override= value

See Parameter override syntax for more information.

Added radiation coupling component between multiple 2D heat structures

In the Thermal hydraulics module, the component HSCoupler2D2DRadiation was added, which couples any number of 2D heat structures together via radiation, using gray, diffuse assumptions.

Deployment of the Physics syntax to the Navier Stokes module

Several Physics actions were created for the Navier Stokes equation with a finite volume discretization, and the fully-coupled single matrix approach.

Deployment of the new linear system assembly approach for the SIMPLE algorithm in the Navier Stokes module

We have deployed the new linear system assembly approach for building the momentum and pressure systems in the SIMPLE algorithm within the Navier Stokes module of MOOSE. On a 3D wavy pipe problem with around 330,000-cell unstructured hex mesh, the new approach shows a speedup of a factor of 10 in terms of solve times compared to the previous approach which relied in the residual and Jacobian routines already available in MOOSE.

libMesh-level Changes

2024.05.05 Update

  • ShellMatrix support and other functionality added to CondensedEigenSystem, to allow applications like MOOSE to safely solve eigenproblems with adaptive refinement or other DoF constraint equations

  • Added SparseMatrix::read() subroutine, as well as format-specific read subroutines, to read sparse matrices from files.

  • Added gzip option to mesh splitter app output

  • Auto Area function options for triangulation, allowing MOOSE XYDelaunay users to more easily generate more smoothly graded meshes

  • Moved eigensolve printing and error computation from dbg-mode-only to a new print_eigenvalues() routine

  • Using more modern C++ features to simplify code: std::insert_or_assign, if statements with variable initializers, reliable implicit polymorphic unique_ptr conversion, more use of std::make_unique and smart pointers to replace raw new,

  • Doxygen documentation clarifications

  • More test coverage for PDE solves in spaces defined by arbitrary constraint operators

  • Debug-mode testing of partitioner graph symmetry, to intercept any errors before Parmetis can turn them into a more obscure error

  • Assorted Reduced Basis code updates: virtual preevaluate_thetas() method to allow subclass overrides; overruling of deterministic_training option in some cases; storing error indicator normalization