SpECTRE  v2024.03.19
CurvedScalarWave::Worldtube Namespace Reference

The set of utilities for performing CurvedScalarWave evolution with a worldtube excision scheme. More...

Namespaces

namespace  OptionTags
 Option tags for the worldtube.
 
namespace  Tags
 Tags related to the worldtube.
 

Classes

struct  Registration
 
struct  UpdateAcceleration
 Computes the final acceleration of the particle at this time step. More...
 
struct  WorldtubeSingleton
 The singleton component that represents the worldtube. More...
 

Functions

tnsr::iAA< double, 3 > spatial_derivative_inverse_ks_metric (const tnsr::I< double, 3 > &pos)
 The spatial derivative of the zero spin inverse Kerr Schild metric, \(\partial_i g^{\mu \nu}\), assuming a black hole at the coordinate center with mass M = 1.
 
tnsr::iaa< double, 3 > spatial_derivative_ks_metric (const tnsr::aa< double, 3 > &metric, const tnsr::iAA< double, 3 > &di_inverse_metric)
 The spatial derivative of the spacetime metric, \(\partial_i g_{\mu \nu}\).
 
tnsr::iiAA< double, 3 > second_spatial_derivative_inverse_ks_metric (const tnsr::I< double, 3 > &pos)
 The second spatial derivative of the zero spin inverse Kerr Schild metric, \(\partial_i \partial_j g^{\mu \nu}\), assuming a black hole at the coordinate center with mass M = 1.
 
tnsr::iiaa< double, 3 > second_spatial_derivative_metric (const tnsr::aa< double, 3 > &metric, const tnsr::iaa< double, 3 > &di_metric, const tnsr::iAA< double, 3 > &di_inverse_metric, const tnsr::iiAA< double, 3 > &dij_inverse_metric)
 The spatial derivative of the spacetime metric, \(\partial_i \partial_j g_{\mu \nu}\).
 
tnsr::iAbb< double, 3 > spatial_derivative_christoffel (const tnsr::iaa< double, 3 > &di_metric, const tnsr::iiaa< double, 3 > &dij_metric, const tnsr::AA< double, 3 > &inverse_metric, const tnsr::iAA< double, 3 > &di_inverse_metric)
 The spatial derivative of the Christoffel symbols, \(\partial_i \Gamma^\rho_{\mu \nu}\).
 
tnsr::iA< double, 3 > spatial_derivative_ks_contracted_christoffel (const tnsr::I< double, 3 > &pos)
 The spatial derivative of the zero spin Kerr Schild contracted Christoffel symbols, \(\partial_i g^{\mu \nu} \Gamma^\rho_{\mu \nu}\), assuming a black hole at the coordinate center with mass M = 1.
 
void puncture_field (gsl::not_null< Variables< tmpl::list< CurvedScalarWave::Tags::Psi, ::Tags::dt< CurvedScalarWave::Tags::Psi >, ::Tags::deriv< CurvedScalarWave::Tags::Psi, tmpl::size_t< 3 >, Frame::Inertial > > > * > result, const tnsr::I< DataVector, 3, Frame::Inertial > &centered_coords, const tnsr::I< double, 3 > &particle_position, const tnsr::I< double, 3 > &particle_velocity, const tnsr::I< double, 3 > &particle_acceleration, double bh_mass, size_t order)
 Computes the puncture/singular field \(\Psi^\mathcal{P}\) of a scalar charge on a generic orbit in Schwarzschild spacetime. described in [52]. More...
 
void puncture_field_0 (gsl::not_null< Variables< tmpl::list< CurvedScalarWave::Tags::Psi, ::Tags::dt< CurvedScalarWave::Tags::Psi >, ::Tags::deriv< CurvedScalarWave::Tags::Psi, tmpl::size_t< 3 >, Frame::Inertial > > > * > result, const tnsr::I< DataVector, 3, Frame::Inertial > &centered_coords, const tnsr::I< double, 3 > &particle_position, const tnsr::I< double, 3 > &particle_velocity, const tnsr::I< double, 3 > &particle_acceleration, double bh_mass)
 Computes the puncture/singular field \(\Psi^\mathcal{P}\) of a scalar charge on a generic orbit in Schwarzschild spacetime. described in [52].
 
void puncture_field_1 (gsl::not_null< Variables< tmpl::list< CurvedScalarWave::Tags::Psi, ::Tags::dt< CurvedScalarWave::Tags::Psi >, ::Tags::deriv< CurvedScalarWave::Tags::Psi, tmpl::size_t< 3 >, Frame::Inertial > > > * > result, const tnsr::I< DataVector, 3, Frame::Inertial > &centered_coords, const tnsr::I< double, 3 > &particle_position, const tnsr::I< double, 3 > &particle_velocity, const tnsr::I< double, 3 > &particle_acceleration, double bh_mass)
 Computes the puncture/singular field \(\Psi^\mathcal{P}\) of a scalar charge on a generic orbit in Schwarzschild spacetime. described in [52].
 
template<size_t Dim>
void self_force_acceleration (gsl::not_null< tnsr::I< double, Dim > * > self_force_acc, const Scalar< double > &dt_psi_monopole, const tnsr::i< double, Dim > &psi_dipole, const tnsr::I< double, Dim > &particle_velocity, double particle_charge, double particle_mass, const tnsr::AA< double, Dim > &inverse_metric, const Scalar< double > &dilation_factor)
 Computes the coordinate acceleration due to the scalar self-force onto the charge. More...
 
template<size_t Dim>
tnsr::I< double, Dim > self_force_acceleration (const Scalar< double > &dt_psi_monopole, const tnsr::i< double, Dim > &psi_dipole, const tnsr::I< double, Dim > &particle_velocity, double particle_charge, double particle_mass, const tnsr::AA< double, Dim > &inverse_metric, const Scalar< double > &dilation_factor)
 Computes the coordinate acceleration due to the scalar self-force onto the charge. More...
 

Detailed Description

The set of utilities for performing CurvedScalarWave evolution with a worldtube excision scheme.

Details

The worldtube excision scheme is a method that aims to enable NR evolutions of intermediate mass ratio binary black hole simulations. In standard BBH simulations two excision spheres are cut out from the domain within the apparent horizons of the respective black holes. For larger mass ratios, this introduces a scale disparity in the evolution system because the small grid spacing in the elements near the smaller black hole constrain the time step to be orders of magnitude smaller than near the larger black hole due to the CFL condition. The worldtube excision scheme avoids this by excising a much larger region (the worldtube) around the smaller black hole. Since the excision boundary no longer lies within the apparent horizon, boundary conditions are required. These are derived by approximating the solution inside the worldtube using a perturbative solution - a black hole perturbed by another black hole. The solution is calibrated by the evolved metric on the worldtube boundary and in turn provides boundary conditions to the evolution system.

Here, we test this scheme using a toy problem of a scalar charge in circular orbit around a Schwarzschild black hole.

Function Documentation

◆ puncture_field()

void CurvedScalarWave::Worldtube::puncture_field ( gsl::not_null< Variables< tmpl::list< CurvedScalarWave::Tags::Psi, ::Tags::dt< CurvedScalarWave::Tags::Psi >, ::Tags::deriv< CurvedScalarWave::Tags::Psi, tmpl::size_t< 3 >, Frame::Inertial > > > * >  result,
const tnsr::I< DataVector, 3, Frame::Inertial > &  centered_coords,
const tnsr::I< double, 3 > &  particle_position,
const tnsr::I< double, 3 > &  particle_velocity,
const tnsr::I< double, 3 > &  particle_acceleration,
double  bh_mass,
size_t  order 
)

Computes the puncture/singular field \(\Psi^\mathcal{P}\) of a scalar charge on a generic orbit in Schwarzschild spacetime. described in [52].

Details

The field is computed using a Detweiler-Whiting singular Green's function and perturbatively expanded in the geodesic distance from the particle. It solves the inhomogeneous wave equation

\begin{align*} \Box \Psi^\mathcal{P} = -4 \pi q \int \sqrt{-g} \delta^4(x^i, z(\tau)) d \tau \end{align*}

where \(q\) is the scalar charge and \(z(\tau)\) is the worldline of the particle. The expression is expanded up to a certain order in geodesic distance and transformed to Kerr-Schild coordinates.

The function given here assumes that the particle has scalar charge \(q=1\) and is on a fixed geodesic orbit. It returns the singular field at the requested coordinates as well as its time and spatial derivative. For non-geodesic orbits, corresponding acceleration terms have to be added to the puncture field.

Note
The expressions were computed with Mathematica and optimized by applying common subexpression elimination with sympy. The memory allocations of temporaries were optimized manually.

◆ self_force_acceleration() [1/2]

template<size_t Dim>
tnsr::I< double, Dim > CurvedScalarWave::Worldtube::self_force_acceleration ( const Scalar< double > &  dt_psi_monopole,
const tnsr::i< double, Dim > &  psi_dipole,
const tnsr::I< double, Dim > &  particle_velocity,
double  particle_charge,
double  particle_mass,
const tnsr::AA< double, Dim > &  inverse_metric,
const Scalar< double > &  dilation_factor 
)

Computes the coordinate acceleration due to the scalar self-force onto the charge.

Details

It is given by

\begin{equation} (u^0)^2 \ddot{x}^i_p = \frac{q}{\mu}(g^{i \alpha} - \dot{x}^i_p g^{0 \alpha} ) \partial_\alpha \Psi^R \end{equation}

where \(\dot{x}^i_p\) is the position of the scalar charge, \(\Psi^R\) is the regular field, \(q\) is the particle's charge, \(\mu\) is the particle's mass, \(u^\alpha\) is the four-velocity and \(g^{\alpha \beta}\) is the inverse spacetime metric in the inertial frame, evaluated at the position of the particle. An overdot denotes a derivative with respect to coordinate time. Greek indices are spacetime indices and Latin indices are purely spatial. Note that the coordinate geodesic acceleration is NOT included.

◆ self_force_acceleration() [2/2]

template<size_t Dim>
void CurvedScalarWave::Worldtube::self_force_acceleration ( gsl::not_null< tnsr::I< double, Dim > * >  self_force_acc,
const Scalar< double > &  dt_psi_monopole,
const tnsr::i< double, Dim > &  psi_dipole,
const tnsr::I< double, Dim > &  particle_velocity,
double  particle_charge,
double  particle_mass,
const tnsr::AA< double, Dim > &  inverse_metric,
const Scalar< double > &  dilation_factor 
)

Computes the coordinate acceleration due to the scalar self-force onto the charge.

Details

It is given by

\begin{equation} (u^0)^2 \ddot{x}^i_p = \frac{q}{\mu}(g^{i \alpha} - \dot{x}^i_p g^{0 \alpha} ) \partial_\alpha \Psi^R \end{equation}

where \(\dot{x}^i_p\) is the position of the scalar charge, \(\Psi^R\) is the regular field, \(q\) is the particle's charge, \(\mu\) is the particle's mass, \(u^\alpha\) is the four-velocity and \(g^{\alpha \beta}\) is the inverse spacetime metric in the inertial frame, evaluated at the position of the particle. An overdot denotes a derivative with respect to coordinate time. Greek indices are spacetime indices and Latin indices are purely spatial. Note that the coordinate geodesic acceleration is NOT included.