Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include "DataStructures/DataBox/Prefixes.hpp" 7 : #include "DataStructures/DataVector.hpp" 8 : #include "DataStructures/Tensor/Tensor.hpp" 9 : #include "Utilities/ContainerHelpers.hpp" 10 : #include "Utilities/Gsl.hpp" 11 : #include "Utilities/TMPL.hpp" 12 : 13 : namespace gr { 14 : /// @{ 15 : /*! 16 : * \ingroup GeneralRelativityGroup 17 : * \brief Computes spacetime derivative of 18 : * \f$ \mathfrak{g}^{ab}\equiv (-g)^{1/2} g^{ab} \f$. 19 : * 20 : * \details Computes the spacetime derivative of 21 : * \f$ \mathfrak{g}^{ab}\equiv (-g)^{1/2} g^{ab} \f$, defined 22 : * in \cite Misner1973. Using \f$ (-g)^{1/2} = \alpha (\gamma)^{1/2} \f$, where 23 : * \f$ \alpha \f$ is the lapse and \f$ \gamma \f$ is the determinant of the 24 : * spatial metric (\cite BaumgarteShapiro), the derivative of 25 : * \f$ \mathfrak{g}^{ab} \f$ expands out to 26 : * \f{align}{ 27 : * \partial_c \mathfrak{g}^{ab} &= \left[\partial_c \alpha \gamma^{1/2} 28 : * + \frac{1}{2} \alpha \partial_c \gamma \gamma^{-1/2} \right] g^{ab} 29 : * - \alpha \gamma^{1/2} g^{ad} g^{be} \partial_c g_{de}. 30 : * \f} 31 : */ 32 : template <typename DataType, size_t SpatialDim, typename Frame> 33 1 : void spacetime_deriv_of_goth_g( 34 : gsl::not_null<tnsr::aBB<DataType, SpatialDim, Frame>*> da_goth_g, 35 : const tnsr::AA<DataType, SpatialDim, Frame>& inverse_spacetime_metric, 36 : const tnsr::abb<DataType, SpatialDim, Frame>& da_spacetime_metric, 37 : const Scalar<DataType>& lapse, 38 : const tnsr::a<DataType, SpatialDim, Frame>& da_lapse, 39 : const Scalar<DataType>& sqrt_det_spatial_metric, 40 : const tnsr::a<DataType, SpatialDim, Frame>& da_det_spatial_metric); 41 : 42 : template <typename DataType, size_t SpatialDim, typename Frame> 43 1 : tnsr::aBB<DataType, SpatialDim, Frame> spacetime_deriv_of_goth_g( 44 : const tnsr::AA<DataType, SpatialDim, Frame>& inverse_spacetime_metric, 45 : const tnsr::abb<DataType, SpatialDim, Frame>& da_spacetime_metric, 46 : const Scalar<DataType>& lapse, 47 : const tnsr::a<DataType, SpatialDim, Frame>& da_lapse, 48 : const Scalar<DataType>& sqrt_det_spatial_metric, 49 : const tnsr::a<DataType, SpatialDim, Frame>& da_det_spatial_metric); 50 : /// @} 51 : } // namespace gr