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
|