Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <cstddef>
7 : #include <utility>
8 :
9 : /// \cond
10 : class Matrix;
11 : template <size_t>
12 : class Mesh;
13 : namespace Spectral {
14 : enum class Basis : uint8_t;
15 : enum class Quadrature : uint8_t;
16 : } // namespace Spectral
17 : /// \endcond
18 :
19 : namespace Spectral {
20 : /// @{
21 : /*!
22 : * \brief Matrices that interpolate to the lower and upper boundaries of the
23 : * element.
24 : *
25 : * Assumes that the logical coordinates are \f$[-1, 1]\f$. The first element of
26 : * the pair interpolates to \f$\xi=-1\f$ and the second to \f$\xi=1\f$. These
27 : * are just the Lagrange interpolating polynomials evaluated at \f$\xi=\pm1\f$.
28 : * For Gauss-Lobatto points the only non-zero element is at the boundaries
29 : * and is one and so is not implemented.
30 : *
31 : * \warning This can only be called with Gauss points.
32 : */
33 1 : const std::pair<Matrix, Matrix>& boundary_interpolation_matrices(
34 : const Mesh<1>& mesh);
35 :
36 : template <Basis BasisType, Quadrature QuadratureType>
37 1 : const std::pair<Matrix, Matrix>& boundary_interpolation_matrices(
38 : size_t num_points);
39 : /// @}
40 : } // namespace Spectral
|