12 #include "FEProblem.h"
13 #include "Conversion.h"
21 InputParameters params = validParams<Action>();
22 params.addClassDescription(
"Action to create an instance of the cohesive zone model kernel for "
23 "each displacement component");
25 params.addRequiredParam<std::vector<BoundaryName>>(
26 "boundary",
"The list of boundary IDs from the mesh where the cohesive zone will be applied");
28 params.addRequiredParam<std::vector<VariableName>>(
30 "The displacements appropriate for the simulation geometry and coordinate system");
42 std::string kernel_name =
"CZMInterfaceKernel";
44 std::vector<VariableName> displacements;
45 if (isParamValid(
"displacements"))
46 displacements = getParam<std::vector<VariableName>>(
"displacements");
48 if (_current_task ==
"add_interface_kernel")
50 for (
unsigned int i = 0; i < displacements.size(); ++i)
53 std::string unique_kernel_name = kernel_name +
"_" + _name +
"_" + Moose::stringify(i);
55 InputParameters paramsk = _factory.getValidParams(kernel_name);
57 paramsk.set<
bool>(
"use_displaced_mesh") =
false;
58 paramsk.set<
unsigned int>(
"component") = i;
59 paramsk.set<NonlinearVariableName>(
"variable") = displacements[i];
60 paramsk.set<std::vector<VariableName>>(
"neighbor_var") = {displacements[i]};
61 paramsk.set<std::vector<VariableName>>(
"displacements") = displacements;
62 paramsk.set<std::vector<BoundaryName>>(
"boundary") =
63 getParam<std::vector<BoundaryName>>(
"boundary");
65 _problem->addInterfaceKernel(kernel_name, unique_kernel_name, paramsk);