21 params.addRequiredParam<Real>(
"penalty",
"Penalty parameter");
22 params.addRequiredParam<
unsigned int>(
23 "component",
"An integer corresponding to the direction (0 for x, 1 for y, 2 for z)");
24 params.addRequiredCoupledVar(
"displacements",
25 "The string of displacements suitable for the problem statement");
26 params.addClassDescription(
"Penalty Enforcement of an inclined boundary condition");
30 PenaltyInclinedNoDisplacementBC::PenaltyInclinedNoDisplacementBC(
const InputParameters & parameters)
31 : IntegratedBC(parameters),
32 _component(getParam<unsigned int>(
"component")),
33 _ndisp(coupledComponents(
"displacements")),
36 _penalty(getParam<Real>(
"penalty"))
38 for (
unsigned int i = 0; i < _ndisp; ++i)
40 _disp[i] = &coupledValue(
"displacements", i);
41 _disp_var[i] = coupled(
"displacements", i);
46 PenaltyInclinedNoDisplacementBC::computeQpResidual()
49 for (
unsigned int i = 0; i < _ndisp; ++i)
50 v += (*_disp[i])[_qp] * _normals[_qp](i);
52 return _penalty * _test[_i][_qp] * v * _normals[_qp](_component);
56 PenaltyInclinedNoDisplacementBC::computeQpJacobian()
58 return _penalty * _phi[_j][_qp] * _normals[_qp](_component) * _normals[_qp](_component) *
63 PenaltyInclinedNoDisplacementBC::computeQpOffDiagJacobian(
unsigned int jvar)
65 for (
unsigned int coupled_component = 0; coupled_component < _ndisp; ++coupled_component)
66 if (jvar == _disp_var[coupled_component])
68 return _penalty * _phi[_j][_qp] * _normals[_qp](coupled_component) *
69 _normals[_qp](_component) * _test[_i][_qp];