SpECTRE  v2026.09.05
Loading...
Searching...
No Matches
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

Public Member Functions

 RotatingDipole (const RotatingDipole &)=default
RotatingDipole & operator= (const RotatingDipole &)=default
 RotatingDipole (RotatingDipole &&)=default
RotatingDipole & operator= (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
Public Member Functions inherited from evolution::initial_data::InitialData
virtual const InitialData & unwrap () const
 Unwrap wrapper types (e.g. WithNoise, which wraps analytic initial data and adds random noise) to reach the underlying analytic solution or data.

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 [154]

\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 [196].

Member Typedef Documentation

◆ options

using ForceFree::AnalyticData::RotatingDipole::options
Initial value:

Member Function Documentation

◆ get_clone()

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

Member Data Documentation

◆ help

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