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 : 8 : #include "PointwiseFunctions/MathFunctions/Gaussian.hpp" 9 : #include "PointwiseFunctions/MathFunctions/PowX.hpp" 10 : #include "PointwiseFunctions/MathFunctions/Sinusoid.hpp" 11 : #include "Utilities/TMPL.hpp" 12 : 13 1 : namespace MathFunctions { 14 : namespace Factory_detail { 15 : template <size_t VolumeDim, typename Fr> 16 : struct all_math_functions { 17 : using type = tmpl::list<MathFunctions::Gaussian<VolumeDim, Fr>>; 18 : }; 19 : 20 : template <typename Fr> 21 : struct all_math_functions<1, Fr> { 22 : using type = 23 : tmpl::list<MathFunctions::Gaussian<1, Fr>, MathFunctions::PowX<1, Fr>, 24 : MathFunctions::Sinusoid<1, Fr>>; 25 : }; 26 : } // namespace Factory_detail 27 : 28 : template <size_t VolumeDim, typename Fr> 29 0 : using all_math_functions = 30 : typename Factory_detail::all_math_functions<VolumeDim, Fr>::type; 31 : } // namespace MathFunctions