15 #include "MooseVariableScalar.h"
16 #include "SystemBase.h"
17 #include "RankTwoTensor.h"
18 #include "RankFourTensor.h"
28 params.addClassDescription(
"Scalar Kernel to solve for the global strain");
29 params.addRequiredParam<UserObjectName>(
"global_strain_uo",
30 "The name of the GlobalStrainUserObject");
36 : ScalarKernel(parameters),
38 _pst_residual(_pst.getResidual()),
39 _pst_jacobian(_pst.getJacobian()),
40 _periodic_dir(_pst.getPeriodicDirections()),
41 _components(_var.order()),
42 _dim(_mesh.dimension())
44 if ((
_dim == 1 && _var.order() != FIRST) || (
_dim == 2 && _var.order() != THIRD) ||
45 (
_dim == 3 && _var.order() != SIXTH))
46 mooseError(
"PerdiodicStrain ScalarKernel is only compatible with scalar variables of order "
47 "FIRST in 1D, THIRD in 2D, and SIXTH in 3D. Please change the order of the scalar"
48 "variable according to the mesh dimension.");
56 DenseVector<Number> & re = _assembly.residualBlock(_var.number());
57 for (_i = 0; _i < re.size(); ++_i)
67 DenseMatrix<Number> & ke = _assembly.jacobianBlock(_var.number(), _var.number());
68 for (_i = 0; _i < ke.m(); ++_i)
69 for (_j = 0; _j < ke.m(); ++_j)
117 mooseError(
"PerdiodicStrain ScalarKernel is only compatible with FIRST, THIRD, and SIXTH "
118 "order scalar variables.");