SpECTRE
v2024.05.11
|
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 |
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.
\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. [146]) or adopting analytically determined parallel current density [108] were explored. On the magnetic dominance condition \(B^2 - E^2 > 0\), there have been approaches with modification of the drift current [107] or manual rescaling of the electric field [146].
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.