Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <cstddef> 7 : 8 : #include "DataStructures/DataBox/Tag.hpp" 9 : #include "DataStructures/Tensor/TypeAliases.hpp" 10 : #include "PointwiseFunctions/GeneralRelativity/Tags.hpp" 11 : 12 : /// \cond 13 : namespace gsl { 14 : template <typename> 15 : struct not_null; 16 : } // namespace gsl 17 : /// \endcond 18 : 19 : namespace gr { 20 : 21 : /// @{ 22 : /*! 23 : * \ingroup GeneralRelativityGroup 24 : * \brief Computes Newman Penrose quantity \f$\Psi_4\f$ using the characteristic 25 : * field U\f$^{8+}\f$ and complex vector \f$\bar{m}^i\f$. 26 : * 27 : * \details Computes \f$\Psi_4\f$ as: \f$\Psi_4 = 28 : * U^{8+}_{ij}\bar{m}^i\bar{m}^j\f$ with the characteristic field 29 : * \f$U^{8+} = (P^{(a}_i P^{b)}_j - \frac{1}{2}P_{ij}P^{ab}) 30 : * (E_{ab} - \epsilon_a^{cd}n_dB_{cb}\f$) 31 : * and \f$\bar{m}^i\f$ = \f$\frac{(x^i + iy^i)}{\sqrt{2}}\f$. \f$x^i\f$ and 32 : * \f$y^i\f$ are normalized unit vectors in the frame Frame. 33 : * 34 : */ 35 : template <typename Frame> 36 1 : void psi_4(const gsl::not_null<Scalar<ComplexDataVector>*> psi_4_result, 37 : const tnsr::ii<DataVector, 3, Frame>& spatial_ricci, 38 : const tnsr::ii<DataVector, 3, Frame>& extrinsic_curvature, 39 : const tnsr::ijj<DataVector, 3, Frame>& cov_deriv_extrinsic_curvature, 40 : const tnsr::ii<DataVector, 3, Frame>& spatial_metric, 41 : const tnsr::II<DataVector, 3, Frame>& inverse_spatial_metric, 42 : const tnsr::I<DataVector, 3, Frame>& inertial_coords); 43 : 44 : template <typename Frame> 45 1 : Scalar<ComplexDataVector> psi_4( 46 : const tnsr::ii<DataVector, 3, Frame>& spatial_ricci, 47 : const tnsr::ii<DataVector, 3, Frame>& extrinsic_curvature, 48 : const tnsr::ijj<DataVector, 3, Frame>& cov_deriv_extrinsic_curvature, 49 : const tnsr::ii<DataVector, 3, Frame>& spatial_metric, 50 : const tnsr::II<DataVector, 3, Frame>& inverse_spatial_metric, 51 : const tnsr::I<DataVector, 3, Frame>& inertial_coords); 52 : /// @} 53 : 54 : } // namespace gr