www.mooseframework.org
PenaltyInclinedNoDisplacementBC.C
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
11 #include "Function.h"
12 
13 registerMooseObject("TensorMechanicsApp", PenaltyInclinedNoDisplacementBC);
14 
15 defineLegacyParams(PenaltyInclinedNoDisplacementBC);
16 
17 InputParameters
19 {
20  InputParameters params = IntegratedBC::validParams();
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");
27  return params;
28 }
29 
30 PenaltyInclinedNoDisplacementBC::PenaltyInclinedNoDisplacementBC(const InputParameters & parameters)
31  : IntegratedBC(parameters),
32  _component(getParam<unsigned int>("component")),
33  _ndisp(coupledComponents("displacements")),
34  _disp(3),
35  _disp_var(_ndisp),
36  _penalty(getParam<Real>("penalty"))
37 {
38  for (unsigned int i = 0; i < _ndisp; ++i)
39  {
40  _disp[i] = &coupledValue("displacements", i);
41  _disp_var[i] = coupled("displacements", i);
42  }
43 }
44 
45 Real
46 PenaltyInclinedNoDisplacementBC::computeQpResidual()
47 {
48  Real v = 0;
49  for (unsigned int i = 0; i < _ndisp; ++i)
50  v += (*_disp[i])[_qp] * _normals[_qp](i);
51 
52  return _penalty * _test[_i][_qp] * v * _normals[_qp](_component);
53 }
54 
55 Real
56 PenaltyInclinedNoDisplacementBC::computeQpJacobian()
57 {
58  return _penalty * _phi[_j][_qp] * _normals[_qp](_component) * _normals[_qp](_component) *
59  _test[_i][_qp];
60 }
61 
62 Real
63 PenaltyInclinedNoDisplacementBC::computeQpOffDiagJacobian(unsigned int jvar)
64 {
65  for (unsigned int coupled_component = 0; coupled_component < _ndisp; ++coupled_component)
66  if (jvar == _disp_var[coupled_component])
67  {
68  return _penalty * _phi[_j][_qp] * _normals[_qp](coupled_component) *
69  _normals[_qp](_component) * _test[_i][_qp];
70  }
71 
72  return 0.0;
73 }
registerMooseObject
registerMooseObject("TensorMechanicsApp", PenaltyInclinedNoDisplacementBC)
validParams
InputParameters validParams()
defineLegacyParams
defineLegacyParams(PenaltyInclinedNoDisplacementBC)
PenaltyInclinedNoDisplacementBC.h