Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include "Utilities/Gsl.hpp" 7 : 8 : /// \cond 9 : class Matrix; 10 : template <size_t> 11 : class Mesh; 12 : template <typename TagsList> 13 : class Variables; 14 : /// \endcond 15 : 16 : namespace Spectral::filtering { 17 : /*! 18 : * \brief Filters the tensors stored within a `Variables` being represented by 19 : * ZernikeB1 basis functions in their first dimension. 20 : * 21 : * \details The Cartoon method with spectral bases can be unstable for small 22 : * \f$x\f$, so we use ZernikeB1 bases with GaussRadauUpper quadrature to push 23 : * collocation points to higher inertial coordinates. This basis has 24 : * parity-dependent spectral space, so we must go to the proper modal space, 25 : * apply the exponential filter, and transform back. 26 : * 27 : * \see exponential_filter() 28 : */ 29 : template <typename VariablesTags> 30 1 : void zernike_b1_exponential_filter(gsl::not_null<Variables<VariablesTags>*> u, 31 : const Mesh<3>& mesh, double alpha, 32 : unsigned half_power); 33 : } // namespace Spectral::filtering