Majoranapp
A C++ library for studying MZM in non-interacting systems
SpinlessUniformChain.hpp
Go to the documentation of this file.
1 #ifndef FACTORY_SPINLESSUNIFORMCHAIN_HPP
2 #define FACTORY_SPINLESSUNIFORMCHAIN_HPP
3 
4 #include "../Hamiltonian.hpp"
5 #include "../QuantumSystem.hpp"
6 #include "../Filler.hpp"
7 #include "../Info.hpp"
8 
9 #include "../VectorViewers/DefaultViewer.hpp"
10 
25 {
26 public:
27  template <class T>
28  static Hamiltonian<T> Generate(QuantumSystem &quantumSystem)
29  {
30  Dimensions &dimensions = quantumSystem.dimensions;
31  Parameters &parameters = quantumSystem.parameters;
32 
33  int deg = 2;
34  double phase = 0.0;
35  int L = dimensions.GetLength();
36 
37  // check width and height for warning
38  int W = dimensions.GetWidth();
39  int H = dimensions.GetHeight();
41 
42  Hamiltonian<T> ham(L, deg);
43  for (int i = 0; i < L - 1; i++)
44  {
45  Filler<Spinless::KineticTerm>::Fill(ham, parameters, i, i + 1);
46  Filler<Spinless::ProxTerm>::Fill(ham, parameters, i, i + 1, phase);
47  }
48  for (int i = 0; i < L; i++)
49  {
50  Filler<Spinless::ChemicalTerm>::Fill(ham, parameters, i);
51  }
52 
53  return ham;
54  }
55 
56  static constexpr char name[] = "SpinlessUniformChain";
57 
58 };
59 
60 #endif
Parameters parameters
Definition: QuantumSystem.hpp:15
displays vectors as unnumbered sites
Definition: DefaultViewer.hpp:12
static Hamiltonian< T > Generate(QuantumSystem &quantumSystem)
Definition: SpinlessUniformChain.hpp:28
Hamiltonian class for counting MZM in non-interacting systems.
Definition: Hamiltonian.hpp:13
Spinless uniform 1D chain with open boundary conditions.
Definition: SpinlessUniformChain.hpp:24
static constexpr char name[]
Definition: SpinlessUniformChain.hpp:56
Dimensions dimensions
Definition: QuantumSystem.hpp:16
class containing all information about quantum system, which is needed for hamiltonian construction ...
Definition: QuantumSystem.hpp:12
static void DimensionsWarningOnly1D(int length, int width, int height)
checks if height and width are equal 0
Definition: DimensionsWarning.hpp:19
static void Fill(Hamiltonian< T > &ham, Targs... Fargs)
Definition: Filler.hpp:51