MOOSE Newsletter (September 2024)

MOOSE Improvements

Exit Code Management

The ability was added to allow an application to set its exit code, which can be seen in MooseApp::setExitCode(). This feature was added in order to better support instances in which you want to run an external process within an application, as the proper return code from the external process can be captured and returned via your application.

In order for an application properly return this exit code, a modification is needed within the main function. To do this, modify the main() function in src/main.C to look like the following:


int
main(int argc, char * argv[])
{
  return Moose::main<YourApp>(argc, argv);
}

where YourApp is the class for your application.

This change should be made as soon as possible as the logic that was changed here impacts the application command line options --run and --copy-inputs used for executing installed MOOSE applications.

Deployment of the ActionComponents system

ActionComponents were introduced to MOOSE. They are derived from the Action class and are tasked with building the geometrical definition of a system. They can be specialized to a given Physics and discretization, or they can be set to instantiate any Physics onto their domain.

The main difference with the Thermal Hydraulics module Components is that ActionComponents are derived from an Action base class and therefore can follow the traditional task-based simulation setup, while Components are derived from MooseObject and require inter-component dependency resolution for the simulation setup. Other differences include the possibility to use MeshGenerators in tandem with ActionComponents.

MOOSE Modules Changes

Release of the fluid properties external submodules

Fluid properties submodules for air, carbon dioxide, helium, nitrogen, sodium and potassium, including both single phase and two phase properties, were added to MOOSE. They are optional submodules, and they can be downloaded using the command below. Once downloaded, an application must use the fluid properties module to be able to use these properties.


cd ~/projects/moose
git submodule update --init --checkout modules/fluid_properties/contrib/<submodule of interest>

Physics for k-epsilon turbulence

Navier Stokes Turbulence / WCNSFVTurbulencePhysics was added to the Navier Stokes module. It facilitates the setup of the k-epsilon equations in a Navier Stokes flow simulation with the weakly compressible finite volume discretization. It is currently only available for the Newton solver. Performance is limited for larger problems. A similar Physics should be created for the high performance linear finite volume segregated solver in the next fiscal year.

Specific internal energy added to Solid Properties objects

The ThermalSolidProperties objects from the Solid properties module now provide interfaces to compute the specific internal energy as a function of temperature. This new interface is useful, for example, in measuring the internal energy in solids for energy conservation verification.

Bug Fixes and Minor Enhancements

  • Linking warnings due to visibility settings differences at compile-time of various templates were resolved by using template instantiation declaration in the affected headers.

  • The framework folders are now all built using the folder unity technique which speeds up the compilation. As a reminder, unity builds can be disabled by setting export MOOSE_UNITY=false to reduce memory use during compilation.

  • The execute_on parameter was removed from Function objects, as they are generally never executed on an execution schedule but rather computed on-the-fly on every call.

  • The ProjectionAux specifically checks for mixed order projections to avoid double-counting nodes present in both lower and higher dimensional blocks

  • The QuadraturePointsPositions object was added to output quadrature points from elements in either the mesh or subdomains of the mesh to JSON. They can also be used to create MultiApps, as in the QuadraturePointMultiApp

  • A new MOOSE container is available for profiling purposes using Google's gpertools and pprof software.