SpECTRE  v2026.09.05
Loading...
Searching...
No Matches
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
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.
Public Member Functions inherited from evolution::initial_data::InitialData
virtual const InitialData & unwrap () const
 Unwrap wrapper types (e.g. WithNoise, which wraps analytic initial data and adds random noise) to reach the underlying analytic solution or data.

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 [123] 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

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:
  • src/PointwiseFunctions/AnalyticSolutions/ForceFree/AlfvenWave.hpp