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 ylm {
11 : template <typename Frame>
12 : class Strahlkorper;
13 : } // namespace ylm
14 : /// \endcond
15 :
16 : namespace gr::surfaces {
17 : /*!
18 : * \ingroup SurfacesGroup
19 : * \brief Euclidean surface integral of a vector on a 2D `Strahlkorper`
20 : *
21 : * \details Computes the surface integral
22 : * \f$\oint V^i s_i (s_j s_k \delta^{jk})^{-1/2} d^2S\f$ for a
23 : * vector \f$V^i\f$ on a `Strahlkorper` with area element \f$d^2S\f$ and
24 : * normal one-form \f$s_i\f$. Here \f$\delta^{ij}\f$ is the Euclidean
25 : * metric (i.e. the Kronecker delta). Note that the input `normal_one_form`
26 : * is not assumed to be normalized; the denominator of the integrand
27 : * effectively normalizes it using the Euclidean metric.
28 : * The area element can be computed via
29 : * `gr::surfaces::euclidean_area_element()`.
30 : */
31 : template <typename Frame>
32 1 : double euclidean_surface_integral_of_vector(
33 : const Scalar<DataVector>& area_element,
34 : const tnsr::I<DataVector, 3, Frame>& vector,
35 : const tnsr::i<DataVector, 3, Frame>& normal_one_form,
36 : const ylm::Strahlkorper<Frame>& strahlkorper);
37 : } // namespace gr::surfaces
|