11 #include "FEProblem.h"
21 InputParameters params = validParams<ElemElemConstraint>();
22 params.addRequiredParam<Real>(
"alpha",
"Penalty parameter in penalty formulation.");
23 params.addRequiredParam<Real>(
"value",
"Prescribed value at the interface.");
24 params.addParam<UserObjectName>(
25 "geometric_cut_userobject",
26 "Name of GeometricCutUserObject associated with this constraint.");
27 params.addClassDescription(
"enforce a same value on both sides of the interface.");
32 : ElemElemConstraint(parameters), _alpha(getParam<Real>(
"alpha")), _value(getParam<Real>(
"value"))
34 _xfem = std::dynamic_pointer_cast<XFEM>(_fe_problem.getXFEM());
36 mooseError(
"Problem casting to XFEM in XFEMEqualValueAtInterface");
38 const UserObject * uo =
39 &(_fe_problem.getUserObjectBase(getParam<UserObjectName>(
"geometric_cut_userobject")));
41 if (dynamic_cast<const GeometricCutUserObject *>(uo) ==
nullptr)
42 mooseError(
"UserObject casting to GeometricCutUserObject in XFEMEqualValueAtInterface");
44 _interface_id =
_xfem->getGeometricCutID(dynamic_cast<const GeometricCutUserObject *>(uo));
52 ElemElemConstraint::reinitConstraintQuadrature(element_pair_info);
67 r +=
_alpha * (_u_neighbor[_qp] -
_value) * _test_neighbor[_i][_qp];
80 case Moose::ElementElement:
81 r +=
_alpha * _phi[_j][_qp] * _test[_i][_qp];
84 case Moose::NeighborNeighbor:
85 r +=
_alpha * _phi_neighbor[_j][_qp] * _test_neighbor[_i][_qp];