Rodin/Variational/InterfaceIntegral.h file

Interface integral classes for interior element faces.

This file defines the InterfaceIntegral classes which represent integrals over interior mesh faces (interfaces between elements) in discontinuous Galerkin formulations. Interface integrals specifically exclude boundary faces, focusing on element-to-element coupling.

Mathematical Foundation

Interface integrals compute:

\[ \int_{\Gamma_h} f(x) \, ds \]

where $ \Gamma_h $ is the set of interior faces (excluding the domain boundary $ \partial\Omega $ ).

Discontinuous Galerkin Context

Interface integrals are fundamental to DG methods, enabling:

  • Element coupling: Connect discontinuous solutions across elements
  • Flux consistency: Ensure conservative numerical fluxes
  • Stability: Add necessary stabilization terms

Interior Penalty Method

A typical IP-DG formulation includes:

\[ a(u,v) = \int_\Omega \nabla u \cdot \nabla v \, dx - \int_{\Gamma_h} \{\!\{\nabla u\}\!\} \cdot [\![v]\!] \, ds - \int_{\Gamma_h} \{\!\{\nabla v\}\!\} \cdot [\![u]\!] \, ds + \int_{\Gamma_h} \frac{\sigma}{h} [\![u]\!] \cdot [\![v]\!] \, ds \]

Usage Example

// Interior penalty terms (only on interior faces)
auto penalty = InterfaceIntegral(sigma / h * Jump(u), Jump(v));
auto consistency = InterfaceIntegral(Average(Grad(u)), Jump(v));
auto symmetry = InterfaceIntegral(Jump(u), Average(Grad(v)));

Namespaces

namespace Rodin
The Rodin library for Shape and Topology Optimization.
namespace Rodin::Variational
Module which provides the necessary tools for constructing variational problems.

Classes

template<class LHSDerived, class TrialFES, class RHSDerived, class TestFES>
class Rodin::Variational::InterfaceIntegral<Dot<ShapeFunctionBase<LHSDerived, TrialFES, TrialSpace>, ShapeFunctionBase<RHSDerived, TestFES, TestSpace>>>
Integration of the dot product of a trial and test operators.
template<class NestedDerived, class FES>
class Rodin::Variational::InterfaceIntegral<ShapeFunctionBase<NestedDerived, FES, TestSpace>>
Integration of a test operator.