SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
Poisson::FirstOrderSystem< Dim, BackgroundGeometry, DataType > 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<DataType>>
using primal_fluxes
using background_fields
using inv_metric_tag
using fluxes_computer = Fluxes<Dim, BackgroundGeometry, DataType>
using sources_computer
using boundary_conditions_base
using modify_boundary_data = void

Static Public Attributes

static constexpr size_t volume_dim = Dim

Detailed Description

template<size_t Dim, Geometry BackgroundGeometry, typename DataType = DataVector>
struct Poisson::FirstOrderSystem< Dim, BackgroundGeometry, DataType >

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

Details

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 specialize the system for this case. Set it to Poisson::Geometry::Curved for the general case.

Complex Poisson equation

This system can also be used to solve the complex Poisson equation where \(u(x)\) and \(f(x)\) are complex-valued, by setting the DataType template parameter to ComplexDataVector. Note that the real and imaginary sectors of the equations decouple, so they are essentially two independent Poisson equations. This is useful for testing the elliptic solver with complex-valued fields, and also as building blocks for other Poisson-like systems of equations that have additional complex-valued source terms.

Member Typedef Documentation

◆ background_fields

template<size_t Dim, Geometry BackgroundGeometry, typename DataType = DataVector>
using Poisson::FirstOrderSystem< Dim, BackgroundGeometry, DataType >::background_fields
Initial value:
tmpl::conditional_t<
BackgroundGeometry == Geometry::FlatCartesian, tmpl::list<>,
tmpl::list<
@ FlatCartesian
Euclidean (flat) manifold with Cartesian coordinates, i.e. the metric has components in these coordi...
Definition Geometry.hpp:12
Inverse of the spatial metric.
Definition Tags.hpp:32
Contraction of the first two indices of the spatial Christoffel symbols: . Useful for covariant diver...
Definition Tags.hpp:134

◆ boundary_conditions_base

template<size_t Dim, Geometry BackgroundGeometry, typename DataType = DataVector>
using Poisson::FirstOrderSystem< Dim, BackgroundGeometry, DataType >::boundary_conditions_base
Initial value:
Base class for boundary conditions for elliptic systems.
Definition BoundaryCondition.hpp:91

◆ inv_metric_tag

template<size_t Dim, Geometry BackgroundGeometry, typename DataType = DataVector>
using Poisson::FirstOrderSystem< Dim, BackgroundGeometry, DataType >::inv_metric_tag
Initial value:
tmpl::conditional_t<BackgroundGeometry == Geometry::FlatCartesian, void,

◆ primal_fluxes

template<size_t Dim, Geometry BackgroundGeometry, typename DataType = DataVector>
using Poisson::FirstOrderSystem< Dim, BackgroundGeometry, DataType >::primal_fluxes
Initial value:
tmpl::list<
Definition IndexType.hpp:46
Prefix indicating a flux.
Definition Prefixes.hpp:114

◆ sources_computer

template<size_t Dim, Geometry BackgroundGeometry, typename DataType = DataVector>
using Poisson::FirstOrderSystem< Dim, BackgroundGeometry, DataType >::sources_computer
Initial value:
tmpl::conditional_t<BackgroundGeometry == Geometry::FlatCartesian, void,
Sources<Dim, BackgroundGeometry, DataType>>

The documentation for this struct was generated from the following file:
  • src/Elliptic/Systems/Poisson/FirstOrderSystem.hpp