Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <array> 7 : 8 : /// \cond 9 : namespace ylm { 10 : template <typename Frame> 11 : class Strahlkorper; 12 : } // namespace ylm 13 : namespace gsl { 14 : template <typename T> 15 : class not_null; 16 : } // namespace gsl 17 : /// \endcond 18 : 19 1 : namespace ylm { 20 : /// Changes the expansion center of a Strahlkorper, where the 21 : /// expansion center is defined as the point about which the spectral 22 : /// basis of the Strahlkorper is expanded, which is the quantity 23 : /// returned by `Strahlkorper::expansion_center()`. 24 : template <typename Frame> 25 1 : void change_expansion_center_of_strahlkorper( 26 : gsl::not_null<Strahlkorper<Frame>*> strahlkorper, 27 : const std::array<double, 3>& new_center); 28 : 29 : /// Changes the expansion center of a Strahlkorper to the physical 30 : /// center. Because `Strahlkorper::physical_center()` returns only an 31 : /// approximate quantity, 32 : /// `change_expansion_center_of_strahlkorper_to_physical` is 33 : /// iterative, and does not return exactly the same result as passing 34 : /// `Strahlkorper::physical_center()` to 35 : /// `change_expansion_center_of_strahlkorper`. 36 : template <typename Frame> 37 1 : void change_expansion_center_of_strahlkorper_to_physical( 38 : gsl::not_null<Strahlkorper<Frame>*> strahlkorper); 39 : } // namespace ylm