SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
gr::Solutions::GaugePlaneWave< Dim > Class Template Reference

Gauge plane wave in flat spacetime. More...

#include <GaugePlaneWave.hpp>

Classes

struct  IntermediateVars
 
struct  Profile
 
struct  WaveVector
 

Public Types

using options = implementation defined
 
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 = implementation defined
 

Public Member Functions

 GaugePlaneWave (const 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
 
std::array< double, Dim > get_wave_vector () 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:

(1)gμν=ημν+Hlμlν

where H is a scalar function of the coordinates, ημν is the Minkowski metric, and lμ is a null vector. Note that the form of the metric along with the nullness of lμ allows one to raise and lower indices of lμ using ημν, and that ltlt=ltlt=lili. Note also that

(2)gμνημνHlμlν,

and that g=1. Also, lμ is a geodesic with respect to both the physical metric and the Minkowski metric:

(3)lμμlν=lμμlν=0.

For this solution we choose the profile H of the plane wave to be an arbitrary one-dimensional function of u=kxωt with a constant Euclidean wave vector k and frequency ω=||k||. The null covector is chosen to be la=(ω,ki). Thus, if H=H[u], then μH=H[u]lμ. Therefore the derivatives of the spacetime metric are:

(4)ρgμν=Hlρlμlν,

The 3+1 quantities are

(5)α=(1+Hω2)1/2,(6)βi=Hωki1+Hω2,(7)γij=δij+Hkikj,(8)γ=1+Hω2,(9)γij=δijHkikj1+Hω2,(10)tα=ω3H2(1+Hω2)3/2,(11)iα=ω2Hki2(1+Hω2)3/2,(12)tβi=ω2Hki(1+Hω2)2,(13)jβi=ωHkjki(1+Hω2)2,(14)tγij=ωHkikj,(15)kγij=Hkkkikj,(16)Kij=ωHkikj2(1+Hω2)1/2.

Note that this solution is a gauge wave as Γabc=12Hlalblc and thus Rabcd=0.

Template Parameters
Dimthe spatial dimension of the solution

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