SpECTRE
v2024.05.11
|
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 | |
AlfvenWave & | operator= (const AlfvenWave &)=default |
AlfvenWave (AlfvenWave &&)=default | |
AlfvenWave & | operator= (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). | |
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.
|
overridevirtual |
Implements evolution::initial_data::InitialData.
|
staticconstexpr |