12 #include "Conversion.h"
13 #include "FEProblem.h"
21 InputParameters params = validParams<Action>();
22 params.addClassDescription(
23 "Set up ACGrGrPoly, ACInterface, TimeDerivative, and ACGBPoly kernels");
24 params.addRequiredParam<
unsigned int>(
25 "op_num",
"specifies the total number of grains (deformed + recrystallized) to create");
26 params.addRequiredParam<std::string>(
"var_name_base",
"specifies the base name of the variables");
27 params.addParam<VariableName>(
"c",
"Name of coupled concentration variable");
28 params.addParam<Real>(
"en_ratio", 1.0,
"Ratio of surface to GB energy");
29 params.addParam<
unsigned int>(
"ndef", 0,
"specifies the number of deformed grains to create");
30 params.addParam<
bool>(
"implicit",
true,
"Whether kernels are implicit or not");
31 params.addParam<
bool>(
32 "use_displaced_mesh",
false,
"Whether to use displaced mesh in the kernels");
33 params.addParam<
bool>(
"variable_mobility",
35 "The mobility is a function of any MOOSE variable (if "
36 "this is set to false, L must be constant over the "
38 params.addParam<std::vector<VariableName>>(
"args",
"Vector of variable arguments L depends on");
44 _op_num(getParam<unsigned int>(
"op_num")),
45 _var_name_base(getParam<std::string>(
"var_name_base"))
52 for (
unsigned int op = 0; op <
_op_num; ++op)
59 std::vector<VariableName> v;
63 for (
unsigned int j = 0; j <
_op_num; ++j)
72 InputParameters params = _factory.getValidParams(
"ACGrGrPoly");
73 params.set<NonlinearVariableName>(
"variable") = var_name;
74 params.set<std::vector<VariableName>>(
"v") = v;
75 params.applyParameters(parameters());
77 std::string kernel_name =
"ACBulk_" + var_name;
78 _problem->addKernel(
"ACGrGrPoly", kernel_name, params);
86 InputParameters params = _factory.getValidParams(
"ACInterface");
87 params.set<NonlinearVariableName>(
"variable") = var_name;
88 params.applyParameters(parameters());
90 std::string kernel_name =
"ACInt_" + var_name;
91 _problem->addKernel(
"ACInterface", kernel_name, params);
99 InputParameters params = _factory.getValidParams(
"TimeDerivative");
100 params.set<NonlinearVariableName>(
"variable") = var_name;
101 params.set<
bool>(
"implicit") =
true;
102 params.applyParameters(parameters());
104 std::string kernel_name =
"IE_" + var_name;
105 _problem->addKernel(
"TimeDerivative", kernel_name, params);
112 if (isParamValid(
"c"))
114 InputParameters params = _factory.getValidParams(
"ACGBPoly");
115 params.set<NonlinearVariableName>(
"variable") = var_name;
116 params.set<std::vector<VariableName>>(
"c") = {getParam<VariableName>(
"c")};
117 params.applyParameters(parameters());
119 std::string kernel_name =
"ACBubInteraction_" + var_name;
120 _problem->addKernel(
"ACGBPoly", kernel_name, params);