24 #ifndef COM_DAFER45_TBTK_MODEL_FACTORY
25 #define COM_DAFER45_TBTK_MODEL_FACTORY
29 #include "TBTK/StateSet.h"
30 #include "TBTK/StateTreeNode.h"
31 #include "TBTK/UnitCell.h"
34 #include <initializer_list>
50 static Model* createSquareLattice(
51 std::initializer_list<int> size,
52 std::initializer_list<bool> periodic,
53 std::complex<double> t
67 static Model* createHexagonalLattice(
68 std::initializer_list<int> size,
69 std::initializer_list<bool> periodic,
70 std::complex<double> t
74 static Model* createModel(
75 const StateSet &stateSet,
76 const AbstractOperator &o = DefaultOperator()
80 static Model* createModel(
81 const StateSet &stateSet,
82 const StateTreeNode &stateTreeNode,
83 const AbstractOperator &o = DefaultOperator()
101 static Model* createModel(
102 const UnitCell &unitCell,
103 std::initializer_list<int> size,
104 std::initializer_list<bool> periodic,
105 const bool *includedCells = NULL,
106 const AbstractOperator &o = DefaultOperator()
110 static void addSquareGeometry(
112 std::initializer_list<int> size
116 static void addHexagonalGeometry(
118 std::initializer_list<int> size
123 std::initializer_list<Model*> models
127 static void createSquareLattice1D(
129 std::initializer_list<int> size,
130 std::initializer_list<bool> periodic,
131 std::complex<double> t
135 static void createSquareLattice2D(
137 std::initializer_list<int> size,
138 std::initializer_list<bool> periodic,
139 std::complex<double> t
143 static void createSquareLattice3D(
145 std::initializer_list<int> size,
146 std::initializer_list<bool> periodic,
147 std::complex<double> t
151 static Model* createModel1D(
152 const UnitCell &unitCell,
153 std::initializer_list<int> size,
154 std::initializer_list<bool> periodic,
155 const bool *includedCells,
156 const AbstractOperator &o
160 static Model* createModel2D(
161 const UnitCell &unitCell,
162 std::initializer_list<int> size,
163 std::initializer_list<bool> periodic,
164 const bool *includedCells,
165 const AbstractOperator &o
169 static Model* createModel3D(
170 const UnitCell &unitCell,
171 std::initializer_list<int> size,
172 std::initializer_list<bool> periodic,
173 const bool *includedCells,
174 const AbstractOperator &o
178 static void addSquareGeometry1D(
180 std::initializer_list<int> size
184 static void addSquareGeometry2D(
186 std::initializer_list<int> size
190 static void addSquareGeometry3D(
192 std::initializer_list<int> size