26 params.
addClassDescription(
"Balance of momentum for three-dimensional Cosserat media, notably in " 27 "a Cosserat layered elasticity model.");
31 "An integer corresponding to the direction the variable this " 32 "kernel acts in. (0 for x, 1 for y, 2 for z)");
34 "appended_property_name",
"",
"Name appended to material properties to make them unique");
37 params.
set<
bool>(
"use_displaced_mesh") =
false;
45 getParam<
std::string>(
"appended_property_name"))),
47 "Jacobian_mult" + getParam<
std::string>(
"appended_property_name"))),
48 _component(getParam<unsigned
int>(
"component")),
49 _nrots(coupledComponents(
"Cosserat_rotations")),
51 _ndisp(coupledComponents(
"displacements")),
55 mooseError(
"MomentBalancing: This Kernel is only defined for 3-dimensional simulations so 3 " 56 "Cosserat rotation variables are needed");
57 for (
unsigned i = 0; i <
_nrots; ++i)
61 mooseError(
"MomentBalancing: This Kernel is only defined for 3-dimensional simulations so 3 " 62 "displacement variables are needed");
63 for (
unsigned i = 0; i <
_ndisp; ++i)
68 mooseError(
"MomentBalancing: The variable for this Kernel must be equal to the Cosserat " 69 "rotation variable defined by the \"component\" and the \"Cosserat_rotations\" "
int eps(unsigned int i, unsigned int j)
virtual unsigned int coupled(const std::string &var_name, unsigned int comp=0) const
static InputParameters validParams()
std::vector< unsigned int > _disp_var
the moose variable numbers for the displacements
std::vector< unsigned int > _wc_var
the moose variable numbers for the Cosserat rotation degrees of freedom
unsigned int number() const
const MaterialProperty< RankTwoTensor > & _stress
the stress tensor (not the moment stress) at the quad-point.
const VariablePhiGradient & _grad_phi
const unsigned int _nrots
static constexpr std::size_t dim
This Kernel computes epsilon_ijk * stress_jk (sum over j and k) "i" is called _component in this clas...
const VariableTestValue & _test
const MaterialProperty< RankFourTensor > & _Jacobian_mult
d(stress tensor)/(d strain tensor) Here strain_ij = grad_j disp_i + epsilon_ijk * wc_k ...
virtual Real computeQpResidual()
const unsigned int _ndisp
virtual Real computeQpJacobian()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
static const std::string v
IntRange< T > make_range(T beg, T end)
void mooseError(Args &&... args) const
static InputParameters validParams()
static const std::complex< double > j(0, 1)
Complex number "j" (also known as "i")
const VariablePhiValue & _phi
MomentBalancing(const InputParameters ¶meters)
const unsigned int _component
The Kernel computes epsilon_{component j k}*stress_{j k}.
static const std::string k
void ErrorVector unsigned int
virtual Real computeQpOffDiagJacobian(unsigned int jvar)
registerMooseObject("SolidMechanicsApp", MomentBalancing)