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 : namespace gsl {
15 : template <typename>
16 : struct not_null;
17 : } // namespace gsl
18 : /// \endcond
19 :
20 : namespace gr::surfaces {
21 : /*!
22 : * \ingroup SurfacesGroup
23 : * \brief Radial distance between two `Strahlkorper`s.
24 : *
25 : * \details Computes the pointwise radial distance \f$r_a-r_b\f$ between two
26 : * Strahlkorpers `strahlkorper_a` and `strahlkorper_b` that have the same
27 : * center. If the Strahlkorpers' resolutions are unequal, the lower-resolution
28 : * Strahlkorper is internally prolonged to match the higher-resolution
29 : * Strahlkorper. The `radial_distance` DataVector must already have size
30 : * consistent with the higher-resolution Strahlkorper's resolution (or the
31 : * common size when the resolutions match); a mismatch triggers an error.
32 : */
33 : template <typename Frame>
34 1 : void radial_distance(gsl::not_null<Scalar<DataVector>*> radial_distance,
35 : const ylm::Strahlkorper<Frame>& strahlkorper_a,
36 : const ylm::Strahlkorper<Frame>& strahlkorper_b);
37 : } // namespace gr::surfaces
|