SpECTRE
v2024.05.11
|
Smooth wave propagating in Minkowski spacetime. More...
#include <SmoothFlow.hpp>
Public Types | |
using | options = typename smooth_flow::options |
Public Types inherited from RelativisticEuler::AnalyticSolution< Dim > | |
template<typename DataType > | |
using | tags = tmpl::push_back< typename gr::AnalyticSolution< Dim >::template tags< DataType >, hydro::Tags::RestMassDensity< DataType >, hydro::Tags::ElectronFraction< DataType >, hydro::Tags::SpecificInternalEnergy< DataType >, hydro::Tags::Temperature< DataType >, hydro::Tags::Pressure< DataType >, hydro::Tags::SpatialVelocity< DataType, Dim >, hydro::Tags::MagneticField< DataType, Dim >, hydro::Tags::DivergenceCleaningField< DataType >, hydro::Tags::LorentzFactor< DataType >, hydro::Tags::SpecificEnthalpy< DataType > > |
Public Member Functions | |
SmoothFlow (const SmoothFlow &)=default | |
SmoothFlow & | operator= (const SmoothFlow &)=default |
SmoothFlow (SmoothFlow &&)=default | |
SmoothFlow & | operator= (SmoothFlow &&)=default |
SmoothFlow (const std::array< double, Dim > &mean_velocity, const std::array< double, Dim > &wavevector, double pressure, double adiabatic_index, double perturbation_size) | |
auto | get_clone () const -> std::unique_ptr< evolution::initial_data::InitialData > override |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, Dim > &x, double t, tmpl::list< hydro::Tags::Temperature< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > > |
template<typename DataType > | |
auto | variables (const tnsr::I< DataType, Dim > &x, double, tmpl::list< hydro::Tags::ElectronFraction< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::ElectronFraction< DataType > > |
template<typename DataType , typename... Tags> | |
tuples::TaggedTuple< Tags... > | variables (const tnsr::I< DataType, Dim > &x, const double t, tmpl::list< Tags... >) const |
Retrieve a collection of hydro variables at (x, t) | |
template<typename DataType , typename Tag > | |
tuples::TaggedTuple< Tag > | variables (const tnsr::I< DataType, Dim > &x, double t, tmpl::list< Tag >) const |
Retrieve the metric variables. | |
template<typename DataType > | |
tuples::TaggedTuple< hydro::Tags::MagneticField< DataType, Dim > > | variables (const tnsr::I< DataType, Dim > &x, double t, tmpl::list< hydro::Tags::MagneticField< DataType, Dim > >) const |
template<typename DataType > | |
tuples::TaggedTuple< hydro::Tags::DivergenceCleaningField< DataType > > | variables (const tnsr::I< DataType, Dim > &x, double t, tmpl::list< hydro::Tags::DivergenceCleaningField< DataType > >) const |
void | pup (PUP::er &) override |
virtual auto | get_clone () const -> std::unique_ptr< InitialData >=0 |
Public Member Functions inherited from hydro::TemperatureInitialization< SmoothFlow< Dim > > | |
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 Public Attributes inherited from RelativisticEuler::AnalyticSolution< Dim > | |
static constexpr size_t | volume_dim = Dim |
Friends | |
template<size_t SpatialDim> | |
bool | operator== (const SmoothFlow< SpatialDim > &lhs, const SmoothFlow< SpatialDim > &rhs) |
Smooth wave propagating in Minkowski spacetime.
The relativistic Euler equations in Minkowski spacetime accept a solution with constant pressure and uniform spatial velocity provided that the rest mass density satisfies the advection equation
\begin{align*} \partial_t\rho + v^i\partial_i\rho = 0, \end{align*}
and the specific internal energy is a function of the rest mass density only, \(\epsilon = \epsilon(\rho)\). For testing purposes, this class implements this solution for the case where \(\rho\) is a sine wave. The user specifies the mean flow velocity of the fluid, the wavevector of the density profile, and the amplitude \(A\) of the density profile. In Cartesian coordinates \((x, y, z)\), and using dimensionless units, the primitive variables at a given time \(t\) are then
\begin{align*} \rho(\vec{x},t) &= 1 + A \sin(\vec{k}\cdot(\vec{x} - \vec{v}t)) \\ \vec{v}(\vec{x},t) &= [v_x, v_y, v_z]^{T},\\ P(\vec{x},t) &= P, \\ \epsilon(\vec{x}, t) &= \frac{P}{(\gamma - 1)\rho}\\ \end{align*}
where we have assumed \(\epsilon\) and \(\rho\) to be related through an equation mathematically equivalent to the equation of state of an ideal gas, where the pressure is held constant.
|
overridevirtual |
Implements evolution::initial_data::InitialData.
|
staticconstexpr |