SpECTRE  v2024.03.19
ForceFree::System Struct Reference

General relativistic force-free electrodynamics (GRFFE) system with divergence cleaning. More...

#include <System.hpp>

Public Types

using boundary_conditions_base = BoundaryConditions::BoundaryCondition
 
using boundary_correction_base = BoundaryCorrections::BoundaryCorrection
 
using variables_tag = ::Tags::Variables< tmpl::list< Tags::TildeE, Tags::TildeB, Tags::TildePsi, Tags::TildePhi, Tags::TildeQ > >
 
using flux_variables = tmpl::list< Tags::TildeE, Tags::TildeB, Tags::TildePsi, Tags::TildePhi, Tags::TildeQ >
 
using non_conservative_variables = tmpl::list<>
 
using gradient_variables = tmpl::list<>
 
using spacetime_variables_tag = ::Tags::Variables< gr::tags_for_hydro< volume_dim, DataVector > >
 
using flux_spacetime_variables_tag = ::Tags::Variables< tmpl::list< gr::Tags::Lapse< DataVector >, gr::Tags::Shift< DataVector, 3 >, gr::Tags::SqrtDetSpatialMetric< DataVector >, gr::Tags::SpatialMetric< DataVector, 3 >, gr::Tags::InverseSpatialMetric< DataVector, 3 > > >
 
using compute_volume_time_derivative_terms = TimeDerivativeTerms
 
using compute_largest_characteristic_speed = Tags::LargestCharacteristicSpeedCompute
 
using inverse_spatial_metric_tag = gr::Tags::InverseSpatialMetric< DataVector, volume_dim >
 

Static Public Attributes

static constexpr bool is_in_flux_conservative_form = true
 
static constexpr bool has_primitive_and_conservative_vars = false
 
static constexpr size_t volume_dim = 3
 

Detailed Description

General relativistic force-free electrodynamics (GRFFE) system with divergence cleaning.

For electromagnetism in a curved spacetime, Maxwell equations are given as

\begin{align*} \nabla_a F^{ab} &= -J^b,\\ \nabla_a ^* F^{ab} &= 0. \end{align*}

where \(F^{ab}\) is the electromagnetic field tensor, \(^*F^{ab}\) is its dual \(^*F^{ab} = \epsilon^{abcd}F_{cd} / 2\), and \(J^a\) is the 4-current.

Note
  • We are using the electromagnetic variables with the scaling convention that the factor \(4\pi\) does not appear in Maxwell equations and the stress-energy tensor of the EM fields (geometrized Heaviside-Lorentz units).
  • We adopt following definition of the Levi-Civita tensor by [127]

    \begin{align*} \epsilon_{abcd} &= \sqrt{-g} \, [abcd] ,\\ \epsilon^{abcd} &= -\frac{1}{\sqrt{-g}} \, [abcd] , \end{align*}

    where \(g\) is the determinant of spacetime metric, and \([abcd]=\pm 1\) is the antisymmetric symbol with \([0123]=+1\).

In SpECTRE, we evolve 'extended' (or augmented) version of Maxwell equations with two divergence cleaning scalar fields \(\psi\) and \(\phi\) :

\begin{align*} \nabla_a(F^{ab}+g^{ab}\psi) & = -J^b + \kappa_\psi n^b \psi \\ \nabla_a(^* F^{ab}+ g^{ab}\phi) & = \kappa_\phi n^b \phi \end{align*}

which reduce to the original Maxwell equations when \(\psi=\phi=0\). For damping constants \(\kappa_{\psi, \phi} > 0\), Gauss constraint violations are damped with timescales \(\kappa_{\psi,\phi}^{-1}\) and propagated away.

We decompose the EM field tensor as follows

\begin{align*} F^{ab} = n^a E^b - n^b E^a - \epsilon^{abcd}B_c n_d, \end{align*}

where \(n^a\) is the normal to spatial hypersurface, \(E^a\) and \(B^a\) are electric and magnetic fields.

Evolved variables are

\begin{align*} \mathbf{U} = \sqrt{\gamma}\left[\,\begin{matrix} E^i \\ B^i \\ \psi \\ \phi \\ q \\ \end{matrix}\,\right] \equiv \left[\,\,\begin{matrix} \tilde{E}^i \\ \tilde{B}^i \\ \tilde{\psi} \\ \tilde{\phi} \\ \tilde{q} \\ \end{matrix}\,\,\right] \end{align*}

where \(E^i\) is electric field, \(B^i\) is magnetic field, \(\psi\) is electric divergence cleaning field, \(\phi\) is magnetic divergence cleaning field, \(q\equiv-n_aJ^a\) is electric charge density, and \(\gamma\) is the determinant of spatial metric.

Corresponding fluxes \(\mathbf{F}^j\) are

\begin{align*} F^j(\tilde{E}^i) & = -\beta^j\tilde{E}^i + \alpha (\gamma^{ij}\tilde{\psi} - \epsilon^{ijk}_{(3)}\tilde{B}_k) \\ F^j(\tilde{B}^i) & = -\beta^j\tilde{B}^i + \alpha (\gamma^{ij}\tilde{\phi} + \epsilon^{ijk}_{(3)}\tilde{E}_k) \\ F^j(\tilde{\psi}) & = -\beta^j \tilde{\psi} + \alpha \tilde{E}^j \\ F^j(\tilde{\phi}) & = -\beta^j \tilde{\phi} + \alpha \tilde{B}^j \\ F^j(\tilde{q}) & = \tilde{J}^j - \beta^j \tilde{q} \end{align*}

and source terms are

\begin{align*} S(\tilde{E}^i) &= -\tilde{J}^i - \tilde{E}^j \partial_j \beta^i + \tilde{\psi} ( \gamma^{ij} \partial_j \alpha - \alpha \gamma^{jk} \Gamma^i_{jk} ) \\ S(\tilde{B}^i) &= -\tilde{B}^j \partial_j \beta^i + \tilde{\phi} ( \gamma^{ij} \partial_j \alpha - \alpha \gamma^{jk} \Gamma^i_{jk} ) \\ S(\tilde{\psi}) &= \tilde{E}^k \partial_k \alpha + \alpha \tilde{q} - \alpha \tilde{\phi} ( K + \kappa_\phi ) \\ S(\tilde{\phi}) &= \tilde{B}^k \partial_k \alpha - \alpha \tilde{\phi} (K + \kappa_\phi ) \\ S(\tilde{q}) &= 0 \end{align*}

where \(\tilde{J}^i \equiv \alpha \sqrt{\gamma}J^i\).

See the documentation of Fluxes and Sources for further details.

In addition to Maxwell equations, general relativistic force-free electrodynamics (GRFFE) assumes the following which are called the force-free (FF) conditions.

\begin{align*} F^{ab}J_b & = 0, \\ ^*F^{ab}F_{ab} & = 0, \\ F^{ab}F_{ab} & > 0. \end{align*}

In terms of electric and magnetic fields, the FF conditions above read

\begin{align*} E_iJ^i & = 0 , \\ qE^i + \epsilon_{(3)}^{ijk} J_jB_k & = 0 , \\ B_iE^i & = 0 , \\ B^2 - E^2 & > 0. \end{align*}

where \(B^2=B^aB_a\) and \(E^2 = E^aE_a\). Also, \(\epsilon_{(3)}^{ijk}\) is the spatial Levi-Civita tensor defined as

\begin{align*} \epsilon_{(3)}^{ijk} \equiv n_\mu \epsilon^{\mu ijk} = -\frac{1}{\sqrt{-g}} n_\mu [\mu ijk] = \frac{1}{\sqrt{\gamma}} [ijk] \end{align*}

where \(n^\mu\) is the normal to spatial hypersurface and \([ijk]\) is the antisymmetric symbol with \([123] = +1\).

There are a number of different ways in literature to numerically treat the FF conditions. For the constraint \(B_iE^i = 0\), cleaning of the parallel electric field after every time step (e.g. [143]) or adopting analytically determined parallel current density [105] were explored. On the magnetic dominance condition \(B^2 - E^2 > 0\), there have been approaches with modification of the drift current [104] or manual rescaling of the electric field [143].

We take the strategy that introduces special driver terms in the electric current density \(J^i\) following [3] :

\begin{align} J^i = J^i_\mathrm{drift} + J^i_\mathrm{parallel} \end{align}

with

\begin{align} J^i_\mathrm{drift} & = q \frac{\epsilon^{ijk}_{(3)}E_jB_k}{B_lB^l}, \\ J^i_\mathrm{parallel} & = \eta \left[ \frac{E_jB^j}{B_lB^l}B^i + \frac{\mathcal{R}(E_lE^l-B_lB^l)}{B_lB^l}E^i \right] . \end{align}

where \(\eta\) is the parallel conductivity and \(\eta\rightarrow\infty\) corresponds to the ideal force-free limit. \(\mathcal{R}(x)\) is the ramp (or rectifier) function defined as

\begin{align*} \mathcal{R}(x) = \left\{\begin{array}{lc} x, & \text{if } x \geq 0 \\ 0, & \text{if } x < 0 \\ \end{array}\right\} = \max (x, 0) . \end{align*}

Internally we handle each pieces \(\tilde{J}^i_\mathrm{drift} \equiv \alpha\sqrt{\gamma}J^i_\mathrm{drift}\) and \(\tilde{J}^i_\mathrm{parallel} \equiv \alpha\sqrt{\gamma}J^i_\mathrm{parallel}\) as two separate Tags since the latter term is stiff and needs to be evolved in conjunction with implicit time steppers.


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