SpECTRE
v2025.03.17
|
Circularly polarized Alfvén wave solution in Minkowski spacetime travelling along a background magnetic field. More...
#include <AlfvenWave.hpp>
Classes | |
struct | AdiabaticIndex |
The adiabatic index for the ideal fluid. More... | |
struct | BackgroundMagneticField |
The background static magnetic field vector. More... | |
struct | ElectronFraction |
The constant electron fraction throughout the fluid. More... | |
struct | Pressure |
The constant pressure throughout the fluid. More... | |
struct | RestMassDensity |
The constant rest mass density throughout the fluid. More... | |
struct | WaveMagneticField |
The sinusoidal magnetic field vector associated with the Alfvén wave, perpendicular to the background magnetic field vector. More... | |
struct | WaveNumber |
The wave number of the profile. More... | |
Public Types | |
using | equation_of_state_type = EquationsOfState::IdealFluid< true > |
using | options = implementation defined |
![]() | |
template<typename DataType > | |
using | tags = implementation defined |
Public Member Functions | |
AlfvenWave (const AlfvenWave &)=default | |
AlfvenWave & | operator= (const AlfvenWave &)=default |
AlfvenWave (AlfvenWave &&)=default | |
AlfvenWave & | operator= (AlfvenWave &&)=default |
AlfvenWave (double wavenumber, double pressure, double rest_mass_density, double electron_fraction, double adiabatic_index, const std::array< double, 3 > &background_magnetic_field, const std::array< double, 3 > &wave_magnetic_field) | |
auto | get_clone () const -> std::unique_ptr< evolution::initial_data::InitialData > override |
template<typename DataType , typename Tag1 , typename Tag2 , typename... Tags> | |
tuples::TaggedTuple< Tag1, Tag2, Tags... > | variables (const tnsr::I< DataType, 3 > &x, double t, tmpl::list< Tag1, Tag2, Tags... >) const |
Retrieve a collection of hydro variables at (x, t) | |
template<typename DataType , typename Tag , Requires< tmpl::list_contains_v< gr::analytic_solution_tags< 3, DataType >, Tag > > = nullptr> | |
tuples::TaggedTuple< Tag > | variables (const tnsr::I< DataType, 3 > &x, double t, tmpl::list< Tag >) const |
Retrieve the metric variables. | |
void | pup (PUP::er &) override |
const EquationsOfState::IdealFluid< true > & | equation_of_state () const |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, double t, tmpl::list< hydro::Tags::RestMassDensity< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::RestMassDensity< DataType > > |
Retrieve hydro variable at (x, t) | |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, double t, tmpl::list< hydro::Tags::ElectronFraction< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::ElectronFraction< DataType > > |
Retrieve hydro variable at (x, t) | |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, double t, tmpl::list< hydro::Tags::SpecificInternalEnergy< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::SpecificInternalEnergy< DataType > > |
Retrieve hydro variable at (x, t) | |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, double, tmpl::list< hydro::Tags::Pressure< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Pressure< DataType > > |
Retrieve hydro variable at (x, t) | |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, double, tmpl::list< hydro::Tags::SpatialVelocity< DataType, 3 > >) const -> tuples::TaggedTuple< hydro::Tags::SpatialVelocity< DataType, 3 > > |
Retrieve hydro variable at (x, t) | |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, double, tmpl::list< hydro::Tags::MagneticField< DataType, 3 > >) const -> tuples::TaggedTuple< hydro::Tags::MagneticField< DataType, 3 > > |
Retrieve hydro variable at (x, t) | |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, double, tmpl::list< hydro::Tags::DivergenceCleaningField< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::DivergenceCleaningField< DataType > > |
Retrieve hydro variable at (x, t) | |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, double, tmpl::list< hydro::Tags::LorentzFactor< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::LorentzFactor< DataType > > |
Retrieve hydro variable at (x, t) | |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, double t, tmpl::list< hydro::Tags::SpecificEnthalpy< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::SpecificEnthalpy< DataType > > |
Retrieve hydro variable at (x, t) | |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, 3 > &x, double t, tmpl::list< hydro::Tags::Temperature< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > > |
Retrieve hydro variable at (x, t) | |
virtual auto | get_clone () const -> std::unique_ptr< InitialData >=0 |
![]() | |
auto | variables (const tnsr::I< DataType, Dim > &x, tmpl::list< hydro::Tags::Temperature< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > > |
auto | variables (const tnsr::I< DataType, Dim > &x, const double t, tmpl::list< hydro::Tags::Temperature< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > > |
auto | variables (ExtraVars &extra_variables, const tnsr::I< DataType, Dim > &x, Args &... extra_args, tmpl::list< hydro::Tags::Temperature< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > > |
Static Public Attributes | |
static constexpr Options::String | help |
![]() | |
static constexpr size_t | volume_dim = 3_st |
Protected Member Functions | |
template<typename DataType > | |
DataType | k_dot_x_minus_vt (const tnsr::I< DataType, 3 > &x, double t) const |
Protected Attributes | |
double | wavenumber_ = std::numeric_limits<double>::signaling_NaN() |
double | pressure_ = std::numeric_limits<double>::signaling_NaN() |
double | rest_mass_density_ = std::numeric_limits<double>::signaling_NaN() |
double | electron_fraction_ = std::numeric_limits<double>::signaling_NaN() |
double | adiabatic_index_ = std::numeric_limits<double>::signaling_NaN() |
std::array< double, 3 > | background_magnetic_field_ |
std::array< double, 3 > | wave_magnetic_field_ |
EquationsOfState::IdealFluid< true > | equation_of_state_ {} |
tnsr::I< double, 3 > | initial_unit_vector_along_background_magnetic_field_ {} |
tnsr::I< double, 3 > | initial_unit_vector_along_wave_magnetic_field_ {} |
tnsr::I< double, 3 > | initial_unit_vector_along_wave_electric_field_ {} |
double | magnitude_B0_ = std::numeric_limits<double>::signaling_NaN() |
double | magnitude_B1_ = std::numeric_limits<double>::signaling_NaN() |
double | magnitude_E_ = std::numeric_limits<double>::signaling_NaN() |
double | alfven_speed_ = std::numeric_limits<double>::signaling_NaN() |
double | fluid_speed_ = std::numeric_limits<double>::signaling_NaN() |
gr::Solutions::Minkowski< 3 > | background_spacetime_ {} |
Friends | |
bool | operator== (const AlfvenWave &lhs, const AlfvenWave &rhs) |
Circularly polarized Alfvén wave solution in Minkowski spacetime travelling along a background magnetic field.
An analytic solution to the 3-D GRMHD system. The user specifies the wavenumber
We define the auxiliary velocities:
The Alfvén wave phase speed that solves the GRMHD equations, even for finite amplitudes [49], is given by:
The amplitude of the fluid velocity is given by:
The electromagnetic field vectors define a set of basis vectors:
We also define the auxiliary variable for the phase
In Cartesian coordinates
Note that the phase speed is not the characteristic Alfvén speed
Where
|
overridevirtual |
Implements evolution::initial_data::InitialData.
|
protected |
|
staticconstexpr |
|
protected |