https://mooseframework.inl.gov
Loading...
Searching...
No Matches
MassFluxPenalty.C
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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 "MassFluxPenalty.h"
11
12// MOOSE includes
13#include "MooseVariableFE.h"
14
15#include "libmesh/utility.h"
16
18
21{
23 params.addRequiredCoupledVar("u", "The x-velocity");
24 params.addRequiredCoupledVar("v", "The y-velocity");
25 params.addRequiredParam<unsigned short>("component",
26 "The velocity component this object is being applied to");
27 params.addParam<Real>("gamma", 1, "The penalty to multiply the jump");
28 params.addClassDescription("Introduces a jump correction on internal faces for grad-div "
29 "stabilization for discontinuous Galerkin methods. Because this is "
30 "derived from DGKernel this class executes once per face.");
31 return params;
32}
33
35 : ADDGKernel(parameters),
36 _vel_x(adCoupledValue("u")),
37 _vel_x_neighbor(adCoupledNeighborValue("u")),
38 _vel_y(adCoupledValue("v")),
39 _vel_y_neighbor(adCoupledNeighborValue("v")),
40 _comp(getParam<unsigned short>("component")),
41 _matrix_only(getParam<bool>("matrix_only")),
42 _gamma(getParam<Real>("gamma")),
43 _hmax(0)
44{
45 if (_mesh.dimension() > 2)
46 mooseError("This class only supports 2D simulations at this time");
47}
48
49void
54
55void
61
64{
65 ADReal r = 0.0;
66 const ADRealVectorValue soln_jump(
68
69 switch (type)
70 {
71 case Moose::Element:
72 r = _gamma / _hmax * soln_jump * _normals[_qp] * _test[_i][_qp] * _normals[_qp](_comp);
73 break;
74
75 case Moose::Neighbor:
76 r = -_gamma / _hmax * soln_jump * _normals[_qp] * _test_neighbor[_i][_qp] *
78 break;
79 }
80
81 return r;
82}
DualNumber< Real, DNDerivativeType, true > ADReal
registerMooseObject("NavierStokesApp", MassFluxPenalty)
const VariableTestValue & _test_neighbor
static InputParameters validParams()
const VariableTestValue & _test
const Elem *const & _current_side_elem
unsigned int _i
virtual void computeResidual() override
unsigned int _qp
const MooseArray< Point > & _normals
void addRequiredCoupledVar(const std::string &name, const std::string &doc_string)
void addRequiredParam(const std::string &name, const std::string &doc_string)
void addParam(const std::string &name, const std::initializer_list< typename T::value_type > &value, const std::string &doc_string)
void addClassDescription(const std::string &doc_string)
This class introduces a jump correction for grad-div stabilization (see GradDiv) for discontinuous Ga...
const ADVariableValue & _vel_y_neighbor
virtual ADReal computeQpResidual(Moose::DGResidualType type) override
static InputParameters validParams()
void precalculateResidual() override
virtual void computeResidual() override
const Real _gamma
Stabilization magnitude parameter.
MassFluxPenalty(const InputParameters &parameters)
const unsigned short _comp
const ADVariableValue & _vel_x
Real _hmax
Facet characteristic length for correct norm computations.
const bool _matrix_only
whether to avoid contributing to the residual
const ADVariableValue & _vel_y
const ADVariableValue & _vel_x_neighbor
const std::string & type() const
void mooseError(Args &&... args) const
virtual unsigned int dimension() const
MooseMesh & _mesh
DGResidualType