23 params.
addRequiredParam<NonlinearVariableName>(
"u_face",
"The x-velocity on the face");
24 params.
addRequiredParam<NonlinearVariableName>(
"v_face",
"The y-velocity on the face");
26 "component",
"0<=component<=1",
"The velocity component this object is being applied to");
27 params.
addParam<
Real>(
"gamma", 1,
"The penalty to multiply the jump");
29 "stabilization for discontinuous Galerkin methods. Because this is " 30 "derived from HDGKernel this class executes twice per face.");
36 _vel_x_var(_sys.getFieldVariable<
Real>(_tid, getParam<NonlinearVariableName>(
"u"))),
37 _vel_y_var(_sys.getFieldVariable<
Real>(_tid, getParam<NonlinearVariableName>(
"v"))),
38 _vel_x_face_var(_sys.getFieldVariable<
Real>(_tid, getParam<NonlinearVariableName>(
"u_face"))),
39 _vel_y_face_var(_sys.getFieldVariable<
Real>(_tid, getParam<NonlinearVariableName>(
"v_face"))),
40 _vel_x(_vel_x_var.adSln()),
41 _vel_y(_vel_y_var.adSln()),
42 _vel_x_face(_vel_x_face_var.adSln()),
43 _vel_y_face(_vel_y_face_var.adSln()),
44 _vel_x_phi(_vel_x_var.phiFace()),
45 _vel_y_phi(_vel_y_var.phiFace()),
46 _vel_x_face_phi(_vel_x_face_var.phiFace()),
47 _vel_y_face_phi(_vel_y_face_var.phiFace()),
48 _comp(getParam<unsigned short>(
"component")),
49 _gamma(getParam<
Real>(
"gamma"))
52 mooseError(
"Only two-dimensional velocity is currently implemented");
61 residuals.resize(test.size());
62 for (
auto & r : residuals)
65 auto return_residual = [
this]() -> T
67 if constexpr (std::is_same<T, Real>::value)
77 residuals[i] += qpres * test[i][
_qp];
const ADVariableValue & _vel_x_face
std::vector< Real > _residuals
const unsigned short _comp
const QBase *const & _qrule_face
const MooseArray< std::vector< Real > > & _vel_x_face_phi
const MooseVariableField< Real > & _vel_y_face_var
registerMooseObject("NavierStokesApp", MassFluxPenaltyIPHDG)
void addResiduals(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
const ADVariableValue & _vel_x
static InputParameters validParams()
virtual void computeResidualOnSide() override
DualNumber< Real, DNDerivativeType, true > ADReal
const MooseVariableField< Real > & _vel_y_var
void addJacobian(Assembly &assembly, const Residuals &residuals, const Indices &dof_indices, Real scaling_factor)
virtual void computeJacobianOnSide() override
virtual unsigned int dimension() const
std::vector< ADReal > _ad_residuals
const MooseVariableField< Real > & _vel_x_var
const MooseArray< std::vector< Real > > & _vel_x_phi
const MooseArray< std::vector< Real > > & _vel_y_phi
const MooseArray< Real > & _JxW_face
const MooseArray< Real > & _coord
const MooseArray< std::vector< Real > > & _vel_y_face_phi
ADReal computeQpResidualOnSide()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const ADVariableValue & _vel_y
void mooseError(Args &&... args) const
MassFluxPenaltyIPHDG(const InputParameters ¶meters)
static InputParameters validParams()
void computeOnSideHelper(std::vector< T > &residuals, const MooseArray< std::vector< Real >> &test, Real sign)
Helper method to reduce code duplication, this will multiply quadrature point residuals corresponding...
const MooseArray< Point > & _normals
const ADVariableValue & _vel_y_face
auto index_range(const T &sizable)
const MooseVariableField< Real > & _vel_x_face_var