# MOOSE (software)

MOOSE (Multiphysics Object Oriented Simulation Environment) is an object-oriented C++ finite element framework for the development of tightly coupled multiphysics solvers from Idaho National Laboratory. MOOSE makes use of the PETSc non-linear solver package and libmesh to provide the finite element discretization.
A key design aspect of MOOSE is the decomposition of weak form residual equations into separate terms that are each represented by compute kernels. The combination of these kernels into complete residuals describing the problem to be solved is performed at run time. This allows modifications such as toggling of mechanisms and the addition of new physics without recompilation. MOOSE comes with an extensive library of kernels providing residual terms for solid mechanics, Navier–Stokes equations, phase-field models and more.
MOOSE uses VTK for visualisation.

## Background

The development of MOOSE at Idaho National Laboratory (INL) since May 2008, has resulted in a unique approach to computational engineering that combines computer science with a strong underlying mathematical description in a unique way that allows scientists and engineers to develop engineering simulation tools in a fraction of the time previously required. The heart of MOOSE is the Kernel. A Kernel is a "piece" of physics. To add new physics to an application built using MOOSE, all that is required is to supply a new Kernel that describes the discrete form of the equation. It's usually convenient to think of a Kernel as a mathematical operator, such as a Laplacian or a convection term in a partial differential equation (PDE). Kernels may be swapped or coupled together to achieve different application goals. These Kernels, which now number in the hundreds, allow a scientist or engineer to develop an application rapidly.
For a new application, existing Kernels are selected as-is, or modified as necessary, and "plugged" in. An advection-diffusion-reaction equation is of the same mathematical form no matter what application it is being used for. Typically, only the form of the coefficients or the dependencies on other physics need to be defined; rarely must complete Kernels be constructed from scratch. With MOOSE, only the Kernel development is required from the scientist or engineer (application developer). MOOSE is designed to do everything else for the application developer, such as finite element discretization of the PDEs, the nonlinear solver, and the parallel high performance computing.
The idea of naming MOOSE-based applications after Idaho indigenous animal species is loosely based on Los Alamos National Laboratory's 1970s – 1990s approach to naming their codes after Native American tribes and artifacts, such as APACHE, CONCHAS, and the KIVA series of codes. There are now over twenty MOOSE-based application animals in various stages of development, ranging from recently obtaining preliminary results to being nationally recognized as state-of-the-art efforts (such as BISON and MARMOT for fuels performance modeling & simulation activities).

## Description

MOOSE is a development and run-time environment for the solution of multi-physics systems that involve multiple physical models or multiple simultaneous physical phenomena. The systems are generally represented (modeled) as a system of fully coupled nonlinear partial differential equation systems (an example of a multi-physics system is the thermal feedback effect upon neutronics cross-sections where the cross-sections are a function of the heat transfer). Inside MOOSE, the Jacobian-Free Newton Krylov (JFNK) method is implemented as a parallel nonlinear solver that naturally supports effective coupling between physics equation systems (or Kernels). The physics Kernels are designed to contribute to the nonlinear residual, which is then minimized inside of MOOSE. MOOSE provides a comprehensive set of finite element support capabilities (libMesh) and provides for mesh adaptation and parallel execution. The framework heavily leverages software libraries from the Department of Energy (DOE) and the National Nuclear Security Administration (NNSA), such as the nonlinear solver capabilities in either the Portable, Extensible Toolkit for Scientific Computation (PETSc) project or the Trilinos project.

### ELK (Extended Library of Kernels)

ELK is a library for common Kernels, boundary conditions and material base classes.

### YAK (Yet Another Kernel)

YAK is a library of common actions, Kernels, boundary conditions, and material base classes for radiation transport applications. YAK is currently linked with RattleSnake (multi-group radiation Sn transport), Pronghorn (multi-group diffusion), and Critter (multi-length scale temperature feedback).

## Applications
### BISON

BISON was the first MOOSE-based application "animal," and is a finite element-based nuclear fuel performance code applicable to a variety of fuel forms including light water reactor fuel rods, TRISO fuel particles, and metallic rod and plate fuel. It solves the fully coupled equations of thermomechanics and species diffusion and includes important fuel physics such as fission gas release and material property degradation with burnup. BISON is based on the MOOSE framework and can therefore efficiently solve problems on either two-dimensional axisymmetric or three-dimensional geometries using standard workstations or large high performance computers. Plasticity, irradiation growth, and thermal and irradiation creep models are implemented for clad materials. Models are also available to simulate gap heat transfer, mechanical contact, and the evolution of the gap/plenum pressure with plenum volume, gas temperature, and fission gas addition. BISON is also coupled to a MOOSE-based mesoscale phase field material property simulation capability.

### MARMOT

MARMOT is a finite element-based phase field code for modeling irradiation-induced microstructure evolution. MARMOT predicts the effect of radiation damage on microstructure evolution, including void nucleation and growth, bubble growth, grain boundary migration, and gas diffusion and segregation. The phase field equations can be coupled with heat conduction and solid mechanics from ELK to consider the effect of temperature and stress gradients on the evolution. In addition, MARMOT calculates the effect of the microstructure evolution on various bulk material properties, including thermal conductivity and porosity. Once the bulk properties have been calculated, they can be passed to BISON for a fuel performance simulation. This coupling between MARMOT and BISON has been achieved in the hybrid code BARMOT.

### FALCON

FALCON is being developed to enable simulation of the tightly coupled fluid-rock behavior in hydrothermal and engineered geothermal system (EGS) reservoirs, targeting the dynamics of fracture stimulation, fluid flow, rock deformation, and heat transport in a single integrated code, with the ultimate goal of providing a tool that can be used to test the viability of EGS in the United States and worldwide. Reliable reservoir performance predictions of EGS systems require accurate and robust modeling for the coupled thermal-hydrological-mechanical processes. Conventionally, these types of problems are solved using operator splitting methods, usually by coupling a subsurface flow and heat transport simulator with a solid mechanics simulator via input files. FALCON eliminates the need for using operator splitting methods to simulate these systems, and the scalability of MOOSE supported applications allows for simulating these tightly coupled processes at the reservoir scale, allowing for examination of the system as a whole (something the operator splitting methodologies generally cannot do).

### RAT

ReActive Transport (RAT) has been developed to solve reactive transport problems in subsurface porous media that involves highly nonlinearly coupled physical processes of fluid flow, solute transport, biogeochemical reactions and media-solution interactions. These problems are common in various subsurface-engineered systems, such as engineered environmental remediation, enhanced geothermal systems and carbon dioxide geological sequestration. Currently, the physics that could be coupled in RAT include: single-phase fluid flow in porous media, advection, dispersion and diffusion transport, aqueous kinetic reaction, aqueous equilibrium reaction, kinetic mineral precipitation/dissolution reaction, and Carmen-Kozeny porosity-permeability relationship.
This software is not to be confused with the Reactor Analysis Tool (RAT) which is a toolkit based on ROOT and GEANT4 for microphysical simulations of scintillation detectors used in neutrino and dark matter experiments including Braidwood, SNO+, and DEAP-3600.

### RELAP-7

RELAP-7 is the next-generation tool in the RELAP safety/systems analysis application series and is based upon the MOOSE development and runtime environment framework. RELAP-7 will retain and improve the basic analysis capability of RELAP5. The four major improvements are 1) A well-posed seven-equation two-phase flow model (liquid, gas, and interface pressures) versus the obsolete ill-posed six-equation flow model (non-physical mixture sound speed) found in RELAP5; 2) Improved numerical approximations resulting in second-order accuracy in both space and time versus the first order approximations in RELAP5; 3) Implicit tightly coupled time integration for long duration transients, such as providing plant behavior for full life fuel cycle evaluations; and 4) the ability to easily couple to multi-dimensional core simulators being developed in other programs (NEAMS, CASL, ATR LEP).

### Pronghorn

Pronghorn was originally developed for simulation of the gas-cooled pebble-bed VHTR concept. The current capabilities of Pronghorn include transient and steady coupled porous fluid flow and solid-state heat conduction with a standard multi-group diffusion model (i.e., fixed-source, criticality, and time-dependent). Recently added capabilities include a nonlinear acceleration scheme for criticality problems and a simple thermal-fluid model for the prismatic reactor concept. Future capabilities will include a more advanced multi-phase flow type of model (to study thermal boundary layer effects) and a radiation transport model. The physics can be solved in three-dimensional Cartesian (x, y, z) or cylindrical (r, q, z) space, with precursor and adiabatic thermal feedback models. This code has been validated against the PBMR400 benchmark problem. Using Pronghorn, rod ejection simulations have been conducted for thermal-fluids/neutronics for both pebble-bed and prismatic gas-cooled reactors and simple thermal-neutronics coupled LWR benchmark problems.

## Features

* Fully coupled, fully implicit multiphysics solver
* Dimension independent physics
* Automatically parallel (largest runs >100,000 CPU cores)
* Modular development simplifies code reuse
* Built-in mesh adaptivity
* Continuous and Discontinuous Galerkin (DG) (at the same time)
* Forward-mode automatic differentiation for Jacobian matrix computation
* Intuitive parallel multiscale solves (see videos below)
* Dimension agnostic, parallel geometric search (for contact related applications)
* Flexible, pluggable graphical user interface
* ~30 pluggable interfaces allow specialization of every part of the solve