Peano
Loading...
Searching...
No Matches
ScenarioFactory.h
Go to the documentation of this file.
1#ifndef EXASEIS_SCENARIOFACTORY_HEADER
2#define EXASEIS_SCENARIOFACTORY_HEADER
3#include "Apatite.h"
4#include "Easi.h"
5#include "GaussianWave.h"
6#include "Scenario.h"
7// #include "GaussianHill.h"
8#include "Hhs1.h"
9#include "Hsp1.h"
10// #include "Hhs1_Transposed.h"
11#include "Loh1.h"
12// #include "Loh1_Transposed.h"
13#include <unordered_map>
14
15#include "Sinusodial.h"
16#include "TPV5.h"
17#include "WholeSpaceProblem.h"
18#include "Zugspitze.h"
19#include "Zugspitze_noTopo.h"
20
22public:
23 template <template <typename, int> class T, typename V, int B>
25 return new T<V, B>(info);
26 }
27
28 template <class VariableShortcuts, int basisSize>
30
31 std::unordered_map<std::string, Scenario<VariableShortcuts, basisSize>* (*)(DomainInformation*)> name2enum{
35 // {"GaussianHill", &create<GaussianHill, VariableShortcuts, basisSize>},
38 // {"Hhs1_Transposed", &create<Hhs1_Transposed, VariableShortcuts, basisSize>},
40 // {"Loh1_Transposed", &create<Loh1_Transposed, VariableShortcuts, basisSize>},
46
47 if (name2enum.find(scenario_string) == name2enum.end()) {
48 std::stringstream ss;
49 ss << "Unknown scenario: " << scenario_string;
50
51 throw std::invalid_argument(ss.str());
52 }
53
54 return name2enum[scenario_string](info);
55 }
56};
57
58#endif
static Scenario< V, B > * create(DomainInformation *info)
static Scenario< VariableShortcuts, basisSize > * createScenario(std::string &scenario_string, DomainInformation *info)