SpECTRE  v2024.04.12
gr::Solutions::GaugePlaneWave< Dim > Class Template Reference

Gauge plane wave in flat spacetime. More...

#include <GaugePlaneWave.hpp>

Classes

struct  Profile
 
struct  WaveVector
 

Public Types

using options = tmpl::list< WaveVector, Profile >
 
template<typename DataType >
using DerivLapse = ::Tags::deriv< gr::Tags::Lapse< DataType >, tmpl::size_t< volume_dim >, Frame::Inertial >
 
template<typename DataType >
using DerivShift = ::Tags::deriv< gr::Tags::Shift< DataType, volume_dim >, tmpl::size_t< volume_dim >, Frame::Inertial >
 
template<typename DataType >
using DerivSpatialMetric = ::Tags::deriv< gr::Tags::SpatialMetric< DataType, volume_dim >, tmpl::size_t< volume_dim >, Frame::Inertial >
 
- Public Types inherited from gr::AnalyticSolution< Dim >
template<typename DataType , typename Frame = ::Frame::Inertial>
using DerivLapse = ::Tags::deriv< gr::Tags::Lapse< DataType >, tmpl::size_t< volume_dim >, Frame >
 
template<typename DataType , typename Frame = ::Frame::Inertial>
using DerivShift = ::Tags::deriv< gr::Tags::Shift< DataType, volume_dim, Frame >, tmpl::size_t< volume_dim >, Frame >
 
template<typename DataType , typename Frame = ::Frame::Inertial>
using DerivSpatialMetric = ::Tags::deriv< gr::Tags::SpatialMetric< DataType, volume_dim, Frame >, tmpl::size_t< volume_dim >, Frame >
 
template<typename DataType , typename Frame = ::Frame::Inertial>
using tags = tmpl::list< gr::Tags::Lapse< DataType >, ::Tags::dt< gr::Tags::Lapse< DataType > >, DerivLapse< DataType, Frame >, gr::Tags::Shift< DataType, volume_dim, Frame >, ::Tags::dt< gr::Tags::Shift< DataType, volume_dim, Frame > >, DerivShift< DataType, Frame >, gr::Tags::SpatialMetric< DataType, volume_dim, Frame >, ::Tags::dt< gr::Tags::SpatialMetric< DataType, volume_dim, Frame > >, DerivSpatialMetric< DataType, Frame >, gr::Tags::SqrtDetSpatialMetric< DataType >, gr::Tags::ExtrinsicCurvature< DataType, volume_dim, Frame >, gr::Tags::InverseSpatialMetric< DataType, volume_dim, Frame > >
 

Public Member Functions

 GaugePlaneWave (std::array< double, Dim > wave_vector, std::unique_ptr< MathFunction< 1, Frame::Inertial > > profile)
 
 GaugePlaneWave (const GaugePlaneWave &)
 
GaugePlaneWaveoperator= (const GaugePlaneWave &)
 
 GaugePlaneWave (GaugePlaneWave &&)=default
 
GaugePlaneWaveoperator= (GaugePlaneWave &&)=default
 
 GaugePlaneWave (CkMigrateMessage *)
 
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, volume_dim, Frame::Inertial > &x, double t, tmpl::list< Tags... >) const
 
template<typename DataType , typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataType, volume_dim, Frame::Inertial > &x, double t, const IntermediateVars< DataType > &vars, tmpl::list< Tags... >) const
 
void pup (PUP::er &p)
 

Static Public Attributes

static constexpr size_t volume_dim = Dim
 
static constexpr Options::String help {"Gauge plane wave in flat spacetime"}
 
- Static Public Attributes inherited from gr::AnalyticSolution< Dim >
static constexpr size_t volume_dim = Dim
 

Friends

template<size_t LocalDim>
bool operator== (const GaugePlaneWave< LocalDim > &lhs, const GaugePlaneWave< LocalDim > &rhs)
 
template<size_t LocalDim>
bool operator!= (const GaugePlaneWave< LocalDim > &lhs, const GaugePlaneWave< LocalDim > &rhs)
 

Detailed Description

template<size_t Dim>
class gr::Solutions::GaugePlaneWave< Dim >

Gauge plane wave in flat spacetime.

Details

The spacetime metric is in Kerr-Schild form:

\begin{equation} g_{\mu\nu} = \eta_{\mu\nu} + H l_\mu l_\nu \end{equation}

where \(H\) is a scalar function of the coordinates, \(\eta_{\mu\nu}\) is the Minkowski metric, and \(l^\mu\) is a null vector. Note that the form of the metric along with the nullness of \(l^\mu\) allows one to raise and lower indices of \(l^\mu\) using \(\eta_{\mu\nu}\), and that \(l^t l^t = l_t l_t = l^i l_i\). Note also that

\begin{equation} g^{\mu\nu} \equiv \eta^{\mu\nu} - H l^\mu l^\nu, \end{equation}

and that \(\sqrt{-g}=1\). Also, \(l_\mu\) is a geodesic with respect to both the physical metric and the Minkowski metric:

\begin{equation} l^\mu \partial_\mu l_\nu = l^\mu\nabla_\mu l_\nu = 0. \end{equation}

For this solution we choose the profile \(H\) of the plane wave to be an arbitrary one-dimensional function of \(u = \vec{k} \cdot \vec{x} - \omega t\) with a constant Euclidean wave vector \(\vec{k}\) and frequency \(\omega = ||\vec{k}||\). The null covector is chosen to be \(l_a = (-\omega, k_i)\). Thus, if \(H = H[u]\), then \(\partial_\mu H = H'[u] l_\mu\). Therefore the derivatives of the spacetime metric are:

\begin{equation} \partial_\rho g_{\mu\nu} = H' l_\rho l_\mu l_\nu, \end{equation}

The 3+1 quantities are

\begin{align} \alpha & = \left( 1 + H \omega^2 \right)^{-1/2},\\ \beta^i & = \frac{-H \omega k^i}{1 + H \omega^2},\\ \gamma_{ij} & = \delta_{ij} + H k_i k_j,\\ \gamma & = 1 + H \omega^2,\\ \gamma^{ij} & = \delta^{ij} - \frac{H k^i k^j}{1 + H \omega^2},\\ \partial_t \alpha & = \frac{\omega^3 H'}{2 \left(1 + H \omega^2 \right)^{3/2}},\\ \partial_i \alpha & = - \frac{\omega^2 H' k_i}{2 \left(1 + H \omega^2 \right)^{3/2}},\\ \partial_t \beta^i & = \frac{\omega^2 H' k^i}{\left(1 + H \omega^2 \right)^2},\\ \partial_j \beta^i & = - \frac{\omega H' k_j k^i}{\left(1 + H \omega^2 \right)^2},\\ \partial_t \gamma_{ij} & = - \omega H' k_i k_j,\\ \partial_k \gamma_{ij} & = H' k_k k_i k_j,\\ K_{ij} & = - \frac{\omega H' k_i k_j}{2 \left(1 + H \omega^2 \right)^{1/2}}. \end{align}

Note that this solution is a gauge wave as \(\Gamma^a{}_{bc} = \frac{1}{2} H' l^a l_b l_c\) and thus \(R^a{}_{bcd} = 0\).

Template Parameters
Dimthe spatial dimension of the solution

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