SpECTRE  v2024.04.12
ForceFree::Solutions::AlfvenWave Class Reference

Alfven wave propagating along \(x\) direction in flat spacetime with the wave speed \(\mu\). More...

#include <AlfvenWave.hpp>

Classes

struct  WaveSpeed
 The wave speed. More...
 

Public Types

using options = tmpl::list< WaveSpeed >
 

Public Member Functions

 AlfvenWave (const AlfvenWave &)=default
 
AlfvenWaveoperator= (const AlfvenWave &)=default
 
 AlfvenWave (AlfvenWave &&)=default
 
AlfvenWaveoperator= (AlfvenWave &&)=default
 
 AlfvenWave (double wave_speed, const Options::Context &context={})
 
auto get_clone () const -> std::unique_ptr< evolution::initial_data::InitialData > override
 
void pup (PUP::er &p) override
 
template<typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataVector, 3 > &x, const double t, tmpl::list< Tags... >) const
 Retrieve a collection of EM variables at (x, t)
 
template<typename Tag >
tuples::TaggedTuple< Tag > variables (const tnsr::I< DataVector, 3 > &x, double t, tmpl::list< Tag >) const
 Retrieve the metric variables.
 
virtual auto get_clone () const -> std::unique_ptr< InitialData >=0
 

Static Public Attributes

static constexpr Options::String help
 

Friends

bool operator== (const AlfvenWave &lhs, const AlfvenWave &rhs)
 
auto variables (const tnsr::I< DataVector, 3 > &x, double t, tmpl::list< Tags::TildeE >) const -> tuples::TaggedTuple< Tags::TildeE >
 Retrieve the EM variables at (x,t).
 
auto variables (const tnsr::I< DataVector, 3 > &x, double t, tmpl::list< Tags::TildeB >) const -> tuples::TaggedTuple< Tags::TildeB >
 Retrieve the EM variables at (x,t).
 
auto variables (const tnsr::I< DataVector, 3 > &x, double t, tmpl::list< Tags::TildeQ >) const -> tuples::TaggedTuple< Tags::TildeQ >
 Retrieve the EM variables at (x,t).
 
static auto variables (const tnsr::I< DataVector, 3 > &x, double t, tmpl::list< Tags::TildePsi >) -> tuples::TaggedTuple< Tags::TildePsi >
 Retrieve the EM variables at (x,t).
 
static auto variables (const tnsr::I< DataVector, 3 > &x, double t, tmpl::list< Tags::TildePhi >) -> tuples::TaggedTuple< Tags::TildePhi >
 Retrieve the EM variables at (x,t).
 

Detailed Description

Alfven wave propagating along \(x\) direction in flat spacetime with the wave speed \(\mu\).

This test problem was introduced in [106] with \(\mu=0\).

In the wave frame (with prime superscript), the stationary solution is given by

\begin{align*} B'_x & = B'_y = 1.0 ,\\ B'_z(x') & = \left\{\begin{array}{ll} 1.0 & \text{if } x' < -0.1 \\ 1.15 + 0.15 \sin (5\pi x') & \text{if } -0.1 < x' < 0.1 \\ 1.3 & \text{if } x' > 0.1 \end{array}\right\} ,\\ E'_x & = -B'_z ,\\ E'_y & = 0 \\ E'_z & = 1.0 \end{align*}

and

\begin{align*} q' & = \left\{\begin{array}{ll} - 0.75 \pi \cos (5 \pi x') & \text{if } -0.1 < x' < 0.1 \\ 0 & \text{otherwise} \end{array}\right\} , \\ J_x' & = 0 , \\ J_y' & = \left\{\begin{array}{ll} - 0.75 \pi \cos (5 \pi x') & \text{if } -0.1 < x' < 0.1 \\ 0 & \text{otherwise} \end{array}\right\} , \\ J_z' & = 0 . \end{align*}

Applying the Lorentz transformation, electromagnetic fields and 4-current in the grid frame at \(t=0\) are given by

\begin{align*} E_x(x) & = E'_x(\gamma x) , \\ E_y(x) & = \gamma[E'_y(\gamma x) + \mu B'_z(\gamma x)] , \\ E_z(x) & = \gamma[E'_z(\gamma x) - \mu B'_y(\gamma x)] , \\ B_x(x) & = B'_x(\gamma x), \\ B_y(x) & = \gamma[ B'_y(\gamma x) - \mu E'_z(\gamma x) ] , \\ B_z(x) & = \gamma[ B'_z(\gamma x) + \mu E'_y(\gamma x) ] . \end{align*}

and

\begin{align*} q(x) & = \gamma q'(\gamma x) , \\ J_x(x) & = \gamma \mu q'(\gamma x) , \\ J_y(x) & = J_y'(\gamma x) , \\ J_z(x) & = 0 . \end{align*}

The wave speed can be chosen any value \(-1 < \mu < 1\), and the solution at time \(t\) is \(f(x,t) = f(x-\mu t, 0)\) for any physical quantities.

Member Function Documentation

◆ get_clone()

auto ForceFree::Solutions::AlfvenWave::get_clone ( ) const -> std::unique_ptr< evolution::initial_data::InitialData >
overridevirtual

Member Data Documentation

◆ help

constexpr Options::String ForceFree::Solutions::AlfvenWave::help
staticconstexpr
Initial value:
{
"Alfven wave propagating along x direction in flat spacetime with the "
"wave speed mu"}

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