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 "DGKernel.h" 13 : 14 : /** 15 : * This class can be used to compute a mass matrix for facet unknowns, e.g. for variables that live 16 : * only on element faces (these are \p SIDE_HIERARCHIC finite element family variables in libMesh). 17 : * This object is only executed on internal faces so in general this object should be paired with 18 : * MassMatrixIntegratedBC for external faces. This class cannot be used if performing static 19 : * condensation because static condensation relies on computing residuals and Jacobians on a strict 20 : * per-element basis whereas DGKernels simultaneously add residuals and Jacobians to both elements 21 : * on either side of the face they're currently operating on 22 : */ 23 : class MassMatrixDGKernel : public DGKernel 24 : { 25 : public: 26 : static InputParameters validParams(); 27 : 28 : MassMatrixDGKernel(const InputParameters & parameters); 29 : 30 74600 : virtual void computeResidual() override {} 31 : 32 : protected: 33 : virtual Real computeQpResidual(Moose::DGResidualType) override; 34 : 35 : virtual Real computeQpJacobian(const Moose::DGJacobianType type) override; 36 : 37 : const Real _density; 38 : };