12#include "libmesh/quadrature.h"
21 "Global Strain UserObject to provide Residual and diagonal Jacobian entry");
22 params.
addParam<std::vector<Real>>(
"applied_stress_tensor",
23 "Vector of values defining the constant applied stress "
24 "to add, in order 11, 22, 33, 23, 13, 12");
25 params.
addParam<std::string>(
"base_name",
"Material properties base name");
26 params.
addCoupledVar(
"displacements",
"The name of the displacement variables");
35 _base_name(isParamValid(
"base_name") ? getParam<
std::string>(
"base_name") +
"_" :
""),
36 _dstress_dstrain(getMaterialProperty<
RankFourTensor>(_base_name +
"Jacobian_mult")),
37 _stress(getMaterialProperty<
RankTwoTensor>(_base_name +
"stress")),
38 _dim(_mesh.dimension()),
39 _disp_var(getFieldVars(
"displacements")),
42 for (
unsigned int dir = 0; dir <
_dim; ++dir)
46 for (
unsigned int i = 1; i <
_disp_var.size(); ++i)
48 mooseError(
"All the displacement components in a particular direction should have same "
54 getParam<std::vector<Real>>(
"applied_stress_tensor"));
71 for (
unsigned int _qp = 0; _qp <
_qrule->n_points(); _qp++)
92 std::vector<Real> residual(9);
93 std::vector<Real> jacobian(81);
101 std::copy(residual.begin(), residual.end(), &
_residual(0, 0));
102 std::copy(jacobian.begin(), jacobian.end(), &
_jacobian(0, 0, 0, 0));
117const VectorValue<bool> &
registerMooseObject("SolidMechanicsApp", GlobalStrainUserObject)
const ExecFlagType EXEC_LINEAR
static InputParameters validParams()
const QBase *const & _qrule
const MooseArray< Real > & _coord
const MooseArray< Real > & _JxW
This class provides interface for extracting the periodic directions, residual, and jacobian values f...
const MaterialProperty< RankTwoTensor > & _stress
The stress tensor.
static InputParameters validParams()
void initialize() override
const std::vector< const MooseVariableFieldBase * > _disp_var
Displacement variables.
const MaterialProperty< RankFourTensor > & _dstress_dstrain
virtual const RankFourTensor & getJacobian() const override
GlobalStrainUserObject(const InputParameters ¶meters)
RankTwoTensor _applied_stress_tensor
virtual const VectorValue< bool > & getPeriodicDirections() const override
VectorValue< bool > _periodic_dir
Variable numbers of the displacement variables.
virtual const RankTwoTensor & getResidual() const override
virtual void computeAdditionalStress()
Calculate additional applied stresses.
void threadJoin(const UserObject &uo) override
void mooseError(Args &&... args) const
const T & getParam(const std::string &name) const
bool isParamValid(const std::string &name) const
bool isTranslatedPeriodic(const unsigned int sys_num, const unsigned int var_num, const unsigned int component) const
void fillFromInputVector(const std::vector< T > &input, FillMethod fill_method=autodetect)