20#include "libmesh/quadrature.h"
30 "Stabilization parameter in Nitsche's formulation and penalty factor "
31 "in the Penalty Method. In Nitsche's formulation this should be as "
32 "small as possible while the method is still stable; while in the "
33 "Penalty Method you want this to be quite large (e.g. 1e6).");
34 params.
addParam<FunctionName>(
"jump", 0,
"Jump at the interface. Can be a Real or FunctionName.");
36 "jump_flux", 0,
"Flux jump at the interface. Can be a Real or FunctionName.");
38 "geometric_cut_userobject",
39 "Name of GeometricCutUserObject associated with this constraint.");
43 "Use the Penalty instead of Nitsche (Nitsche only works for simple diffusion problems).");
44 params.
addClassDescription(
"Enforce constraints on the value or flux associated with a variable "
45 "at an XFEM interface.");
51 _alpha(getParam<Real>(
"alpha")),
52 _jump(getFunction(
"jump")),
53 _jump_flux(getFunction(
"jump_flux")),
54 _use_penalty(getParam<bool>(
"use_penalty"))
58 mooseError(
"Problem casting to XFEM in XFEMSingleVariableConstraint");
64 mooseError(
"UserObject casting to GeometricCutUserObject in XFEMSingleVariableConstraint");
registerMooseObject("XFEMApp", XFEMSingleVariableConstraint)
const VariableTestValue & _test_neighbor
const VariableGradient & _grad_u
const VariablePhiValue & _phi_neighbor
FEProblemBase & _fe_problem
const VariablePhiValue & _phi
const VariablePhiGradient & _grad_phi_neighbor
const VariableTestGradient & _grad_test_neighbor
virtual void reinitConstraintQuadrature(const ElementPairInfo &element_pair_info)
const VariableGradient & _grad_u_neighbor
const VariablePhiGradient & _grad_phi
const VariableValue & _u_neighbor
const VariableTestValue & _test
const VariableTestGradient & _grad_test
static InputParameters validParams()
unsigned int _interface_id
std::shared_ptr< XFEMInterface > getXFEM()
const UserObject & getUserObjectBase(const std::string &name, const THREAD_ID tid=0) const
virtual Real value(Real t, const Point &p) const
const std::string & type() const
void mooseError(Args &&... args) const
virtual Real computeQpJacobian(Moose::DGJacobianType type) override
virtual Real computeQpResidual(Moose::DGResidualType type) override
std::shared_ptr< XFEM > _xfem
Pointer to the XFEM controller object.
bool _use_penalty
Use penalty formulation.
const Function & _jump
Change in variable value at the interface.
static InputParameters validParams()
virtual ~XFEMSingleVariableConstraint()
const Function & _jump_flux
Change in flux of variable value at the interface.
XFEMSingleVariableConstraint(const InputParameters ¶meters)
Point _interface_normal
Vector normal to the internal interface.
Real _alpha
Stabilization parameter in Nitsche's formulation and penalty factor in the Penalty Method.
virtual void reinitConstraintQuadrature(const ElementPairInfo &element_pair_info) override