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/Variables.hpp"
7 : #include "NumericalAlgorithms/TensorYlm/TensorYlm.hpp"
8 : #include "Utilities/Gsl.hpp"
9 :
10 : /// \cond
11 : namespace ylm {
12 : class Spherepack;
13 : } // namespace ylm
14 : /// \endcond
15 :
16 : namespace ylm::TensorYlm::filter_detail {
17 :
18 : /*!
19 : * \brief Does a nodal to modal transform on I1xS2, only in the S2 direction.
20 : *
21 : * \tparam VarsList A tmpl::list of tags to transform.
22 : * \param nodal A Variables containing the input nodal values.
23 : * \param modal A Variables containing the output modal values.
24 : * \param ylm A Spherepack object with the correct ell_max.
25 : * \param radial_extents Number of grid points in I1, or 1 if just an S2.
26 : */
27 : template <typename VarsList>
28 : void nodal_to_modal_ylm(gsl::not_null<Variables<VarsList>*> modal,
29 : const Variables<VarsList>& nodal,
30 : const ::ylm::Spherepack& ylm, size_t radial_extents);
31 :
32 : /*!
33 : * \brief Does a modal to nodal transform on I1xS2, only in the S2 direction.
34 : *
35 : * \tparam VarsList A tmpl::list of tags to transform.
36 : * \param modal A Variables containing the input modal values.
37 : * \param nodal A Variables containing the output nodal values.
38 : * \param ylm A Spherepack object with the correct ell_max.
39 : * \param radial_extents Number of grid points in I1, or 1 if just an S2.
40 : */
41 : template <typename VarsList>
42 : void modal_to_nodal_ylm(gsl::not_null<Variables<VarsList>*> nodal,
43 : const Variables<VarsList>& modal,
44 : const ::ylm::Spherepack& ylm, size_t radial_extents);
45 : } // namespace ylm::TensorYlm::filter_detail
|