Line data Source code
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 : */ 21 : class MassFluxPenaltyIPHDGAssemblyHelper : public IPHDGAssemblyHelper, public ADFunctorInterface 22 : { 23 : public: 24 : static InputParameters validParams(); 25 : 26 : MassFluxPenaltyIPHDGAssemblyHelper(const MooseObject * const moose_obj, 27 : MooseVariableDependencyInterface * const mvdi, 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 572156 : virtual void scalarVolume() override {} 37 : 38 : virtual void scalarFace() override; 39 : 40 : virtual void lmFace() override; 41 : 42 0 : virtual void scalarDirichlet(const Moose::Functor<Real> &) override 43 : { 44 0 : mooseError("A Dirichlet method doesn't make sense for this assembly helper"); 45 : } 46 : 47 : const MooseVariableField<Real> & _vel_x_var; 48 : const MooseVariableField<Real> & _vel_y_var; 49 : const ADVariableValue & _vel_x; 50 : const ADVariableValue & _vel_y; 51 : const ADVariableValue * const _vel_z; 52 : const unsigned short _comp; 53 : const Real _gamma; 54 : const Moose::Functor<ADRealVectorValue> & _face_velocity; 55 : /// Facet characteristic length for correct norm computations 56 : Real _hmax; 57 : 58 : private: 59 : ADReal computeQpResidualOnSide(const unsigned int qp); 60 : };