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^{ij}\gamma^{kl}\right) B_{kl}
34  * \f}
35  *
36  * Note that the strain can be computed with `Elasticity::strain`.
37  */
38 template <typename DataType>
39 void longitudinal_operator(gsl::not_null<tnsr::II<DataType, 3>*> result,
40  const tnsr::ii<DataType, 3>& strain,
41  const tnsr::II<DataType, 3>& inv_metric) noexcept;
42 
43 /*!
44  * \brief The conformal longitudinal operator \f$(L\beta)^{ij}\f$ on a flat
45  * conformal metric in Cartesian coordinates \f$\gamma_{ij}=\delta_{ij}\f$
46  *
47  * \see `Xcts::longitudinal_operator`
48  */
49 template <typename DataType>
51  gsl::not_null<tnsr::II<DataType, 3>*> result,
52  const tnsr::ii<DataType, 3>& strain) noexcept;
53 } // namespace Xcts
Xcts
Items related to solving the Extended Conformal Thin Sandwich (XCTS) decomposition of the Einstein co...
Definition: Flatness.hpp:22
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: ReadSpecPiecewisePolynomial.hpp:13