These instructions guide you through the initial steps of using MOOSE to solve the phase field method. It references other content on mooseframework.org, but is specific to the general way that fits best to phase field model development.

Getting Started

Follow the instructions on the Getting Started page, however we recommend you don't follow the step 2 instructions. We feel that most phase field developers will wish to contribute to the MOOSE phase field module, therefore the instructions are somewhat different:

2. Fork MOOSE and Clone Your Fork

  1. Fork MOOSE on Github.com following the MOOSE instructions.
  2. Go to a terminal.
  3. $ cd ~/projects
  4. $ git clone git@github.com:username/moose.git
  5. $ cd moose
  6. $ git config user.name "Your Name"
  7. $ git config user.email your email@inl.gov
  8. Add a remote for the upstream MOOSE repository
    $ git remote add upstream git@github.com:idaholab/moose.git

Now, continue on with step 3 from the Getting Started page.


Getting Familiar with the Phase Field Method

The phase field module is not a black box. You need to have some familiarity with the phase field method. We have some information at the Developing Phase Field Models page. In addition, we recommend the follow papers as a good place to start

There are many other excellent phase field papers that have been published, and they are all excellent ways to learn about various models and approaches to phase field.

Running Initial Phase Field Simulations with MOOSE

Many basic phase field models can be developed using the phase field module without any experience with writing code in MOOSE. More complicated models, initial conditions, etc. will always require coding. This is made possible using function parsing from the input file and automatic differentiation. More information about this, is given on the Function Parsing.

The best way to get familiar with developing models using function parsing is with this tutorial:

Also, you should become familiar with all of the documentation on the phase field module wiki page

Other Example Problems

Various example problems have been created to demonstrate different capabilities of the phase field module. These are found in moose/modules/phase_field/examples. The example problems are made to demonstrate real models on 2D problems. They are designed to run to completion on four processors in less than 5 minutes. They currently fall into six categories

  • Cahn-Hilliard - Functionality for solving the Cahn-Hilliard equation. Includes parsed and unparsed models.
  • Grain growth - Grain growth model available in the phase field module
  • Nucleation - New nucleation model that modifies the free energy to induce nucleation
  • EBSD reconstruction - Reconstructing initial conditions directly from EBSD data
  • Multiphase - Models that describe phase changes in multi-component systems
  • Rigid body motion - Including rigid body motion of particles in phase field models

Advanced Modeling with the Phase Field Module

As you do more modeling in MOOSE, you will want to write code to implement new capability. Such capability could be new initial conditions, new post processors for characterizing your simulations, or even new kernels to implement complicated models. MOOSE has been developed to greatly simplify the code writing process. There are various ways to become familiar with writing code in MOOSE, and they are summarized in the Developing Code section of the MOOSE wiki.