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