www.mooseframework.org
ConstantGrainForceAndTorque.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
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 
13 
14 template <>
15 InputParameters
17 {
18  InputParameters params = validParams<GeneralUserObject>();
19  params.addClassDescription("Userobject for calculating force and torque acting on a grain");
20  params.addParam<std::vector<Real>>("force", "force acting on grains");
21  params.addParam<std::vector<Real>>("torque", "torque acting on grains");
22  return params;
23 }
24 
27  GeneralUserObject(parameters),
28  _F(getParam<std::vector<Real>>("force")),
29  _M(getParam<std::vector<Real>>("torque")),
30  _grain_num(_F.size() / 3),
31  _ncomp(6 * _grain_num),
32  _force_values(_grain_num),
33  _torque_values(_grain_num)
34 {
35 }
36 
37 void
39 {
40  unsigned int total_dofs = _subproblem.es().n_dofs();
41  for (unsigned int i = 0; i < _grain_num; ++i)
42  {
43  _force_values[i](0) = _F[3 * i + 0];
44  _force_values[i](1) = _F[3 * i + 1];
45  _force_values[i](2) = _F[3 * i + 2];
46  _torque_values[i](0) = _M[3 * i + 0];
47  _torque_values[i](1) = _M[3 * i + 1];
48  _torque_values[i](2) = _M[3 * i + 2];
49  }
50 
51  if (_fe_problem.currentlyComputingJacobian())
52  {
53  _c_jacobians.assign(6 * _grain_num * total_dofs, 0.0);
54  _eta_jacobians.resize(_grain_num);
55  for (unsigned int i = 0; i < _grain_num; ++i)
56  _eta_jacobians[i].assign(6 * _grain_num * total_dofs, 0.0);
57  }
58 }
59 
60 const std::vector<RealGradient> &
62 {
63  return _force_values;
64 }
65 
66 const std::vector<RealGradient> &
68 {
69  return _torque_values;
70 }
71 
72 const std::vector<Real> &
74 {
75  return _c_jacobians;
76 }
77 
78 const std::vector<std::vector<Real>> &
80 {
81  return _eta_jacobians;
82 }
ConstantGrainForceAndTorque::_F
std::vector< Real > _F
Applied force on particles, size should be 3 times no. of grains.
Definition: ConstantGrainForceAndTorque.h:40
ConstantGrainForceAndTorque::getTorqueValues
virtual const std::vector< RealGradient > & getTorqueValues() const
Definition: ConstantGrainForceAndTorque.C:67
ConstantGrainForceAndTorque
This class is here to get the force and torque acting on a grain.
Definition: ConstantGrainForceAndTorque.h:24
ConstantGrainForceAndTorque::getForceCJacobians
virtual const std::vector< Real > & getForceCJacobians() const
Definition: ConstantGrainForceAndTorque.C:73
ConstantGrainForceAndTorque::_torque_values
std::vector< RealGradient > _torque_values
Definition: ConstantGrainForceAndTorque.h:49
ConstantGrainForceAndTorque::_c_jacobians
std::vector< Real > _c_jacobians
Definition: ConstantGrainForceAndTorque.h:50
ConstantGrainForceAndTorque::ConstantGrainForceAndTorque
ConstantGrainForceAndTorque(const InputParameters &parameters)
Definition: ConstantGrainForceAndTorque.C:25
validParams< ConstantGrainForceAndTorque >
InputParameters validParams< ConstantGrainForceAndTorque >()
Definition: ConstantGrainForceAndTorque.C:16
ConstantGrainForceAndTorque::getForceEtaJacobians
virtual const std::vector< std::vector< Real > > & getForceEtaJacobians() const
Definition: ConstantGrainForceAndTorque.C:79
ConstantGrainForceAndTorque::getForceValues
virtual const std::vector< RealGradient > & getForceValues() const
Definition: ConstantGrainForceAndTorque.C:61
ConstantGrainForceAndTorque::_grain_num
unsigned int _grain_num
Definition: ConstantGrainForceAndTorque.h:44
ConstantGrainForceAndTorque::_eta_jacobians
std::vector< std::vector< Real > > _eta_jacobians
Definition: ConstantGrainForceAndTorque.h:51
ConstantGrainForceAndTorque::_force_values
std::vector< RealGradient > _force_values
providing grain forces, torques and their jacobians w. r. t c
Definition: ConstantGrainForceAndTorque.h:48
ConstantGrainForceAndTorque.h
registerMooseObject
registerMooseObject("PhaseFieldApp", ConstantGrainForceAndTorque)
ConstantGrainForceAndTorque::initialize
virtual void initialize()
Definition: ConstantGrainForceAndTorque.C:38
GrainForceAndTorqueInterface
This class provides interface for extracting the forces and torques computed in other UserObjects.
Definition: GrainForceAndTorqueInterface.h:24
ConstantGrainForceAndTorque::_M
std::vector< Real > _M
Applied torque on particles, size should be 3 times no. of grains.
Definition: ConstantGrainForceAndTorque.h:42