15 #include "MooseVariableScalar.h"
16 #include "SystemBase.h"
17 #include "ReferenceResidualProblem.h"
18 #include "InputParameters.h"
30 params.addClassDescription(
"Generalized Plane Strain Scalar Kernel");
31 params.addRequiredParam<UserObjectName>(
"generalized_plane_strain",
32 "The name of the GeneralizedPlaneStrainUserObject");
33 params.addParam<
unsigned int>(
34 "scalar_out_of_plane_strain_index",
35 "The index number of scalar_out_of_plane_strain this kernel acts on");
41 : ScalarKernel(parameters),
43 _scalar_var_id(isParamValid(
"scalar_out_of_plane_strain_index")
44 ? getParam<unsigned int>(
"scalar_out_of_plane_strain_index")
47 auto fe_problem_base = getCheckedPointerParam<FEProblemBase *>(
"_fe_problem_base");
48 if (
auto ref_resid_problem = dynamic_cast<ReferenceResidualProblem *>(fe_problem_base))
50 const auto & ref_parameters = ref_resid_problem->parameters();
51 if (isParamValid(
"extra_vector_tags") && ref_parameters.isParamValid(
"reference_vector"))
53 const auto & reference_vector_tag_name = ref_parameters.get<TagName>(
"reference_vector");
54 const auto & extra_vector_tag_names = getParam<std::vector<TagName>>(
"extra_vector_tags");
55 if (std::find(extra_vector_tag_names.begin(),
56 extra_vector_tag_names.end(),
57 reference_vector_tag_name) != extra_vector_tag_names.end())
59 _ref_tag_id.insert(_subproblem.getVectorTagID(reference_vector_tag_name));
60 std::set_difference(_vector_tags.begin(),
76 prepareVectorTag(_assembly, _var.number());
77 for (_i = 0; _i < _local_re.size(); ++_i)
80 accumulateTaggedLocalResidual();
86 prepareVectorTag(_assembly, _var.number());
87 for (_i = 0; _i < _local_re.size(); ++_i)
90 accumulateTaggedLocalResidual();
102 prepareMatrixTag(_assembly, _var.number(), _var.number());
103 for (_i = 0; _i < _local_ke.m(); ++_i)
106 accumulateTaggedLocalMatrix();