SpECTRE
v2024.09.29
|
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 = tmpl::list< ::Tags::Flux< Tags::Field< DataType >, 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, DataType > |
using | sources_computer = tmpl::conditional_t< BackgroundGeometry==Geometry::FlatCartesian, void, Sources< Dim, BackgroundGeometry, DataType > > |
using | boundary_conditions_base = elliptic::BoundaryConditions::BoundaryCondition< Dim > |
Static Public Attributes | |
static constexpr size_t | volume_dim = Dim |
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 specialize the system for this case. Set it to Poisson::Geometry::Curved
for the general case.
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.