|
SpECTRE
2021.08.02
|
Analytic initial data for a magnetic rotor. More...
#include <MagneticRotor.hpp>
Classes | |
| struct | AdiabaticIndex |
| The adiabatic index of the ideal fluid. More... | |
| struct | AngularVelocity |
| Angular velocity inside the rotor. More... | |
| struct | BackgroundDensity |
| Density outside the rotor. More... | |
| struct | MagneticField |
| The x,y,z components of the uniform magnetic field threading the matter. More... | |
| struct | Pressure |
| Uniform pressure inside and outside the rotor. More... | |
| struct | RotorDensity |
| Density inside the rotor. More... | |
| struct | RotorRadius |
| Radius of the rotor. More... | |
Public Types | |
| using | equation_of_state_type = EquationsOfState::IdealFluid< true > |
| using | options = tmpl::list< RotorRadius, RotorDensity, BackgroundDensity, Pressure, AngularVelocity, MagneticField, AdiabaticIndex > |
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 | |
| MagneticRotor (const MagneticRotor &)=delete | |
| MagneticRotor & | operator= (const MagneticRotor &)=delete |
| MagneticRotor (MagneticRotor &&) noexcept=default | |
| MagneticRotor & | operator= (MagneticRotor &&) noexcept=default |
| MagneticRotor (double rotor_radius, double rotor_density, double background_density, double pressure, double angular_velocity, const std::array< double, 3 > &magnetic_field, double adiabatic_index, const Options::Context &context={}) | |
| MagneticRotor (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 MagneticRotor &lhs, const MagneticRotor &rhs) noexcept |
| bool | operator!= (const MagneticRotor &lhs, const MagneticRotor &rhs) noexcept |
Analytic initial data for a magnetic rotor.
This is a test first described in [4] for classical MHD and later generalised to relativistic MHD in [32]
This effectively 2D test initially consists of an infinitely long cylinder of radius RotorRadius rotating about the z-axis with the given AngularVelocity. The rest mass density of the fluid inside the rotor, RotorDensity, is higher than the BackgroundDensity outside of the rotor. The fluid is at a constant Pressure. The rotor is embedded in a constant MagneticField (usually taken to be along the x-axis). The fluid is an ideal fluid with the given AdiabaticIndex. Evolving the initial data, magnetic braking will slow down the rotor, while dragging the magnetic field lines.
The standard test setup is done on a unit cube \([-0.5,0.5]^3\) with the following values given for the options:
Note that [113] uses different parameters,
The magnetic field in the disk should rotate by about 90 degrees by t = 0.4.
|
staticconstexpr |