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 
13 #include "ADFunctorInterface.h"
14 
15 template <typename>
16 class MooseVariableField;
17 
18 /*
19  * Imposes a singular perturbation on the component momentum equations penalizing discontinuities in
20  * mass flux. Similar to \p MassFluxPenalty except it does not couple interior degrees of freedom on
21  * neighboring elements, which makes this class useful in tandem with hybridized discretizations
22  * because it supports static condensation
23  */
25  public ADFunctorInterface
26 {
27 public:
29 
30  MassFluxPenaltyIPHDGAssemblyHelper(const MooseObject * const moose_obj,
32  const TransientInterface * const ti,
33  const MooseMesh & mesh,
34  SystemBase & sys,
35  const Assembly & assembly,
36  const THREAD_ID tid,
37  const std::set<SubdomainID> & block_ids,
38  const std::set<BoundaryID> & boundary_ids);
39 
40  virtual void scalarVolume() override {}
41 
42  virtual void scalarFace() override;
43 
44  virtual void lmFace() override;
45 
46  virtual void scalarDirichlet(const Moose::Functor<Real> &) override
47  {
48  mooseError("A Dirichlet method doesn't make sense for this assembly helper");
49  }
50 
55  const ADVariableValue * const _vel_z;
56  const unsigned short _comp;
57  const Real _gamma;
61 
62 private:
63  ADReal computeQpResidualOnSide(const unsigned int qp);
64 };
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