15 #include "SystemBase.h"
16 #include "RankTwoTensor.h"
26 params.addClassDescription(
27 "AuxKernel to visualize the displacements generated by the global strain tensor");
28 params.addCoupledVar(
"scalar_global_strain",
29 "Scalar variable providing global strain components");
30 params.addCoupledVar(
"displacements",
"The name of the displacement variables");
31 params.addRequiredParam<
unsigned int>(
"component",
32 "The displacement component to consider for this kernel");
33 params.addParam<
bool>(
34 "output_global_displacement",
false,
"Option to output global displacement only");
35 params.addRequiredParam<UserObjectName>(
"global_strain_uo",
36 "The name of the GlobalStrainUserObject");
37 params.addParam<Point>(
"reference_point",
39 "The coordinate of the center/fixed point of the simulation");
43 params.set<ExecFlagEnum>(
"execute_on") = EXEC_PRE_DISPLACE;
49 : AuxKernel(parameters),
50 _scalar_global_strain(coupledScalarValue(
"scalar_global_strain")),
51 _component(getParam<unsigned int>(
"component")),
52 _output_global_disp(getParam<bool>(
"output_global_displacement")),
54 _periodic_dir(_pst.getPeriodicDirections()),
55 _ref_point(parameters.get<Point>(
"reference_point")),
56 _dim(_mesh.dimension()),
57 _ndisp(coupledComponents(
"displacements")),
61 paramError(
"variable",
"GlobalDisplacementAux must be used on a nodal auxiliary variable");
64 paramError(
"component",
67 " does not exist for ",
69 " dimensional problems");
71 for (
unsigned int i = 0; i <
_ndisp; ++i)
72 _disp[i] = &coupledValue(
"displacements", i);
81 for (
unsigned int dir = 0; dir <
_dim; ++dir)
83 for (
unsigned int var = 0; var <
_ndisp; ++var)
84 strain(dir, var) = 0.0;
86 const RealVectorValue & global_disp = strain * ((*_current_node) -
_ref_point);