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 DataVector; 11 : namespace Spectral { 12 : enum class Basis : uint8_t; 13 : enum class Quadrature : uint8_t; 14 : } // namespace Spectral 15 : /// \endcond 16 : 17 : namespace Spectral { 18 : namespace detail { 19 : template <Basis BasisType, Quadrature QuadratureType> 20 : struct CollocationPointsAndWeightsGenerator { 21 : std::pair<DataVector, DataVector> operator()(size_t num_points) const; 22 : }; 23 : } // namespace detail 24 : 25 : /*! 26 : * \brief Compute the collocation points and weights associated to the 27 : * basis and quadrature. 28 : * 29 : * \details This function is expected to return the tuple 30 : * \f$(\xi_k,w_k)\f$ where the \f$\xi_k\f$ are the collocation 31 : * points and the \f$w_k\f$ are defined in the description of 32 : * `quadrature_weights(size_t)`. 33 : * 34 : * \warning for a `FiniteDifference` basis or `CellCentered` and `FaceCentered` 35 : * quadratures, the weights are defined to integrate with the midpoint method 36 : */ 37 : template <Basis BasisType, Quadrature QuadratureType> 38 1 : std::pair<DataVector, DataVector> compute_collocation_points_and_weights( 39 : size_t num_points); 40 : } // namespace Spectral