Public Types | Static Public Attributes | List of all members
Poisson::FirstOrderSystem< Dim > Struct Template Reference

The Poisson equation formulated as a set of coupled first-order PDEs. More...

#include <FirstOrderSystem.hpp>

Public Types

using fields_tag = Tags::Variables< tmpl::list< Field, AuxiliaryField< Dim > >>
using impose_boundary_conditions_on_fields = tmpl::list< Field >
using variables_tag = db::add_tag_prefix< LinearSolver::Tags::Operand, fields_tag >
using compute_operator_action = ComputeFirstOrderOperatorAction< Dim >
using normal_dot_fluxes = ComputeFirstOrderNormalDotFluxes< Dim >
template<typename Tag >
using magnitude_tag = Tags::EuclideanMagnitude< Tag >
using gradient_tags = tmpl::list< LinearSolver::Tags::Operand< Field > >
using divergence_tags = tmpl::list< AuxiliaryField< Dim > >

Static Public Attributes

static constexpr size_t volume_dim = Dim

Detailed Description

template<size_t Dim>
struct Poisson::FirstOrderSystem< Dim >

The Poisson equation formulated as a set of coupled first-order PDEs.


This system formulates the Poisson equation \(-\Delta u(x) = f(x)\) as the set of coupled first-order PDEs

\[ -\nabla \cdot \boldsymbol{v}(x) = f(x) \\ \nabla u(x) - \boldsymbol{v}(x) = 0 \]

where we make use of an auxiliary variable \(\boldsymbol{v}\). This scheme also goes by the name of mixed or flux formulation (see e.g. [1]). The auxiliary variable is treated on the same footing as the field \(u\). This allows us to make use of the DG architecture developed for coupled first-order PDEs, in particular the flux communication and lifting code. It does, however, introduce auxiliary degrees of freedom that can be avoided in the primal formulation. Furthermore, the linear operator that represents the DG discretization for this system is not symmetric (since no mass operator is applied) and has both positive and negative eigenvalues. These properties further increase the computational cost (see Linear Solver) and are remedied in the primal formulation.

The documentation for this struct was generated from the following file: