MOOSE Newsletter (April 2020)

SoftwareX Paper Published

The new MOOSE paper was published in SoftwareX: MOOSE: Enabling massively parallel multiphysics simulation.

Update validParams

The framework and all modules have been updated to use a static function for validParams. Please update your applications to use the new static function and see #14135 see the changes in MOOSE. To update application perform the following steps.

  1. In the header (.h) file, remove the class forward declaration and declaration of the template specialization of validParams.

    // Forward Declarations
    class MyCustomObject;
    template <>
    InputParameters validParams<MyCustomObject>();

  2. In the header (.h) file, add a static member function for validParams in the class definition.

    class MyCustomObject : public AuxKernel
      static InputParameters validParams();

  3. In the source (.C) file, the definition of the template specialization,

      InputParameters params = validParams<AuxKernel>();
      return params;

    should be updated to define the static member function as follows. Be sure to update the call to the parent class validParams function to use the static version as well.

      InputParameters params = AuxKernel::validParams();
      return params;

ImageFunction Documentation

The ImageFunction documentation was moved from the old wiki!

Stochastic Tools Module

New "executable-only" applications on HPC clusters

A new way to gain access to internal INL codes is being rolled out in April. Internal and external licensed users will be able to login to INL computing resources and access MOOSE-based application binaries built natively for each cluster. This will make the build process unnecessary for many users and analysts who just wish to run our codes. More information on this capability will be made available shortly.

Bug Fixes

  • The modules Makefile had a missing dependency which occasionally caused corruption in the combined library file. This has been resolved.

  • Users using the new experimental Conda environment may have experienced some tests being skipped due to the odd compiler names Conda uses. This issue has been resolved.

Real distributed mesh generator

A distributed mesh generator was developed. The generator works by first creating a distributed graph in parallel to represent the element connectivities of the mesh we are going to create. And then it partitions the dual graph using the petsc partitioner into the desired number of equally-sized subgraphs. According to the graph partition, the underlying mesh elements are assigned to the corresponding MPI ranks, where each MPI rank builds only the elements that need to be on that MPI rank. Finally, the ghosted elements are added to the right places using parallel pull and push.