@@ -13,9 +13,11 @@ using Combinatorics: permutations
1313
1414# exports
1515export S_xx, S_yy, S_zz, S_x, S_y, S_z
16+ export c_plusmin, c_minplus, c_number
1617export force_planar
1718export symm_mul_mpo
18- export transverse_field_ising, heisenberg_XXX, bilinear_biquadratic_model, XY_model
19+ export transverse_field_ising, heisenberg_XXX, bilinear_biquadratic_model, XY_model,
20+ kitaev_model
1921export classical_ising, finite_classical_ising, sixvertex
2022
2123# using TensorOperations
@@ -224,6 +226,61 @@ function bilinear_biquadratic_model(::Type{SU2Irrep}; θ=atan(1 / 3), L=Inf)
224226 end
225227end
226228
229+ function c_plusmin ()
230+ P = Vect[FermionParity](0 => 1 , 1 => 1 )
231+ t = zeros (ComplexF64, P^ 2 ← P^ 2 )
232+ I = sectortype (P)
233+ t[(I (1 ), I (0 ), dual (I (0 )), dual (I (1 )))] .= 1
234+ return t
235+ end
236+
237+ function c_minplus ()
238+ P = Vect[FermionParity](0 => 1 , 1 => 1 )
239+ t = zeros (ComplexF64, P^ 2 ← P^ 2 )
240+ I = sectortype (t)
241+ t[(I (0 ), I (1 ), dual (I (1 )), dual (I (0 )))] .= 1
242+ return t
243+ end
244+
245+ function c_plusplus ()
246+ P = Vect[FermionParity](0 => 1 , 1 => 1 )
247+ t = zeros (ComplexF64, P^ 2 ← P^ 2 )
248+ I = sectortype (t)
249+ t[(I (1 ), I (1 ), dual (I (0 )), dual (I (0 )))] .= 1
250+ return t
251+ end
252+
253+ function c_minmin ()
254+ P = Vect[FermionParity](0 => 1 , 1 => 1 )
255+ t = zeros (ComplexF64, P^ 2 ← P^ 2 )
256+ I = sectortype (t)
257+ t[(I (0 ), I (0 ), dual (I (1 )), dual (I (1 )))] .= 1
258+ return t
259+ end
260+
261+ function c_number ()
262+ P = Vect[FermionParity](0 => 1 , 1 => 1 )
263+ t = zeros (ComplexF64, P ← P)
264+ block (t, fℤ₂ (1 )) .= 1
265+ return t
266+ end
267+
268+ function kitaev_model (; t= 1.0 , mu= 1.0 , Delta= 1.0 , L= Inf )
269+ TB = scale! (c_plusmin () + c_minplus (), - t / 2 ) # tight-binding term
270+ SC = scale! (c_plusplus () + c_minmin (), Delta / 2 ) # superconducting term
271+ CP = scale! (c_number (), - mu) # chemical potential term
272+
273+ if L == Inf
274+ lattice = PeriodicArray ([space (TB, 1 )])
275+ return InfiniteMPOHamiltonian (lattice, (1 , 2 ) => TB + SC, (1 ,) => CP)
276+ else
277+ lattice = fill (space (TB, 1 ), L)
278+ terms = Iterators. flatten ((((i, i + 1 ) => TB + SC for i in 1 : (L - 1 )),
279+ (i,) => CP for i in 1 : L))
280+ return FiniteMPOHamiltonian (lattice, terms)
281+ end
282+ end
283+
227284function ising_bond_tensor (β)
228285 t = [exp (β) exp (- β); exp (- β) exp (β)]
229286 r = eigen (t)
0 commit comments