Line data Source code
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 : #pragma once 11 : 12 : #include "IPHDGAssemblyHelper.h" 13 : #include "ADFunctorInterface.h" 14 : 15 : class MooseMesh; 16 : 17 : /** 18 : * Implements all the methods for assembling a hybridized interior penalty discontinuous Galerkin 19 : * (IPDG-H), which is a type of HDG method, discretization of the conservation of mass equation for 20 : * incompressible Navier-Stokes. These routines may be called by both HDG kernels and integrated 21 : * boundary conditions. 22 : */ 23 : class MassContinuityAssemblyHelper : public IPHDGAssemblyHelper, public ADFunctorInterface 24 : { 25 : public: 26 : static InputParameters validParams(); 27 : 28 : MassContinuityAssemblyHelper(const MooseObject * const moose_obj, 29 : MooseVariableDependencyInterface * const mvdi, 30 : const TransientInterface * const ti, 31 : const MooseMesh & mesh, 32 : SystemBase & sys, 33 : const Assembly & assembly, 34 : const THREAD_ID tid, 35 : const std::set<SubdomainID> & block_ids, 36 : const std::set<BoundaryID> & boundary_ids); 37 : 38 : virtual void scalarVolume() override; 39 : virtual void scalarFace() override; 40 : virtual void lmFace() override; 41 0 : virtual void scalarDirichlet(const Moose::Functor<Real> &) override 42 : { 43 0 : mooseError( 44 : "This kernel is applied for the pressure variable, but the pressure does not itself appear " 45 : "in the weak form this kernel implements, so the scalarDirichlet method does not fit"); 46 : } 47 : 48 : /// The coordinate system 49 : const Moose::CoordinateSystemType _coord_sys; 50 : 51 : /// The radial coordinate index for RZ coordinate systems 52 : const unsigned int _rz_radial_coord; 53 : 54 : /// The velocities at interior element quadrature points 55 : std::vector<const ADVariableValue *> _interior_vels; 56 : 57 : /// The velocity gradients at interior element quadrature points 58 : std::vector<const ADVariableGradient *> _interior_vel_grads; 59 : 60 : /// The velocity functors used to evalute the velocity on element face quadrature points 61 : std::vector<const Moose::Functor<ADReal> *> _face_vels; 62 : };