Majoranapp
A C++ library for studying MZM in non-interacting systems
SpinlessUniform2D.hpp
Go to the documentation of this file.
1 #ifndef FACTORY_SPINLESSUNIFORMC2D_HPP
2 #define FACTORY_SPINLESSUNIFORMC2D_HPP
3 
4 #include "../Hamiltonian.hpp"
5 #include "../QuantumSystem.hpp"
6 #include "../Filler.hpp"
7 
8 #include "../VectorViewers/Grid2DViewer.hpp"
9 
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 phaseX = -0.5 * M_PI;
35  double phaseY = 0.0;
36  int length = dimensions.GetLength();
37  int width = dimensions.GetWidth();
38  int N = length * width;
39  Hamiltonian<T> ham(N, deg);
40 
41  // local terms
42  for (int i = 0; i < N; i++)
43  {
44  Filler<Spinless::ChemicalTerm>::Fill(ham, parameters, i);
45  }
46 
47  // x-direction links
48  for (int y = 0; y < width; y++)
49  {
50  for (int x = 0; x < length - 1; x++)
51  {
52  int from = y * length + x;
53  int to = y * length + x + 1;
54  //std::cout << "(" << from << ", " << to << ")" << std::endl;
55  Filler<Spinless::KineticTerm>::Fill(ham, parameters, from, to);
56  Filler<Spinless::ProxTerm>::Fill(ham, parameters, from, to, phaseX);
57  }
58  }
59 
60  //std::cout << std::endl;
61 
62  // y-direction links
63  for (int x = 0; x < length; x++)
64  {
65  for (int y = 0; y < width - 1; y++)
66  {
67  int from = y * length + x;
68  int to = (y + 1) * length + x;
69  //std::cout << "(" << from << ", " << to << ")" << std::endl;
70  Filler<Spinless::KineticTerm>::Fill(ham, parameters, from, to);
71  Filler<Spinless::ProxTerm>::Fill(ham, parameters, from, to, phaseY);
72  }
73  }
74 
75  return ham;
76  }
77 
78  static constexpr char name[] = "SpinlessUniform2D";
79 
80 };
81 
82 #endif
Parameters parameters
Definition: QuantumSystem.hpp:15
Hamiltonian class for counting MZM in non-interacting systems.
Definition: Hamiltonian.hpp:13
static Hamiltonian< T > Generate(QuantumSystem &quantumSystem)
Definition: SpinlessUniform2D.hpp:28
displays vectors with sites numbered in 2D grid,
Definition: Grid2DViewer.hpp:16
Dimensions dimensions
Definition: QuantumSystem.hpp:16
class containing all information about quantum system, which is needed for hamiltonian construction ...
Definition: QuantumSystem.hpp:12
static constexpr char name[]
Definition: SpinlessUniform2D.hpp:78
static void Fill(Hamiltonian< T > &ham, Targs... Fargs)
Definition: Filler.hpp:51
Spinless uniform 2D plaquette with open boundary conditions.
Definition: SpinlessUniform2D.hpp:24