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 "DataStructures/ComplexDataVector.hpp" 9 : #include "DataStructures/DataVector.hpp" 10 : #include "PointwiseFunctions/AnalyticSolutions/Poisson/Lorentzian.hpp" 11 : #include "PointwiseFunctions/AnalyticSolutions/Poisson/MathFunction.hpp" 12 : #include "PointwiseFunctions/AnalyticSolutions/Poisson/Moustache.hpp" 13 : #include "PointwiseFunctions/AnalyticSolutions/Poisson/ProductOfSinusoids.hpp" 14 : #include "PointwiseFunctions/AnalyticSolutions/Poisson/Zero.hpp" 15 : #include "Utilities/TMPL.hpp" 16 : 17 0 : namespace Poisson::Solutions { 18 : template <size_t Dim, typename DataType = DataVector> 19 0 : using all_analytic_solutions = tmpl::conditional_t< 20 : std::is_same_v<DataType, ComplexDataVector>, 21 : tmpl::flatten<tmpl::list< 22 : // Only a subset of solutions support ComplexDataVector 23 : ProductOfSinusoids<Dim, ComplexDataVector>, 24 : Zero<Dim, ComplexDataVector>, 25 : tmpl::conditional_t<Dim == 3, Lorentzian<Dim, ComplexDataVector>, 26 : tmpl::list<>>>>, 27 : tmpl::flatten<tmpl::list< 28 : ProductOfSinusoids<Dim, DataType>, Zero<Dim, DataType>, 29 : MathFunction<Dim>, 30 : tmpl::conditional_t<Dim == 1 or Dim == 2, Moustache<Dim>, tmpl::list<>>, 31 : tmpl::conditional_t<Dim == 3, Lorentzian<Dim, DataType>, 32 : tmpl::list<>>>>>; 33 : } // namespace Poisson::Solutions