MOOSE Newsletter (October 2019)

Collaborative Computing Center

We move to our new location in early October, the Collaborative Computing Center (C3). The location includes open workspace for the software teams, meeting rooms, and lots of room for collaboration. There will also be a new supercomputer being installed at the end of the year with approximately 100,000 cores. All of the changes will help INL continue to grow as a leader in computational software and hardware.

Collaborative Computing Center (C3)
The atrium includes collaboration areas and a view of the Snake River.
Conference room for future MOOSE workshops.
The MOOSE pod.

Our main website was updated to include a gallery of examples as well as a Google based search, which will provide better search results for our users.

ExplicitSSPRungeKutta Time Integrator

The time integrator ExplicitSSPRungeKutta was created, which implements strong-stability-preserving (SSP) Runge-Kutta methods of orders 1, 2, and 3. This time integrator was modeled in the fashion of ActuallyExplicitEuler, i.e., it bypasses the nonlinear solver, gives options for mass matrix computation and inversion, and does not require the user to modify the implicit parameter of residual objects.

Mesh Generator Enhancements

The mesh generator system now throws an error if there are ambiguous end points for the mesh generation tree. Additionally a new parameter, "final_generator" was added to disambiguate mesh generation trees or to simply terminate the mesh generator execution stack early.

New Compiler Support

MOOSE now supports GCC 9.2 and Clang 9.0 compilers

Framework level ReferenceResidualProblem

The ReferenceResidualProblem object now resides in the framework as opposed to the Contact module, so it can be easily used in all MOOSE applications. Moreover, the preferred method for using ReferenceResidualProblem has changed. Instead of using save_in variables, the tagging system is employed. An example of using the new ReferenceResidualProblem setup can be found in the blocks:

[Problem]
  type = ReferenceResidualProblem
  extra_tag_vectors = 'ref'
  reference_vector = 'ref'
[]

[BCs]
  [u]
    type = RobinBC
    boundary = 'left right'
    coef = ${coef}
    variable = u
    extra_vector_tags = 'ref'
  []
  [v]
    type = RobinBC
    boundary = 'left right'
    coef = 1
    variable = v
    extra_vector_tags = 'ref'
  []
[]
(test/tests/problems/reference_residual_problem/reference_residual.i)

ReferenceResidualProblem is an excellent choice for changing MOOSE's default convergence criteria. It is useful for:

  • Ensuring that variables with different residual scales are individually converged

  • Asserting convergence in cases where the simulation is nearly a steady-state, e.g. if the initial residual is small the solver may not have to crank the residual down to a numerically infeasible level

ReferenceResidualProblem can be used in conjunction with automatic scaling to tackle different scales of residuals and Jacobians respectively, with the former ensuring individual convergence of variables and the latter ensuring a well-conditioned matrix.

Bug Fixes

  • Quadrature Point index properly initialized in NodalBC object so that less commonly used public APIs work properly

  • Sidesets properly preserved in MeshGeneratorExtruder object