SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
ForceFree::Solutions::AlfvenWave Class Reference

Alfven wave propagating along x direction in flat spacetime with the wave speed μ. More...

#include <AlfvenWave.hpp>

Classes

struct  WaveSpeed
 The wave speed. More...
 

Public Types

using options = implementation defined
 

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 μ.

This test problem was introduced in with μ=0.

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

Bx=By=1.0,Bz(x)={1.0if x<0.11.15+0.15sin(5πx)if 0.1<x<0.11.3if x>0.1},Ex=Bz,Ey=0Ez=1.0

and

q={0.75πcos(5πx)if 0.1<x<0.10otherwise},Jx=0,Jy={0.75πcos(5πx)if 0.1<x<0.10otherwise},Jz=0.

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

Ex(x)=Ex(γx),Ey(x)=γ[Ey(γx)+μBz(γx)],Ez(x)=γ[Ez(γx)μBy(γx)],Bx(x)=Bx(γx),By(x)=γ[By(γx)μEz(γx)],Bz(x)=γ[Bz(γx)+μEy(γx)].

and

q(x)=γq(γx),Jx(x)=γμq(γx),Jy(x)=Jy(γx),Jz(x)=0.

The wave speed can be chosen any value 1<μ<1, and the solution at time t is f(x,t)=f(xμ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: