https://mooseframework.inl.gov
GrainRigidBodyMotionBase.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://mooseframework.inl.gov
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 
12 // MOOSE includes
13 #include "GrainTrackerInterface.h"
14 #include "MooseVariable.h"
15 
18 {
20  params.addClassDescription("Base class for adding rigid body motion to grains");
21  params.addRequiredCoupledVar("c", "Concentration");
23  "v", "var_name_base", "op_num", "Array of coupled variable names");
24  params.addParam<std::string>("base_name",
25  "Optional parameter that allows the user to define "
26  "type of force density under consideration");
27  params.addParam<Real>(
28  "translation_constant", 500, "constant value characterizing grain translation");
29  params.addParam<Real>("rotation_constant", 1.0, "constant value characterizing grain rotation");
30  params.addRequiredParam<UserObjectName>(
31  "grain_force", "UserObject for getting force and torque acting on grains");
32  params.addRequiredParam<UserObjectName>("grain_tracker_object",
33  "The FeatureFloodCount UserObject to get values from.");
34  params.addRequiredParam<VectorPostprocessorName>("grain_volumes",
35  "The feature volume VectorPostprocessorValue.");
36  return params;
37 }
38 
40  : NonlocalKernel(parameters),
41  _var_dofs(_var.dofIndices()),
42  _c_var(coupled("c")),
43  _c(coupledValue("c")),
44  _grad_c(coupledGradient("c")),
45  _c_dofs(getVar("c", 0)->dofIndices()),
46  _op_num(coupledComponents("v")),
47  _vals(coupledValues("v")),
48  _vals_var(coupledIndices("v")),
49  _grad_vals(coupledGradients("v")),
50  _base_name(isParamValid("base_name") ? getParam<std::string>("base_name") + "_" : ""),
51  _grain_force_torque(getUserObject<GrainForceAndTorqueInterface>("grain_force")),
52  _grain_forces(_grain_force_torque.getForceValues()),
53  _grain_torques(_grain_force_torque.getTorqueValues()),
54  _grain_force_c_jacobians(_grain_force_torque.getForceCJacobians()),
55  _grain_force_eta_jacobians(_grain_force_torque.getForceEtaJacobians()),
56  _mt(getParam<Real>("translation_constant")),
57  _mr(getParam<Real>("rotation_constant")),
58  _grain_tracker(getUserObject<GrainTrackerInterface>("grain_tracker_object")),
59  _grain_volumes(getVectorPostprocessorValue("grain_volumes", "feature_volumes"))
60 {
61 }
62 
63 void
65 {
67 }
68 
69 bool
71 {
74  return false;
75 
76  return true;
77 }
78 
79 void
81 {
83 }
84 
85 void
87 {
89 }
90 
91 void
93 {
95 }
virtual void precalculateOffDiagJacobian(unsigned int jvar)
GrainRigidBodyMotionBase(const InputParameters &parameters)
This class defines the interface for the GrainTracking objects.
static InputParameters validParams()
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
This class provides interface for extracting the forces and torques computed in other UserObjects...
std::size_t n_dofs() const
void addRequiredParam(const std::string &name, const std::string &doc_string)
virtual libMesh::EquationSystems & es()=0
static InputParameters validParams()
SubProblem & _subproblem
virtual bool globalDoFEnabled(MooseVariableFEBase &, dof_id_type)
unsigned int _total_dofs
get the total no. of dofs in the system
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void addRequiredCoupledVarWithAutoBuild(const std::string &name, const std::string &base_name, const std::string &num_name, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
uint8_t dof_id_type