Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : /// \cond 7 : // clang-tidy: Macro arguments should be in parentheses, but we want to append 8 : // template parameters here. 9 : #define SPECTRAL_QUANTITY_FOR_MESH(function_name, return_type) \ 10 : const return_type& function_name(const Mesh<1>& mesh) { \ 11 : return Spectral::detail::get_spectral_quantity_for_mesh( \ 12 : [](const auto basis, const auto quadrature, \ 13 : const size_t num_points) -> const return_type& { \ 14 : return function_name</* NOLINT */ decltype(basis)::value, \ 15 : decltype(quadrature)::value>(num_points); \ 16 : }, \ 17 : mesh); \ 18 : } 19 : 20 : #define TWO_INDEXED_SPECTRAL_QUANTITY_FOR_MESH(function_name, return_type) \ 21 : const return_type& function_name(const Mesh<1>& mesh, const size_t m, \ 22 : const size_t N) { \ 23 : return Spectral::detail::get_two_indexed_spectral_quantity_for_mesh( \ 24 : [](const auto basis, const auto quadrature, const size_t num_points, \ 25 : const size_t mm, const size_t NN) -> const return_type& { \ 26 : return function_name</* NOLINT */ decltype(basis)::value, \ 27 : decltype(quadrature)::value>(num_points, mm, \ 28 : NN); \ 29 : }, \ 30 : mesh, m, N); \ 31 : } 32 : /// \endcond