Examples and Tutorials
This page includes various demonstrations intended to introduce the basics of MOOSE for creating custom applications to solve unique and challenging multiphysics problems. Each example or tutorial focuses on different aspects of MOOSE, primarily the fundamental systems that are available to solve multiphysics problems.
Before proceeding, please visit the Install MOOSE page and the New Users page. It is assumed that the reader has a minimial understanding in computer programming with C++.
Examples
The MOOSE repository has a directory named examples
with several subdirectories. Each subdirectory has code for a MOOSE-based application and input file(s) for running simulations. Each example can be used by running a binary that is first compiled by running make
in the applicable subdirectory. The resulting application binary (named e.g. ex01-opt
) is used to run input files. A guide explaining what each example demonstrates and how to use it is provided here:
Module Use Examples
Example problems are provided for some of the individual Physics Modules. A comprehensive list of all that are available is given below. Simply expand the example set under a module header and follow their links.
Geochemistry
Reconstructed Discontinuous Galerkin
Parameter Studies, Statistics, and Sensitivity Analysis:
Example 1: Monte Carlo Example
Example 2: Parameter Study
Example 4: SOBOL Sensitivity Analysis
Surrogate Models:
Example 5: Creating a Surrogate Model
Example 6: Training a Surrogate Model
Example 7: Evaluating a Surrogate Model
Example 8: Polynomial Chaos Surrogate
Example 9: Polynomial Regression Surrogate
Example 10: POD Reduced Basis Surrogate
Example 11: Comparison of surrogates using a time-dependent problem
Example 12: Gaussian Process Surrogate
Stochastic Tools
The following example combines the Heat Conduction, Tensor Mechanics, and Stochastic Tools modules and demonstrates one of the core purposes of MOOSE—solving multiphysics problems: Using Stochastic Tools with Multiphysics Models
Tutorials
Tutorial 1: Application Development
Learn how to develop a MOOSE-based application to solve coupled systems of differential equations in a multiphysics setting. This tutorial teaches you how to create custom MOOSE objects, setup input files to invoke these objects, and how to process and visualize the results of your simulations.
Tutorial 2: MultiApp Demonstration
Learn how to use the Multiapp and Transfer systems to couple many multiphysics applications together across differing time or length scales.
Tutorial 3: Code Verification
Demonstrate the use of analytical solutions and the Method of Manufactured Solutions (MMS) for code verification.
Porous Flow Tutorial
This tutorial guides the user through some commonly-used aspects of the Porous Flow module. It concerns fluid injection through a borehole into a large fluid-filled reservoir. The tutorial begins with simple Darcy flow, and gradually adds more complex phenomena such as coupling with heat and solid mechanics, multi-phase flows and chemical reactions.
Workshops
The MOOSE development team at INL occasionally hosts live training. Registration is typically open for all who wish to attend, although space is usually limited. Below are links to the training presentation, a recent video recording of the training, and other targeted more advanced workshop presentations.
MOOSE training events will typically be announced on the home page, but be sure to join the mailing list for further updates!
Isogeometric Analysis
C++ Programming References
MOOSE developers need only a basic understanding of computer programming with C++ to get started. If possible, it may be helpful to review the following resources:
Bjarne Stroustrup (2013). The C++ Programming Language, 4th Edition.
Brian Kernighan & Dennis Ritchie (1988). The C Programming Language, 2nd Edition.
Besides checking out the references that are listed above, a strong and clear Google search can go a long way. Remember that you can always find help from our Community.