1 #ifndef PARSERS_MODELSELECTOR_HPP 2 #define PARSERS_MODELSELECTOR_HPP 7 #include "../Factory.hpp" 9 #include "../QuantumSystem.hpp" 10 #include "../QuantumSystem/Parameters.hpp" 11 #include "../QuantumSystem/Dimensions.hpp" 12 #include "../VectorViewer.hpp" 26 template<
class T1,
class T2>
40 switch (
str2int(selectedModel.c_str()))
44 return GetHamiltonian<SpinfullUniform3D,T>(quantumSystem);
46 return GetHamiltonian<SpinfullUniform2D,T>(quantumSystem);
48 return GetHamiltonian<SpinfullUniformChain,T>(quantumSystem);
50 return GetHamiltonian<SpinfullUserDefined,T>(quantumSystem);
54 return GetHamiltonian<SpinlessUniform2D,T>(quantumSystem);
56 return GetHamiltonian<SpinlessUniformChain,T>(quantumSystem);
58 return GetHamiltonian<SpinlessUserDefined,T>(quantumSystem);
62 Info::Warning(
"Running with default: ",
"SpinfullUniformChain @ " + selectedMatrixType);
63 return GetHamiltonian<SpinfullUniformChain,T>(quantumSystem);
69 return selectedMatrixType ==
"sparse";
74 return selectedMatrixType ==
"dense";
85 return SelectModel<arma::sp_mat>(quantumSystem);
96 return SelectModel<arma::mat>(quantumSystem);
static bool SparseSelected()
Definition: ModelSelector.hpp:67
selecting model through name
Definition: ModelSelector.hpp:17
class which produces stuff
Definition: Factory.hpp:27
constexpr unsigned int str2int(const char *str, int h=0)
converting c_str() into constexpr int, which can be used in switch statement
Definition: Misc.hpp:19
static auto SelectDense(QuantumSystem &quantumSystem)
arma::mat template specialization
Definition: ModelSelector.hpp:94
static std::string selectedMatrixType
Definition: ModelSelector.hpp:23
static std::string GetSelected()
Get the Selected object.
Definition: ModelSelector.hpp:104
static auto SelectModel(QuantumSystem &quantumSystem)
Definition: ModelSelector.hpp:35
static auto SelectSparse(QuantumSystem &quantumSystem)
arma::sp_mat template specialization
Definition: ModelSelector.hpp:83
static bool DenseSelected()
Definition: ModelSelector.hpp:72
static auto GetHamiltonian(QuantumSystem &quantumSystem)
Definition: ModelSelector.hpp:27
static std::string selectedModel
Definition: ModelSelector.hpp:22
class containing all information about quantum system, which is needed for hamiltonian construction ...
Definition: QuantumSystem.hpp:12
static ViewerFunction View
Definition: VectorViewer.hpp:22
static constexpr char name[]
Definition: SpinlessUserDefined.hpp:41
static std::vector< std::string > supportedModels
Definition: ModelSelector.hpp:24
static constexpr char name[]
Definition: SpinfullUserDefined.hpp:41
static void Warning(std::string text, std::string note="")
Warning sent to std::cout.
Definition: Basics.hpp:102