https://mooseframework.inl.gov
MassFluxPenaltyIPHDGAssemblyHelper.h
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 #pragma once
11 
12 #include "IPHDGAssemblyHelper.h"
13 #include "ADFunctorInterface.h"
14 
15 /*
16  * Imposes a singular perturbation on the component momentum equations penalizing discontinuities in
17  * mass flux. Similar to \p MassFluxPenalty except it does not couple interior degrees of freedom on
18  * neighboring elements, which makes this class useful in tandem with hybridized discretizations
19  * because it supports static condensation
20  */
22 {
23 public:
25 
26  MassFluxPenaltyIPHDGAssemblyHelper(const MooseObject * const moose_obj,
28  const TransientInterface * const ti,
29  const MooseMesh & mesh,
30  SystemBase & sys,
31  const Assembly & assembly,
32  const THREAD_ID tid,
33  const std::set<SubdomainID> & block_ids,
34  const std::set<BoundaryID> & boundary_ids);
35 
36  virtual void scalarVolume() override {}
37 
38  virtual void scalarFace() override;
39 
40  virtual void lmFace() override;
41 
42  virtual void scalarDirichlet(const Moose::Functor<Real> &) override
43  {
44  mooseError("A Dirichlet method doesn't make sense for this assembly helper");
45  }
46 
51  const ADVariableValue * const _vel_z;
52  const unsigned short _comp;
53  const Real _gamma;
57 
58 private:
59  ADReal computeQpResidualOnSide(const unsigned int qp);
60 };
Real _hmax
Facet characteristic length for correct norm computations.
const Moose::Functor< ADRealVectorValue > & _face_velocity
void mooseError(Args &&... args)
MeshBase & mesh
DualNumber< Real, DNDerivativeType, false > ADReal
MassFluxPenaltyIPHDGAssemblyHelper(const MooseObject *const moose_obj, MooseVariableDependencyInterface *const mvdi, const TransientInterface *const ti, const MooseMesh &mesh, SystemBase &sys, const Assembly &assembly, const THREAD_ID tid, const std::set< SubdomainID > &block_ids, const std::set< BoundaryID > &boundary_ids)
virtual void scalarDirichlet(const Moose::Functor< Real > &) override
VariableValueTempl< true > ADVariableValue
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
const MooseVariableField< Real > & _vel_y_var
const MooseVariableField< Real > & _vel_x_var
unsigned int THREAD_ID