14 #include "MooseVariable.h"
20 InputParameters params = validParams<NonlocalKernel>();
21 params.addClassDescription(
"Base class for adding rigid body motion to grains");
22 params.addRequiredCoupledVar(
"c",
"Concentration");
23 params.addRequiredCoupledVarWithAutoBuild(
24 "v",
"var_name_base",
"op_num",
"Array of coupled variable names");
25 params.addParam<std::string>(
"base_name",
26 "Optional parameter that allows the user to define "
27 "type of force density under consideration");
28 params.addParam<Real>(
29 "translation_constant", 500,
"constant value characterizing grain translation");
30 params.addParam<Real>(
"rotation_constant", 1.0,
"constant value characterizing grain rotation");
31 params.addRequiredParam<UserObjectName>(
32 "grain_force",
"UserObject for getting force and torque acting on grains");
33 params.addRequiredParam<UserObjectName>(
"grain_tracker_object",
34 "The FeatureFloodCount UserObject to get values from.");
35 params.addRequiredParam<VectorPostprocessorName>(
"grain_volumes",
36 "The feature volume VectorPostprocessorValue.");
41 : NonlocalKernel(parameters),
42 _var_dofs(_var.dofIndices()),
44 _c(coupledValue(
"c")),
45 _grad_c(coupledGradient(
"c")),
46 _c_dofs(getVar(
"c", 0)->dofIndices()),
47 _op_num(coupledComponents(
"v")),
51 _base_name(isParamValid(
"base_name") ? getParam<std::string>(
"base_name") +
"_" :
""),
53 _grain_forces(_grain_force_torque.getForceValues()),
54 _grain_torques(_grain_force_torque.getTorqueValues()),
55 _grain_force_c_jacobians(_grain_force_torque.getForceCJacobians()),
56 _grain_force_eta_jacobians(_grain_force_torque.getForceEtaJacobians()),
57 _mt(getParam<Real>(
"translation_constant")),
58 _mr(getParam<Real>(
"rotation_constant")),
60 _grain_volumes(getVectorPostprocessorValue(
"grain_volumes",
"feature_volumes"))
63 for (
unsigned int i = 0; i <
_op_num; ++i)
65 _vals[i] = &coupledValue(
"v", i);