12 #include "libmesh/quadrature.h"
18 const std::string &
name,
19 const InputParameters & parameters)
21 ScalarCoupleable(&solid_model),
22 _large_strain(solid_model.getParamTempl<bool>(
"large_strain")),
23 _grad_disp_x(coupledGradient(
"disp_x")),
24 _grad_disp_y(coupledGradient(
"disp_y")),
25 _have_strain_zz(isCoupled(
"strain_zz")),
26 _strain_zz(_have_strain_zz ? coupledValue(
"strain_zz") : _zero),
27 _have_scalar_strain_zz(isCoupledScalar(
"scalar_strain_zz")),
28 _scalar_strain_zz(_have_scalar_strain_zz ? coupledScalarValue(
"scalar_strain_zz") : _zero),
29 _volumetric_locking_correction(solid_model.getParamTempl<bool>(
"volumetric_locking_correction"))
32 mooseError(
"Must define only one of strain_zz or scalar_strain_zz");
51 strain_increment.
zz() = 0;
54 strain_increment.
yz() = 0;
55 strain_increment.
zx() = 0;
69 Real volumetric_strain = 0.0;
72 for (
unsigned int qp_loop = 0; qp_loop <
_solid_model.
qrule()->n_points(); ++qp_loop)
90 volumetric_strain += 0.5 *
94 volumetric_strain += 0.5 *
101 volumetric_strain /= volume;
104 Real trace = strain_increment.
trace();
105 strain_increment.
xx() += volumetric_strain - trace / dim;
106 strain_increment.
yy() += volumetric_strain - trace / dim;
107 strain_increment.
zz() += volumetric_strain - trace / dim;
110 total_strain_new = strain_increment;
112 strain_increment -= total_strain_old;
118 mooseAssert(F.n() == 3 && F.m() == 3,
"computeDefGrad requires 3x3 matrix");