https://mooseframework.inl.gov
Loading...
Searching...
No Matches
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
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
63void
68
69bool
71{
74 return false;
75
76 return true;
77}
78
79void
84
85void
90
91void
This class provides interface for extracting the forces and torques computed in other UserObjects.
GrainRigidBodyMotionBase(const InputParameters &parameters)
virtual void precalculateOffDiagJacobian(unsigned int jvar)
static InputParameters validParams()
virtual bool globalDoFEnabled(MooseVariableFEBase &, dof_id_type)
unsigned int _total_dofs
get the total no. of dofs in the system
This class defines the interface for the GrainTracking objects.
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
void addRequiredCoupledVarWithAutoBuild(const std::string &name, const std::string &base_name, const std::string &num_name, const std::string &doc_string)
static InputParameters validParams()
SubProblem & _subproblem
virtual libMesh::EquationSystems & es()=0
std::size_t n_dofs() const