18 InputParameters params = validParams<GeneralUserObject>();
19 params.addClassDescription(
"Userobject for masking/pinning grains and making forces and torques "
20 "acting on that grain zero");
21 params.addParam<UserObjectName>(
"grain_force",
22 "userobject for getting force and torque acting on grains");
23 params.addParam<std::vector<unsigned int>>(
"pinned_grains",
"Grain numbers for pinned grains");
29 GeneralUserObject(parameters),
31 _grain_forces_input(_grain_force_torque_input.getForceValues()),
32 _grain_torques_input(_grain_force_torque_input.getTorqueValues()),
33 _grain_force_c_jacobians_input(_grain_force_torque_input.getForceCJacobians()),
34 _grain_force_eta_jacobians_input(_grain_force_torque_input.getForceEtaJacobians()),
35 _pinned_grains(getParam<std::vector<unsigned int>>(
"pinned_grains")),
36 _num_pinned_grains(_pinned_grains.size()),
37 _grain_num(_grain_forces_input.size()),
38 _force_values(_grain_num),
39 _torque_values(_grain_num)
64 if (_fe_problem.currentlyComputingJacobian())
66 unsigned int total_dofs = _subproblem.es().n_dofs();
70 for (
unsigned int j = 0; j < total_dofs; ++j)
102 for (
unsigned int k = 0; k < total_dofs; ++k)
133 const std::vector<RealGradient> &
139 const std::vector<RealGradient> &
145 const std::vector<Real> &
151 const std::vector<std::vector<Real>> &