SpECTRE  v2024.04.12
ForceFree::AnalyticData::RotatingDipole Class Reference

The magnetosphere of an isolated rotating star with dipolar initial magnetic field in the flat spacetime. This is a toy model of a pulsar magnetosphere. More...

#include <RotatingDipole.hpp>

Classes

struct  AngularVelocity
 
struct  Delta
 
struct  TiltAngle
 
struct  Varpi0
 
struct  VectorPotentialAmplitude
 

Public Types

using options = tmpl::list< VectorPotentialAmplitude, Varpi0, Delta, AngularVelocity, TiltAngle >
 

Public Member Functions

 RotatingDipole (const RotatingDipole &)=default
 
RotatingDipoleoperator= (const RotatingDipole &)=default
 
 RotatingDipole (RotatingDipole &&)=default
 
RotatingDipoleoperator= (RotatingDipole &&)=default
 
 RotatingDipole (double vector_potential_amplitude, double varpi0, double delta, double angular_velocity, double tilt_angle, const Options::Context &context={})
 
auto get_clone () const -> std::unique_ptr< evolution::initial_data::InitialData > override
 
void pup (PUP::er &p) override
 
template<typename... Tags>
tuples::TaggedTuple< Tags... > variables (const tnsr::I< DataVector, 3 > &x, tmpl::list< Tags... >) const
 Retrieve a collection of EM variables at position x.
 
template<typename Tag >
tuples::TaggedTuple< Tag > variables (const tnsr::I< DataVector, 3 > &x, tmpl::list< Tag >) const
 Retrieve the metric variables.
 
double angular_velocity () const
 
virtual auto get_clone () const -> std::unique_ptr< InitialData >=0
 

Static Public Member Functions

static std::optional< Scalar< DataVector > > interior_mask (const tnsr::I< DataVector, 3, Frame::Inertial > &x)
 

Static Public Attributes

static constexpr Options::String help
 

Friends

bool operator== (const RotatingDipole &lhs, const RotatingDipole &rhs)
 
auto variables (const tnsr::I< DataVector, 3 > &coords, tmpl::list< Tags::TildeB >) const -> tuples::TaggedTuple< Tags::TildeB >
 Retrieve the EM variables.
 
static auto variables (const tnsr::I< DataVector, 3 > &coords, tmpl::list< Tags::TildeE >) -> tuples::TaggedTuple< Tags::TildeE >
 Retrieve the EM variables.
 
static auto variables (const tnsr::I< DataVector, 3 > &coords, tmpl::list< Tags::TildePsi >) -> tuples::TaggedTuple< Tags::TildePsi >
 Retrieve the EM variables.
 
static auto variables (const tnsr::I< DataVector, 3 > &coords, tmpl::list< Tags::TildePhi >) -> tuples::TaggedTuple< Tags::TildePhi >
 Retrieve the EM variables.
 
static auto variables (const tnsr::I< DataVector, 3 > &coords, tmpl::list< Tags::TildeQ >) -> tuples::TaggedTuple< Tags::TildeQ >
 Retrieve the EM variables.
 

Detailed Description

The magnetosphere of an isolated rotating star with dipolar initial magnetic field in the flat spacetime. This is a toy model of a pulsar magnetosphere.

Note
Coordinate radius of the star is rescaled to 1.0 in code units.

The vector potential of the initial magnetic field has the form [132]

\begin{equation} A_\phi = \frac{A_0 \varpi_0 (x^2+y^2)}{(r^2 + \delta^2)^{3/2}} \end{equation}

where \(A_0\) is the vector potential amplitude, \(\varpi_0\) is a constant with the unit of length, \(r^2 = x^2 + y^2 + z^2\), and \(\delta\) is a small number for regularization of the dipole magnetic field at the origin ( \(r=0\)).

In the Cartesian coordinates, components of densitized magnetic fields are given as

\begin{align} \tilde{B}^x & = A_0 \varpi_0 \frac{3xz}{(r^2 + \delta^2)^{5/2}} , \\ \tilde{B}^y & = A_0 \varpi_0 \frac{3yz}{(r^2 + \delta^2)^{5/2}} , \\ \tilde{B}^z & = A_0 \varpi_0 \frac{3z^2 - r^2 + 2\delta^2}{(r^2 + \delta^2)^{5/2}} . \end{align}

Rotation of the star is switched on at \(t=0\) with the angular velocity specified in the input file. The grid points inside the star ( \(x^2 + y^2 + z^2 < 1.0\)) are identified as the interior and masked by interior_mask() member function. In the masked region we impose the MHD condition \(\mathbf{E} + \mathbf{v} \times \mathbf{B} = 0\), where the velocity field is given by \(\mathbf{v} \equiv \Omega \hat{z} \times \mathbf{r}\). By this means, initial dipolar magnetic field is effectively "anchored" inside the star while electromagnetic fields are evolved self-consistently outside the star.

Note
We impose the MHD condition stated above and \(q=0\) inside the masked interior region during the evolution phase. While this initial data class sets both electric field and charge density to zero at \(t=0\), those variables are immediately overwritten with proper values ( \(\mathbf{E} = -\mathbf{v}\times\mathbf{B}\), \(q=0\)) once the simulation begins.

When the system reaches a stationary state, magnetic field lines far from the star are opening up while the field lines close to the star are corotating. The light cylinder and the Y-point, which marks the boundary between these two regions with different magnetic field topology, are expected to be formed at \(r_\text{LC} = c/\Omega\).

The option TiltAngle controls the angle \(\alpha\) between the rotation axis ( \(z\)) and the magnetic axis of initial magnetic field on the \(x-z\) plane. An aligned rotator ( \(\alpha = 0\)) is a common test problem for FFE codes, whereas an oblique rotator ( \(\alpha \neq 0\)) is a more realistic model of pulsars [170].

Member Function Documentation

◆ get_clone()

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

Member Data Documentation

◆ help

constexpr Options::String ForceFree::AnalyticData::RotatingDipole::help
staticconstexpr
Initial value:
{
"Magnetosphere of an isolated rotating star with dipole magnetic field."}

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