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/SphericalHarmonics/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