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
|