www.mooseframework.org
ContactPressureAux.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 
10 #include "ContactPressureAux.h"
11 
12 #include "NodalArea.h"
13 #include "PenetrationLocator.h"
14 
15 #include "libmesh/string_to_enum.h"
16 
18 
19 template <>
20 InputParameters
22 {
23  InputParameters params = validParams<AuxKernel>();
24  params.addRequiredCoupledVar("nodal_area", "The nodal area");
25  params.addRequiredParam<BoundaryName>("paired_boundary", "The boundary to be penetrated");
26  params.set<ExecFlagEnum>("execute_on") = EXEC_NONLINEAR;
27  MooseEnum orders("FIRST SECOND THIRD FOURTH", "FIRST");
28  params.addParam<MooseEnum>("order", orders, "The finite element order: " + orders.getRawNames());
29  return params;
30 }
31 
32 ContactPressureAux::ContactPressureAux(const InputParameters & params)
33  : AuxKernel(params),
34  _nodal_area(coupledValue("nodal_area")),
35  _penetration_locator(
36  getPenetrationLocator(getParam<BoundaryName>("paired_boundary"),
37  getParam<std::vector<BoundaryName>>("boundary")[0],
38  Utility::string_to_enum<Order>(getParam<MooseEnum>("order"))))
39 {
40 }
41 
43 
44 Real
46 {
47  Real value(0);
48  const Real area = _nodal_area[_qp];
49  const PenetrationInfo * pinfo(NULL);
50 
51  const auto it = _penetration_locator._penetration_info.find(_current_node->id());
52  if (it != _penetration_locator._penetration_info.end())
53  pinfo = it->second;
54 
55  if (pinfo && area != 0)
56  value = -(pinfo->_contact_force * pinfo->_normal) / area;
57 
58  return value;
59 }
ContactPressureAux::computeValue
virtual Real computeValue()
Definition: ContactPressureAux.C:45
ContactPressureAux.h
registerMooseObject
registerMooseObject("ContactApp", ContactPressureAux)
ContactPressureAux::_nodal_area
const VariableValue & _nodal_area
Definition: ContactPressureAux.h:27
NodalArea.h
validParams< ContactPressureAux >
InputParameters validParams< ContactPressureAux >()
Definition: ContactPressureAux.C:21
ContactPressureAux::_penetration_locator
const PenetrationLocator & _penetration_locator
Definition: ContactPressureAux.h:28
ContactPressureAux::~ContactPressureAux
virtual ~ContactPressureAux()
Definition: ContactPressureAux.C:42
ContactPressureAux
Definition: ContactPressureAux.h:17
ContactPressureAux::ContactPressureAux
ContactPressureAux(const InputParameters &parameters)
Definition: ContactPressureAux.C:32