SpECTRE  v2024.03.19
grmhd::AnalyticData::MagneticFieldLoop Class Reference

Analytic initial data for an advecting magnetic field loop. More...

#include <MagneticFieldLoop.hpp>

Classes

struct  AdiabaticIndex
 The adiabatic index for the ideal fluid. More...
 
struct  AdvectionVelocity
 The fluid velocity. More...
 
struct  InnerRadius
 The inner radius of the magnetic loop. More...
 
struct  MagFieldStrength
 The strength of the magnetic field. More...
 
struct  OuterRadius
 The outer radius of the magnetic loop. More...
 
struct  Pressure
 The pressure throughout the fluid. More...
 
struct  RestMassDensity
 The rest mass density throughout the fluid. More...
 

Public Types

using equation_of_state_type = EquationsOfState::IdealFluid< true >
 
using options = tmpl::list< Pressure, RestMassDensity, AdiabaticIndex, AdvectionVelocity, MagFieldStrength, InnerRadius, OuterRadius >
 
- 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::ElectronFraction< DataType >, hydro::Tags::SpecificInternalEnergy< DataType >, hydro::Tags::Temperature< 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

 MagneticFieldLoop (const MagneticFieldLoop &)=default
 
MagneticFieldLoopoperator= (const MagneticFieldLoop &)=default
 
 MagneticFieldLoop (MagneticFieldLoop &&)=default
 
MagneticFieldLoopoperator= (MagneticFieldLoop &&)=default
 
 MagneticFieldLoop (double pressure, double rest_mass_density, double adiabatic_index, const std::array< double, 3 > &advection_velocity, double magnetic_field_magnitude, double inner_radius, double outer_radius, const Options::Context &context={})
 
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, tmpl::list< Tag1, Tag2, Tags... >) const
 Retrieve a collection of hydrodynamic variables at position x.
 
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, tmpl::list< Tag >) const
 Retrieve the metric variables.
 
const EquationsOfState::IdealFluid< true > & equation_of_state () const
 
void pup (PUP::er &) override
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::RestMassDensity< DataType > >) const -> 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::ElectronFraction< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::ElectronFraction< 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 -> 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 -> 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 -> 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 -> 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 -> 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 -> 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 -> tuples::TaggedTuple< hydro::Tags::SpecificEnthalpy< DataType > >
 Retrieve the GRMHD variables at a given position.
 
template<typename DataType >
auto variables (const tnsr::I< DataType, 3 > &x, tmpl::list< hydro::Tags::Temperature< DataType > >) const -> tuples::TaggedTuple< hydro::Tags::Temperature< DataType > >
 Retrieve the GRMHD variables at a given position.
 
virtual auto get_clone () const -> std::unique_ptr< InitialData >=0
 
- Public Member Functions inherited from hydro::TemperatureInitialization< MagneticFieldLoop >
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 grmhd::AnalyticDataBase
static constexpr size_t volume_dim = 3_st
 

Friends

bool operator== (const MagneticFieldLoop &lhs, const MagneticFieldLoop &rhs)
 
bool operator!= (const MagneticFieldLoop &lhs, const MagneticFieldLoop &rhs)
 

Detailed Description

Analytic initial data for an advecting magnetic field loop.

This test, originally proposed in [72] and presented in a slightly modified form by [125], a region with annular cross section with the specified InnerRadius and OuterRadius is given a non-zero azimuthal magnetic field of constant magnitude MagFieldStrength with zero magnetic field outside the loop. Inside the InnerRadius the magnetic field strength falls to zero quadratically. The loop is embedded in an ideal fluid with the given AdiabaticIndex, RestMassDensity and Pressure with a uniform AdvectionVelocity. The magnetic field loop should advect across the grid, maintaining its shape and strength, as long as the magnetic pressure is negligible compared to the thermal pressure.

This test diagnoses how well the evolution scheme preserves the no-monopole condition, as well as the diffusivity of the scheme.

The standard test setup is done on \(x \in [-1,1]\), \(y \in [-0.5, 0.5]\), with periodic boundary conditions and with the following values given for the options:

Member Function Documentation

◆ get_clone()

auto grmhd::AnalyticData::MagneticFieldLoop::get_clone ( ) const -> std::unique_ptr< evolution::initial_data::InitialData >
overridevirtual

Member Data Documentation

◆ help

constexpr Options::String grmhd::AnalyticData::MagneticFieldLoop::help
staticconstexpr
Initial value:
= {
"Periodic advection of a magnetic field loop in Minkowski."}

The documentation for this class was generated from the following file: