DGKernels System
DGKernels System
Overview
DGKernels are the kernels defined on internal sides. DGKernels are typically for elemental variables, i.e. variables that allow solutions to be discontinuous across element sides. DGKernels along with normal kernels allow the definition of weak forms arising from discontinuous finite element methods (DFEM). DGKernels can be block restricted for calculations with DFEM on subdomains. Internal sides are visited once during residual or Jacobian evaluations by MOOSE. DGKernels handle two pieces of residual, marked as Element
and Neighbor
, on an internal side and corresponding four pieces of Jacobian, marked as ElementElement
, ElementNeighbor
, NeighborElement
and NeighborNeighbor
. The normals on internal sides are pointing towards neighboring element from the current element. Typically DGKernels are irrelevant with the normal direction. When there are mesh refinement, MOOSE visits all the active internal sides, meaning that if there is a hanging node for an internal side, MOOSE visit the child internal sides. DGKernels can make use of the material properties defined on both Element and Neighbor sides. The DGKernel with interior penalty (IP) method for diffusion equations can be found at DGDiffusion. The DGKernel with upwinding scheme for hyperbolic equations can be found at DGConvection.
Extension for Hybrid Finite Element Methods
DGKernels are extended to support hybrid finite element methods (HFEM) (Raviart and Thomas, 1977).
Considering Poisson's equation of the form
where is the domain, and is its boundary. is a given function on , which has typical constant value of .
The weak form with HFEM for this PDE is to find a triple , in discontinuous function spaces on , all internal sides and respectively, such that, in the same function spaces,
represents the jump of on an internal side. It is noted that the orientation of normals on internal sides does not affect the solution of but flips the sign of . and are also known as Lagrange multipliers for weakly imposing the continuity of across internal sides on and imposing the Dirichlet boundary condition at . They resemble the current () and converge to the current when discretization error gets smaller and smaller with mesh refinement. HFEM has explicit local conservation, which can be seen if we substitute a test function of with constant value of one element of interest and zero elsewhere. The local conservation is evaluated with Lagrange multiplier and the source function for an element inside of the domain .
This weak form requires a compatibility condition to have a unique solution (Raviart and Thomas, 1977). Typically we satisfy this condition by letting the order of the shape function for two order higher (including two) than the order for .
An alternative way of imposing the Robin boundary condition () is to replace with
with Lagrange multiplier and the projected solution on and their corresponding test functions and .
A variable for the Lagrange multiplier defined on all interior sides can be coupled in DGKernels with a lower-dimensional mesh derived from the main mesh for . With this extension, DGKernels can handle three pieces of residual, marked as Element
, Neighbor
and Lower
, on an internal side and corresponding nine pieces of Jacobian, marked as ElementElement
, ElementNeighbor
, NeighborElement
, NeighborNeighbor
, PrimaryLower
, SecondaryLower
, LowerPrimary
, LowerSecondary
and LowerLower
. Similarly, a variable for the Lagrange multiplier on boundary can be coupled in integrated boundary conditions.
The DGKernal for can be found at HFEMDiffusion. The boundary condition for can be found at HFEMDirichletBC with the generalization of being either a fixed value or a variable defined on boundary. With this generalization, HFEMDirichletBC can be used along with kernels defined on the Robin boundary for for the alternative way of imposing the Robin boundary condition above.
MOOSE does not support mesh adaptation with HFEM currently.
Example Input File Syntax
DGKernels are added through DGKernels
input syntax.
Available Objects
- Moose App
- ADDGAdvectionAdds internal face advection flux contributions for discontinuous Galerkin discretizations
- ADDGDiffusionDG kernel for diffusion operator
- ArrayDGDiffusionImplements interior penalty method for array diffusion equations.
- ArrayHFEMDiffusionImposes the constraints on internal sides with HFEM.
- DGConvectionDG upwinding for the convection
- DGDiffusionComputes residual contribution for the diffusion operator using discontinous Galerkin method.
- HFEMDiffusionImposes the constraints on internal sides with HFEM.
- HFEMTestJumpImposes constraints for HFEM with side-discontinuous variables.
- HFEMTrialJumpImposes constraints for HFEM with side-discontinuous variables.
- Zapdos App
- DGCoeffDiffusionThe discontinuous Galerkin form of the generic diffusion term(Densities must be in log form)
- DGEFieldAdvectionThe discontinuous Galerkin form of the generic electric field driven advection term(Densities must be in log form)
- Squirrel App
- DGCoupledAdvectionDG upwinding for convection on Navier-Stokes velocity variables
- DGFunctionConvection
- DGFunctionTemperatureAdvectionDG upwinding for func temp convection
- DGTemperatureAdvectionDG upwinding for the convection
Available Actions
- Moose App
- AddDGKernelActionAdd a DGKernel object to the simulation.
References
- P. A. Raviart and J. M. Thomas.
Primal hybrid finite element methods for 2nd order elliptic equations.
MATHEMATICS OF COMPUTATION, 31(138):391–413, 1977.[BibTeX]