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
|