GrainGrowthLinearizedInterfaceAction

Set up the variable and the kernels needed for a grain growth simulation with a linearized interface

Overview

This action creates the variables, kernels, auxvariables, auxkernels, bounds, and materials needed to implement a polycrystal simulation using a linearized interface. All of these various objects could be added manually in an input file, but the input file would be very long and would require many changes in order to change the number of order parameters being used to represent the grains. This action vastly simplifies the input file syntax and makes the syntax for a traditional phase field grain growth model and one using a linearized interface vey similar.

The required input parameter op_num defines how many order parameters will be generated. Each order parameter is named based on the op_name_base parameter and the transformed version is named based on the var_name_base parameter; e.g. for op_num = 3, op_name_base = gr, and var_name_base = phi, three variable are created as auxvariables (gr0, gr1, and gr2) and three transformed nonlinear variables (phi0, phi1, phi2).

The following objects are created:

Variables

  • One per variable, with a total of op_num

    • Transformed variable (var_name_base)

AuxVariables

  • bounds_dummy, used to save the bounds values

  • bnds, used to visualize grain boundaries

  • One per variable, with a total of op_num

    • Actual order parameter value (op_name_base)

Materials

Kernels

AuxKernels

Example Input File Syntax

The GrainGrowthLinearizedInterfaceAction is accessed through the Module block, as shown below.

[GlobalParams]
  bound_value = 5.0
[]
(moose/modules/phase_field/test/tests/grain_growth_w_linearized_interface/linearized_interface_action.i)
[Modules]
  [PhaseField]
    [GrainGrowthLinearizedInterface]
      op_num = 2
      var_name_base = phi
      op_name_base = gr
      mobility = L
      kappa = kappa_op
    []
  []
[]
(moose/modules/phase_field/test/tests/grain_growth_w_linearized_interface/linearized_interface_action.i)

Input Parameters

  • bound_valueBounds value used in the constrained solve, where limits are +/- bound_value

    C++ Type:double

    Controllable:No

    Description:Bounds value used in the constrained solve, where limits are +/- bound_value

  • op_name_basespecifies the base name of the dependent order parameters

    C++ Type:std::string

    Controllable:No

    Description:specifies the base name of the dependent order parameters

  • op_numspecifies the number of order parameters to create

    C++ Type:unsigned int

    Controllable:No

    Description:specifies the number of order parameters to create

  • var_name_basespecifies the base name of the variables

    C++ Type:std::string

    Controllable:No

    Description:specifies the base name of the variables

Required Parameters

  • active__all__ If specified only the blocks named will be visited and made active

    Default:__all__

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified only the blocks named will be visited and made active

  • blockBlock restriction for the variables and kernels

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:Block restriction for the variables and kernels

  • coupled_variablesVector of nonlinear variable arguments that L depends on

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:Vector of nonlinear variable arguments that L depends on

  • familyLAGRANGESpecifies the family of FE shape function to use for the order parameters

    Default:LAGRANGE

    C++ Type:MooseEnum

    Options:LAGRANGE, MONOMIAL, HERMITE, SCALAR, HIERARCHIC, CLOUGH, XYZ, SZABAB, BERNSTEIN, L2_LAGRANGE, L2_HIERARCHIC, NEDELEC_ONE, LAGRANGE_VEC, MONOMIAL_VEC, RAVIART_THOMAS, RATIONAL_BERNSTEIN, SIDE_HIERARCHIC, L2_HIERARCHIC_VEC, L2_LAGRANGE_VEC, L2_RAVIART_THOMAS

    Controllable:No

    Description:Specifies the family of FE shape function to use for the order parameters

  • inactiveIf specified blocks matching these identifiers will be skipped.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified blocks matching these identifiers will be skipped.

  • initial_from_fileFalseTake the initial condition of all polycrystal variables from the mesh file

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Take the initial condition of all polycrystal variables from the mesh file

  • kappakappa_opThe kappa used with the kernels

    Default:kappa_op

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:The kappa used with the kernels

  • mobilityLThe isotropic mobility used with the kernels

    Default:L

    C++ Type:MaterialPropertyName

    Controllable:No

    Description:The isotropic mobility used with the kernels

  • orderFIRSTSpecifies the order of the FE shape function to use for the order parameters

    Default:FIRST

    C++ Type:MooseEnum

    Options:CONSTANT, FIRST, SECOND, THIRD, FOURTH

    Controllable:No

    Description:Specifies the order of the FE shape function to use for the order parameters

  • use_automatic_differentiationFalseFlag to use automatic differentiation (AD) objects when possible

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Flag to use automatic differentiation (AD) objects when possible

  • variable_mobilityTrueThe mobility is a function of any MOOSE variable (if this is set to false, L must be constant over the entire domain!)

    Default:True

    C++ Type:bool

    Controllable:No

    Description:The mobility is a function of any MOOSE variable (if this is set to false, L must be constant over the entire domain!)

Optional Parameters

  • cName of coupled concentration variable

    C++ Type:VariableName

    Controllable:No

    Description:Name of coupled concentration variable

  • en_ratio1Ratio of surface to GB energy

    Default:1

    C++ Type:double

    Controllable:No

    Description:Ratio of surface to GB energy

  • ndef0Specifies the number of deformed grains to create

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:Specifies the number of deformed grains to create

Multiphysics Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • implicitTrueWhether kernels are implicit or not

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether kernels are implicit or not

  • scaling1Specifies a scaling factor to apply to the order parameters

    Default:1

    C++ Type:double

    Controllable:No

    Description:Specifies a scaling factor to apply to the order parameters

  • use_displaced_meshFalseWhether to use displaced mesh in the kernels

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to use displaced mesh in the kernels

Advanced Parameters