SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
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 = implementation defined
 
using primal_fluxes = implementation defined
 
using background_fields = implementation defined
 
using inv_metric_tag = implementation defined
 
using fluxes_computer = Fluxes< Dim, BackgroundGeometry, DataType >
 
using sources_computer = implementation defined
 
using boundary_conditions_base = elliptic::BoundaryConditions::BoundaryCondition< Dim >
 
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 Δγu(x)=f(x) on a background metric γij as the set of coupled first-order PDEs

iviΓijivj=f(x)vi=γijju(x)

where Γjki=12γil(jγkl+kγjllγjk) are the Christoffel symbols of the second kind of the background metric γij. The background metric γ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):

Fi=vi=γijjuS=Γijivjf=f(x).

The fluxes and sources simplify significantly when the background metric is flat and we employ Cartesian coordinates so γij=δij and Γjki=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.


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