ChangeCenterOfStrahlkorper.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <array>
7 
8 /// \cond
9 template <typename Frame>
10 class Strahlkorper;
11 namespace gsl {
12 template <typename T>
13 class not_null;
14 } // namespace gsl
15 /// \endcond
16 
17 /// Changes the expansion center of a Strahlkorper, where the
18 /// expansion center is defined as the point about which the spectral
19 /// basis of the Strahlkorper is expanded, which is the quantity
20 /// returned by `Strahlkorper::center()`.
21 template <typename Frame>
22 void change_expansion_center_of_strahlkorper(
23  gsl::not_null<Strahlkorper<Frame>*> strahlkorper,
24  const std::array<double, 3>& new_center) noexcept;
25 
26 /// Changes the expansion center of a Strahlkorper to the physical
27 /// center. Because `Strahlkorper::physical_center()` returns only an
28 /// approximate quantity,
29 /// `change_expansion_center_of_strahlkorper_to_physical` is
30 /// iterative, and does not return exactly the same result as passing
31 /// `Strahlkorper::physical_center()` to
32 /// `change_expansion_center_of_strahlkorper`.
33 template <typename Frame>
34 void change_expansion_center_of_strahlkorper_to_physical(
35  gsl::not_null<Strahlkorper<Frame>*> strahlkorper) noexcept;
Strahlkorper
A star-shaped surface expanded in spherical harmonics.
Definition: Strahlkorper.hpp:21
array
gsl
Implementations from the Guideline Support Library.
Definition: Gsl.hpp:80
gsl::not_null
Require a pointer to not be a nullptr
Definition: Gsl.hpp:183