|
SpECTRE
2021.08.02
|
Analytic initial data for a cylindrical or spherical blast wave. More...
#include <BlastWave.hpp>
Classes | |
| struct | AdiabaticIndex |
| The adiabatic index of the ideal fluid. More... | |
| struct | GeometryOption |
| The geometry of the blast wave, i.e. Cylindrical or Spherical. More... | |
| struct | InnerDensity |
| Density at radii less than InnerRadius. More... | |
| struct | InnerPressure |
| Pressure at radii less than InnerRadius. More... | |
| struct | InnerRadius |
| Inside InnerRadius, density is InnerDensity. More... | |
| struct | MagneticField |
| The x,y,z components of the uniform magnetic field threading the matter. More... | |
| struct | OuterDensity |
| Density at radii greater than OuterRadius. More... | |
| struct | OuterPressure |
| Pressure at radii greater than OuterRadius. More... | |
| struct | OuterRadius |
| Outside OuterRadius, density is OuterDensity. More... | |
Public Types | |
| enum class | Geometry { Cylindrical , Spherical } |
| using | equation_of_state_type = EquationsOfState::IdealFluid< true > |
| using | options = tmpl::list< InnerRadius, OuterRadius, InnerDensity, OuterDensity, InnerPressure, OuterPressure, MagneticField, AdiabaticIndex, GeometryOption > |
Public Types inherited from grmhd::AnalyticDataBase | |
| template<typename DataType > | |
| using | tags = tmpl::push_back< typename gr::AnalyticSolution< 3 >::template tags< DataType >, hydro::Tags::RestMassDensity< DataType >, hydro::Tags::SpecificInternalEnergy< DataType >, hydro::Tags::Pressure< DataType >, hydro::Tags::SpatialVelocity< DataType, 3 >, hydro::Tags::MagneticField< DataType, 3 >, hydro::Tags::DivergenceCleaningField< DataType >, hydro::Tags::LorentzFactor< DataType >, hydro::Tags::SpecificEnthalpy< DataType > > |
Public Member Functions | |
| BlastWave (const BlastWave &)=delete | |
| BlastWave & | operator= (const BlastWave &)=delete |
| BlastWave (BlastWave &&) noexcept=default | |
| BlastWave & | operator= (BlastWave &&) noexcept=default |
| BlastWave (double inner_radius, double outer_radius, double inner_density, double outer_density, double inner_pressure, double outer_pressure, const std::array< double, 3 > &magnetic_field, double adiabatic_index, Geometry geometry, const Options::Context &context={}) | |
| BlastWave (CkMigrateMessage *) noexcept | |
| template<typename DataType , typename... Tags> | |
| tuples::TaggedTuple< Tags... > | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tags... >) const noexcept |
| Retrieve a collection of hydrodynamic variables at position x. | |
| template<typename DataType , typename Tag > | |
| tuples::TaggedTuple< Tag > | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< Tag >) const noexcept |
| Retrieve the metric variables. | |
| const EquationsOfState::IdealFluid< true > & | equation_of_state () const noexcept |
| void | pup (PUP::er &) noexcept |
| template<typename DataType > | |
| auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::RestMassDensity< DataType > >) const noexcept -> tuples::TaggedTuple< hydro::Tags::RestMassDensity< DataType > > |
| Retrieve the GRMHD variables at a given position. | |
| template<typename DataType > | |
| auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpecificInternalEnergy< DataType > >) const noexcept -> tuples::TaggedTuple< hydro::Tags::SpecificInternalEnergy< DataType > > |
| Retrieve the GRMHD variables at a given position. | |
| template<typename DataType > | |
| auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::Pressure< DataType > >) const noexcept -> tuples::TaggedTuple< hydro::Tags::Pressure< DataType > > |
| Retrieve the GRMHD variables at a given position. | |
| template<typename DataType > | |
| auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpatialVelocity< DataType, 3 > >) const noexcept -> tuples::TaggedTuple< hydro::Tags::SpatialVelocity< DataType, 3 > > |
| Retrieve the GRMHD variables at a given position. | |
| template<typename DataType > | |
| auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::MagneticField< DataType, 3 > >) const noexcept -> tuples::TaggedTuple< hydro::Tags::MagneticField< DataType, 3 > > |
| Retrieve the GRMHD variables at a given position. | |
| template<typename DataType > | |
| auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::DivergenceCleaningField< DataType > >) const noexcept -> tuples::TaggedTuple< hydro::Tags::DivergenceCleaningField< DataType > > |
| Retrieve the GRMHD variables at a given position. | |
| template<typename DataType > | |
| auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::LorentzFactor< DataType > >) const noexcept -> tuples::TaggedTuple< hydro::Tags::LorentzFactor< DataType > > |
| Retrieve the GRMHD variables at a given position. | |
| template<typename DataType > | |
| auto | variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::SpecificEnthalpy< DataType > >) const noexcept -> tuples::TaggedTuple< hydro::Tags::SpecificEnthalpy< DataType > > |
| Retrieve the GRMHD variables at a given position. | |
Static Public Attributes | |
| static constexpr Options::String | help |
Static Public Attributes inherited from grmhd::AnalyticDataBase | |
| static constexpr size_t | volume_dim = 3_st |
Friends | |
| bool | operator== (const BlastWave &lhs, const BlastWave &rhs) noexcept |
| bool | operator!= (const BlastWave &lhs, const BlastWave &rhs) noexcept |
Analytic initial data for a cylindrical or spherical blast wave.
This class implements analytic initial data for a cylindrical blast wave, as described, e.g., in [64] Sec. 6.2.3. A uniform magnetic field threads an ideal fluid. The solution begins with material at fixed (typically high) density and pressure at rest inside a cylinder of radius \(r < r_{\rm in}\) and material at fixed (typically low) density and pressure at rest in a cylindrical shell with radius \(r > r_{\rm out}\). In the region \( r_{\rm in} < r < r_{\rm out}\), the solution transitions such that the logarithms of the density and pressure vary linearly. E.g., if \(\rho(r < r_{\rm in}) = \rho_{\rm in}\) and \(\rho(r > r_{\rm out}) = \rho_{\rm out}\), then
\[ \log \rho = [(r_{\rm in} - r) \log(\rho_{\rm out}) + (r - r_{\rm out}) \log(\rho_{\rm in})] / (r_{\rm in} - r_{\rm out}). \]
Note that the cylinder's axis is the \(z\) axis. To evolve this analytic initial data, use a cubic or cylindrical domain with periodic boundary conditions applied to the outer boundaries whose normals are parallel or antiparallel to the z axis. In the transverse (e.g., x and y) dimensions, the domain should be large enough that the blast wave doesn't reach the boundary at the final time. E.g., if InnerRadius = 0.8, OuterRadius = 1.0, and the final time is 4.0, a good domain extends from (x,y)=(-6.0, -6.0) to (x,y)=(6.0, 6.0).
An analogous problem with spherical geometry has also been used [23] [24] [27]. The magnetic field is chosen to be in the z-direction instead of the x-direction.
|
staticconstexpr |