SpECTRE
v2024.05.11
|
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 &) | |
GaugePlaneWave & | operator= (const GaugePlaneWave &) |
GaugePlaneWave (GaugePlaneWave &&)=default | |
GaugePlaneWave & | operator= (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) |
Gauge plane wave in flat spacetime.
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\).
Dim | the spatial dimension of the solution |