Grain Growth Model

Grain boundaries (GBs) migrate to reduce the total free energy of the system. Various sources of free energy drive the GB migration, including stored defect energy, deformation energy, and GB energy. Various modeling approaches have been applied to model grain boundary migration, though the phase field method has emerged for one of the more popular. While all of the various models predict similar behavior, the phase-field method has emerged as the most popular due to its flexibility and computational efficiency.

The grain growth model implemented in MARMOT is from Moelans et al. Moelans et al. (2008). In the model, each grain is represented by a continuous order parameter equal to one within the grain and zero in all other grains. The free energy for this problem is

The evolution of each grain's order parameter is defined with the Allen-Cahn equation. Specific for the grain growth model, a local energy kernel called ACGrGrPoly was created, in which

The code in the kernels takes the form:

  SumEtaj += (*_vals[i])[_qp]*(*_vals[i])[_qp];
  return _mu[_qp]*(_u[_qp]*_u[_qp]*_u[_qp] - _u[_qp] + 2.0*_gamma*_u[_qp]*SumEtaj);

where _u[_qp] stores the current order parameter value and _vals[i][_qp] stores the values of . Since this equation takes the same form for each order parameter, only one kernel was created and reused for each order parameter.

The model parameters , and are defined in terms of the grain boundary (GB) surface energy , the diffuse GB width and the GB mobility . These expressions are coded in various MOOSE materials for various types of physical materials. The most generic form of the equations is in the material GBEvolution.

The grain growth model can have an arbitrary number of variables, depending on the number of grains that will be represented. The residual equation used to solve for the value of each order parameter at a specific time is divided into parts and implemented in separate kernels.

The default input file for MOOSE, in which each variable and the three kernels needed for each variable are added individually, would be very cumbersome for such a system. Therefore, we have created a custom input file syntax that automates the creation of the various order parameters and their kernels. This was created with the Action system within MOOSE, and the most basic action that creates grain growth variables and kernels is GrainGrowthAction. Given the number of order parameters (n_crys) and some base name to which the numbers will be appended (var_name_base), each variable is created, e.g. if var_name_base = gr and n_crys = 3, then the variables gr0, gr1 and gr2 will be created.

The initial conditions (ICs) for the polycrystal models are created using the ICs block in the input file. Under the ICs block, there is an additional block called PolycrystalICs. Under this block, there are various options to create initial conditions for bicrystals, tricrystals and polycrystals. These options are shown in the Table, below.

Action namedescription
BicrystalBoundingBoxICTwo grains defined by a bounding box
BicrystalCircleGrainICCircle grain and matrix grain
Tricrystal2CircleGrainsICTwo circle grains and a matrix grain
PolycrystalHexGrainICn_grain grains in a hexagonal structure
PolycrystalColoringICn_grain grains using a plugin based tesselation (using user objects such as PolycrystalVoronoi)
PolycrystalRandomICRandomly seeds grain order parameters

An additional option is to reconstruct the microstructure from experimental data using the EBSD Reader system. Given data exported from EBSD software in our specific format, the initial grain structure can mimic the microstructure of the data.

With the above information, we are ready to run grain growth simulations. The first step is to verify the model predictions against analytical models of grain growth. Here, we derive the analytical model for two-grain configurations, a circular grain imbedded in a larger grain and a half loop grain imbedded in a larger grain. The grain boundary velocity is calculated according to where is the driving force. In our simple verification cases, the driving force depends only on the curvature of the grain boundary and can be written as where is the GB energy and is the radius of curvature. The change in area with time is equal to Thus, the area at any time can be calculated with where is the initial radius of the circular grain. Following the same approach for the half loop geometry gives the expression


  1. N. Moelans, B. Blanpain, and P. Wollants. Quantitative analysis of grain boundary properties in a generalized phase field model for grain growth in anisotropic systems. Physical Review B, 78(2):024113, Jul 2008. URL:, doi:10.1103/PhysRevB.78.024113.[BibTeX]