SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
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
Public Types inherited from grmhd::AnalyticDataBase
template<typename DataType>
using tags

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.
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 > >

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 [86] and presented in a slightly modified form by [145], 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 Typedef Documentation

◆ options

using grmhd::AnalyticData::MagneticFieldLoop::options
Initial value:
Definition BinaryCompactObject.hpp:368
The adiabatic index of the ideal fluid.
Definition BlastWave.hpp:120
The strength of the magnetic field.
Definition BondiHoyleAccretion.hpp:113
The rest mass density of the fluid far from the black hole.
Definition BondiHoyleAccretion.hpp:100
The initial (constant) pressure of the fluid.
Definition KhInstability.hpp:138
The fluid velocity.
Definition MagneticFieldLoop.hpp:92

Member Function Documentation

◆ get_clone()

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

Member Data Documentation

◆ help

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:
  • src/PointwiseFunctions/AnalyticData/GrMhd/MagneticFieldLoop.hpp