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
|