SpECTRE  v2024.06.18
Poisson::FirstOrderSystem< Dim, BackgroundGeometry > Struct Template Reference

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

#include <FirstOrderSystem.hpp>

Public Types

using primal_fields = tmpl::list< Tags::Field >
using primal_fluxes = tmpl::list<::Tags::Flux< Tags::Field, tmpl::size_t< Dim >, Frame::Inertial > >
using background_fields = tmpl::conditional_t< BackgroundGeometry==Geometry::FlatCartesian, tmpl::list<>, tmpl::list< gr::Tags::InverseSpatialMetric< DataVector, Dim >, gr::Tags::SpatialChristoffelSecondKindContracted< DataVector, Dim > > >
using inv_metric_tag = tmpl::conditional_t< BackgroundGeometry==Geometry::FlatCartesian, void, gr::Tags::InverseSpatialMetric< DataVector, Dim > >
using fluxes_computer = Fluxes< Dim, BackgroundGeometry >
using sources_computer = tmpl::conditional_t< BackgroundGeometry==Geometry::FlatCartesian, void, Sources< Dim, BackgroundGeometry > >
using boundary_conditions_base = elliptic::BoundaryConditions::BoundaryCondition< Dim >

Static Public Attributes

static constexpr size_t volume_dim = Dim

Detailed Description

template<size_t Dim, Geometry BackgroundGeometry>
struct Poisson::FirstOrderSystem< Dim, BackgroundGeometry >

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


This system formulates the Poisson equation \(-\Delta_\gamma u(x) = f(x)\) on a background metric \(\gamma_{ij}\) as the set of coupled first-order PDEs

\begin{align*} -\partial_i v^i - \Gamma^i_{ij} v^j = f(x) \\ v^i = \gamma^{ij} \partial_j u(x) \end{align*}

where \(\Gamma^i_{jk}=\frac{1}{2}\gamma^{il}\left(\partial_j\gamma_{kl} +\partial_k\gamma_{jl}-\partial_l\gamma_{jk}\right)\) are the Christoffel symbols of the second kind of the background metric \(\gamma_{ij}\). The background metric \(\gamma_{ij}\) and the Christoffel symbols derived from it are assumed to be independent of the variables \(u\), i.e. constant throughout an iterative elliptic solve.

The system can be formulated in terms of these fluxes and sources (see elliptic::protocols::FirstOrderSystem):

\begin{align*} F^i &= v^i = \gamma^{ij} \partial_j u \\ S &= -\Gamma^i_{ij} v^j \\ f &= f(x) \text{.} \end{align*}

The fluxes and sources simplify significantly when the background metric is flat and we employ Cartesian coordinates so \(\gamma_{ij} = \delta_{ij}\) and \(\Gamma^i_{jk} = 0\). Set the template parameter BackgroundGeometry to Poisson::Geometry::FlatCartesian to specialise the system for this case. Set it to Poisson::Geometry::Curved for the general case.

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