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