Getting Started with Moose for the Phase Field Method
These instructions guide you through the initial steps of using MOOSE to solve the phase field method. It references other content on [mooseframework.org](mooseframework.org), but is specific to the general way that fits best to phase field model development.
Follow the instructions on the [Getting Started](http://mooseframework.org/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](https://mooseframework.org/static/media/uploads/docs/moose_github.pdf).
2. Go to a terminal.
3. ```$ cd ~/projects```
4. ``` $ git clone email@example.com:username/moose.git```
5. ```$ cd moose```
6. ```$ git config user.name "Your Name"```
7. ```$ git config user.email your firstname.lastname@example.org```
8. Add a remote for the upstream MOOSE repository
```$ git remote add upstream email@example.com:idaholab/moose.git```
Now, continue on with step 3 from the [Getting Started](http://mooseframework.org/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](http://mooseframework.org/wiki/PhysicsModules/PhaseField/DevelopingModels) page. In addition, we recommend the follow papers as a good place to start
- [Phase Field Models for Microstructure Evolution](http://www.ems.psu.edu/~lqc3/publications/LQChen2002AnnuRevMaterRes.pdf)
- [An introduction to phase-field modeling of microstructure evolution](http://www.sciencedirect.com/science/article/pii/S0364591607000880)
- [An object-oriented finite element framework for multiphysics phase field simulations](http://www.sciencedirect.com/science/article/pii/S0927025611004204)
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](http://mooseframework.org/wiki/PhysicsModules/PhaseField/DevelopingModels/ParsedFunctionKernels/).
The best way to get familiar with developing models using function parsing is with this tutorial:
- [Fe-Cr Phase Decomposition](http://mooseframework.org/wiki/MooseTutorials/IronChromiumDecomposition/) - Illustrates using parsed function kernels to create a two phase decomposition simulation
Also, you should become familiar with all of the documentation on the [phase field module wiki page](http://mooseframework.org/wiki/PhysicsModules/PhaseField)
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](http://mooseframework.org/wiki/).