LongitudinalOperator.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <cstddef>
7 
9 #include "Utilities/Gsl.hpp"
10 
11 namespace Xcts {
12 /*!
13  * \brief The longitudinal operator, or vector gradient, \f$(L\beta)^{ij}\f$
14  *
15  * Computes the longitudinal operator
16  *
17  * \f{equation}
18  * (L\beta)^{ij} = \nabla^i \beta^j + \nabla^j \beta^i -
19  * \frac{2}{3}\gamma^{ij}\nabla_k\beta^k
20  * \f}
21  *
22  * of a vector field \f$\beta^i\f$, where \f$\nabla\f$ denotes the covariant
23  * derivative w.r.t. the metric \f$\gamma\f$ (see e.g. Eq. (3.50) in
24  * \cite BaumgarteShapiro). Note that in the XCTS equations the longitudinal
25  * operator is typically applied to conformal quantities and w.r.t. the
26  * conformal metric \f$\bar{\gamma}\f$.
27  *
28  * In terms of the symmetric "strain" quantity
29  * \f$B_{ij}=\nabla_{(i}\gamma_{j)k}\beta^k\f$ the longitudinal operator is:
30  *
31  * \f{equation}
32  * (L\beta)^{ij} = 2\left(\gamma^{ik}\gamma^{jl} -
33  * \frac{1}{3} \gamma^{jk}\gamma^{kl}\right) B_{kl}
34  * \f}
35  */
36 template <typename DataType>
37 void longitudinal_operator(gsl::not_null<tnsr::II<DataType, 3>*> result,
38  const tnsr::ii<DataType, 3>& strain,
39  const tnsr::II<DataType, 3>& inv_metric) noexcept;
40 
41 /*!
42  * \brief The conformal longitudinal operator \f$(L\beta)^{ij}\f$ on a flat
43  * conformal metric in Cartesian coordinates \f$\gamma_{ij}=\delta_{ij}\f$
44  *
45  * \see `Xcts::longitudinal_operator`
46  */
47 template <typename DataType>
49  gsl::not_null<tnsr::II<DataType, 3>*> result,
50  const tnsr::ii<DataType, 3>& strain) noexcept;
51 } // namespace Xcts
Xcts
Items related to solving the Extended Conformal Thin Sandwich (XCTS) equations.
Definition: Tags.hpp:17
cstddef
Gsl.hpp
Tensor.hpp
Xcts::longitudinal_operator
void longitudinal_operator(gsl::not_null< tnsr::II< DataType, 3 > * > result, const tnsr::ii< DataType, 3 > &strain, const tnsr::II< DataType, 3 > &inv_metric) noexcept
The longitudinal operator, or vector gradient, .
Xcts::longitudinal_operator_flat_cartesian
void longitudinal_operator_flat_cartesian(gsl::not_null< tnsr::II< DataType, 3 > * > result, const tnsr::ii< DataType, 3 > &strain) noexcept
The conformal longitudinal operator on a flat conformal metric in Cartesian coordinates .
gsl::not_null
Require a pointer to not be a nullptr
Definition: ReadSpecThirdOrderPiecewisePolynomial.hpp:13