SpECTRE  v2024.04.12
Cce::GaugeUpdateTimeDerivatives Struct Reference

Update the Cauchy gauge cartesian coordinate derivative \(\partial_u x(\hat x)\), as well as remaining gauge quantities \(\mathcal U^{(0)}\), \(\hat U \equiv \mathcal U - \mathcal U^{(0)}\), and \(\partial_{\hat u} \hat \omega\) to maintain asymptotically inertial angular coordinates. More...

#include <GaugeTransformBoundaryData.hpp>

Public Types

using return_tags = tmpl::list<::Tags::dt< Tags::CauchyCartesianCoords >, Tags::BondiUAtScri, Tags::BondiU, Tags::Du< Tags::PartiallyFlatGaugeOmega > >
 
using argument_tags = tmpl::list< Tags::CauchyCartesianCoords, Tags::PartiallyFlatGaugeOmega, Spectral::Swsh::Tags::Derivative< Tags::PartiallyFlatGaugeOmega, Spectral::Swsh::Tags::Eth >, Tags::LMax >
 

Static Public Member Functions

static void apply (gsl::not_null< tnsr::i< DataVector, 3 > * > cartesian_cauchy_du_x, gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, 1 > > * > evolution_gauge_u_at_scri, gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, 1 > > * > volume_u, gsl::not_null< Scalar< SpinWeighted< ComplexDataVector, 0 > > * > du_omega, const tnsr::i< DataVector, 3 > &cartesian_cauchy_coordinates, const Scalar< SpinWeighted< ComplexDataVector, 0 > > &omega, const Scalar< SpinWeighted< ComplexDataVector, 1 > > &eth_omega, size_t l_max)
 

Detailed Description

Update the Cauchy gauge cartesian coordinate derivative \(\partial_u x(\hat x)\), as well as remaining gauge quantities \(\mathcal U^{(0)}\), \(\hat U \equiv \mathcal U - \mathcal U^{(0)}\), and \(\partial_{\hat u} \hat \omega\) to maintain asymptotically inertial angular coordinates.

Details

The constraint we must satisfy to maintain the asymptotically inertial angular coordinates is

\begin{align*} \partial_{\hat u} x^A = \mathcal U^{(0) \hat A} \partial_{\hat A} x^{A}, \end{align*}

which we compute for a representative Cartesian coordinate set on the unit sphere, to maintain representability and ensure that angular transform and derivative operations keep the desired precision. The equation we use for the Cartesian analog is:

\begin{align*} \partial_{\hat u} x^i &= \frac{1}{2} (\bar{\mathcal U}^{(0)} \hat \eth x^i + \mathcal U^{(0)} \hat{\bar \eth} x^i ) \\ &= \text{Re}(\bar{\mathcal U}^{(0)} \hat \eth x^i) \end{align*}

This computation completes the unfixed degrees of freedom for the coordinate transformation at the boundary, so also computes the gauge quantities that rely on this information \(\mathcal U^{(0)}\), \(\hat U\), and \(\partial_{\hat u} \hat \omega\).

The time derivative of \(\hat \omega\) is calculated from the equation

\begin{align*} \partial_{\hat u} \hat \omega = \frac{\hat \omega}{4} (\hat{\bar \eth} \mathcal U^{(0)} + \hat \eth \bar{\mathcal U}^{(0)}) + \frac{1}{2} (\mathcal U^{(0)} \hat{\bar \eth} \hat \omega + \bar{\mathcal U}^{(0)} \hat \eth \hat \omega) \end{align*}

Warning
Before this update call the quantity stored in the tag Cce::Tags::BondiU represents \(\mathcal U\), and after this update call, it represents \(\hat U\) (the true evolution gauge quantity).

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