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/Tensor/TypeAliases.hpp" 7 : 8 : /// \cond 9 : class DataVector; 10 : namespace gsl { 11 : template <typename> 12 : struct not_null; 13 : } // namespace gsl 14 : /// \endcond 15 : 16 : namespace gr::surfaces { 17 : /// @{ 18 : /// \ingroup SurfacesGroup 19 : /// \brief Computes normalized unit normal one-form to a Strahlkorper. 20 : /// 21 : /// \details The input argument `normal_one_form` \f$n_i\f$ is the 22 : /// unnormalized surface one-form; it depends on a Strahlkorper but 23 : /// not on a metric. The input argument `one_over_one_form_magnitude` 24 : /// is \f$1/\sqrt{g^{ij}n_i n_j}\f$, which can be computed using (one 25 : /// over) the `magnitude` function. 26 : template <typename Frame> 27 1 : void unit_normal_one_form(gsl::not_null<tnsr::i<DataVector, 3, Frame>*> result, 28 : const tnsr::i<DataVector, 3, Frame>& normal_one_form, 29 : const DataVector& one_over_one_form_magnitude); 30 : 31 : template <typename Frame> 32 1 : tnsr::i<DataVector, 3, Frame> unit_normal_one_form( 33 : const tnsr::i<DataVector, 3, Frame>& normal_one_form, 34 : const DataVector& one_over_one_form_magnitude); 35 : /// @} 36 : } // namespace gr::surfaces