@@ -200,7 +200,7 @@ function kitaevZ(geometry::HoneycombGeometry{Open})
200
200
return bonds
201
201
end
202
202
203
- function isKitaevX (geometry:: HoneycombGeometry{Periodic} , bond:: Tuple{Int64,Int64} )
203
+ function isKitaevX (geometry:: HoneycombGeometry , bond:: Tuple{Int64,Int64} )
204
204
geometry. sizeX % 2 == 0 || throw (ArgumentError (" The sizeX must be even" ))
205
205
geometry. sizeY % 2 == 0 || throw (ArgumentError (" The sizeY must be even" ))
206
206
neighbor1 = kitaevX_neighbor (geometry, bond[1 ])
@@ -211,7 +211,9 @@ function isKitaevX(geometry::HoneycombGeometry{Periodic}, bond::Tuple{Int64,Int6
211
211
return false
212
212
end
213
213
214
- function isKitaevY (geometry:: HoneycombGeometry{Periodic} , bond:: Tuple{Int64,Int64} )
214
+
215
+
216
+ function isKitaevY (geometry:: HoneycombGeometry , bond:: Tuple{Int64,Int64} )
215
217
geometry. sizeX % 2 == 0 || throw (ArgumentError (" The sizeX must be even" ))
216
218
geometry. sizeY % 2 == 0 || throw (ArgumentError (" The sizeY must be even" ))
217
219
neighbor1 = kitaevY_neighbor (geometry, bond[1 ])
@@ -222,7 +224,7 @@ function isKitaevY(geometry::HoneycombGeometry{Periodic}, bond::Tuple{Int64,Int6
222
224
return false
223
225
end
224
226
225
- function isKitaevZ (geometry:: HoneycombGeometry{Periodic} , bond:: Tuple{Int64,Int64} )
227
+ function isKitaevZ (geometry:: HoneycombGeometry , bond:: Tuple{Int64,Int64} )
226
228
geometry. sizeX % 2 == 0 || throw (ArgumentError (" The sizeX must be even" ))
227
229
geometry. sizeY % 2 == 0 || throw (ArgumentError (" The sizeY must be even" ))
228
230
neighbor1 = kitaevZ_neighbor (geometry, bond[1 ])
@@ -233,7 +235,7 @@ function isKitaevZ(geometry::HoneycombGeometry{Periodic}, bond::Tuple{Int64,Int6
233
235
return false
234
236
end
235
237
236
- function isKekuleRed (geometry:: HoneycombGeometry{Periodic} , bond:: Tuple{Int64,Int64} )
238
+ function isKekuleRed (geometry:: HoneycombGeometry , bond:: Tuple{Int64,Int64} )
237
239
geometry. sizeX % 2 == 0 || throw (ArgumentError (" The sizeX must be even" ))
238
240
geometry. sizeY % 2 == 0 || throw (ArgumentError (" The sizeY must be even" ))
239
241
neighbor1 = kekuleRed_neighbor (geometry, bond[1 ])
@@ -244,7 +246,7 @@ function isKekuleRed(geometry::HoneycombGeometry{Periodic}, bond::Tuple{Int64,In
244
246
return false
245
247
end
246
248
247
- function isKekuleGreen (geometry:: HoneycombGeometry{Periodic} , bond:: Tuple{Int64,Int64} )
249
+ function isKekuleGreen (geometry:: HoneycombGeometry , bond:: Tuple{Int64,Int64} )
248
250
geometry. sizeX % 2 == 0 || throw (ArgumentError (" The sizeX must be even" ))
249
251
geometry. sizeY % 2 == 0 || throw (ArgumentError (" The sizeY must be even" ))
250
252
neighbor1 = kekuleGreen_neighbor (geometry, bond[1 ])
@@ -255,7 +257,7 @@ function isKekuleGreen(geometry::HoneycombGeometry{Periodic}, bond::Tuple{Int64,
255
257
return false
256
258
end
257
259
258
- function isKekuleBlue (geometry:: HoneycombGeometry{Periodic} , bond:: Tuple{Int64,Int64} )
260
+ function isKekuleBlue (geometry:: HoneycombGeometry , bond:: Tuple{Int64,Int64} )
259
261
geometry. sizeX % 2 == 0 || throw (ArgumentError (" The sizeX must be even" ))
260
262
geometry. sizeY % 2 == 0 || throw (ArgumentError (" The sizeY must be even" ))
261
263
neighbor1 = kekuleBlue_neighbor (geometry, bond[1 ])
@@ -266,38 +268,70 @@ function isKekuleBlue(geometry::HoneycombGeometry{Periodic}, bond::Tuple{Int64,I
266
268
return false
267
269
end
268
270
269
- function kitaevX_neighbor (geometry:: HoneycombGeometry{Periodic} , site:: Integer )
271
+
272
+
273
+ function kitaevX_neighbor (geometry:: HoneycombGeometry , site:: Integer )
270
274
geometry. sizeX % 2 == 0 || throw (ArgumentError (" The sizeX must be even" ))
271
275
geometry. sizeY % 2 == 0 || throw (ArgumentError (" The sizeY must be even" ))
272
276
i, j = to_grid (geometry, site)
273
277
if isodd (i)
274
- return to_linear (geometry, (i + 1 , j))
278
+ new = to_linear (geometry, (i + 1 , j))
279
+ if (site,new) in edges (geometry. graph)
280
+ return new
281
+ else
282
+ return nothing
283
+ end
275
284
else
276
- return to_linear (geometry, (i - 1 , j))
285
+ new = to_linear (geometry,(i - 1 , j))
286
+ if (site,new) in edges (geometry. graph)
287
+ return new
288
+ else
289
+ return nothing
290
+ end
277
291
end
278
292
end
279
293
280
294
281
295
282
- function kitaevY_neighbor (geometry:: HoneycombGeometry{Periodic} , site:: Integer )
296
+ function kitaevY_neighbor (geometry:: HoneycombGeometry , site:: Integer )
283
297
geometry. sizeX % 2 == 0 || throw (ArgumentError (" The sizeX must be even" ))
284
298
geometry. sizeY % 2 == 0 || throw (ArgumentError (" The sizeY must be even" ))
285
299
i, j = to_grid (geometry, site)
286
300
if iseven (i)
287
- return to_linear (geometry, (i + 1 , j))
301
+ new = to_linear (geometry, (i + 1 , j))
302
+ if (site,new) in edges (geometry. graph)
303
+ return new
304
+ else
305
+ return nothing
306
+ end
288
307
else
289
- return to_linear (geometry, (i - 1 , j))
308
+ new = to_linear (geometry, (i - 1 , j))
309
+ if (site,new) in edges (geometry. graph)
310
+ return new
311
+ else
312
+ return nothing
313
+ end
290
314
end
291
315
end
292
316
293
- function kitaevZ_neighbor (geometry:: HoneycombGeometry{Periodic} , site:: Integer )
317
+ function kitaevZ_neighbor (geometry:: HoneycombGeometry , site:: Integer )
294
318
geometry. sizeX % 2 == 0 || throw (ArgumentError (" The sizeX must be even" ))
295
319
geometry. sizeY % 2 == 0 || throw (ArgumentError (" The sizeY must be even" ))
296
320
i, j = to_grid (geometry, site)
297
321
if iseven (i)
298
- return to_linear (geometry, (i - 1 , j + 1 ))
322
+ new = to_linear (geometry, (i - 1 , j + 1 ))
323
+ if (site,new) in edges (geometry. graph)
324
+ return new
325
+ else
326
+ return nothing
327
+ end
299
328
else
300
- return to_linear (geometry, (i + 1 , j - 1 ))
329
+ new = to_linear (geometry, (i + 1 , j - 1 ))
330
+ if (site,new) in edges (geometry. graph)
331
+ return new
332
+ else
333
+ return nothing
334
+ end
301
335
end
302
336
end
303
337
@@ -488,7 +522,7 @@ function kekuleBlue_neighbor(geometry::HoneycombGeometry{Periodic}, site::Intege
488
522
end
489
523
end
490
524
491
- function bonds (geometry:: HoneycombGeometry{Periodic} ; kitaevType= :All , kekuleType= :All )
525
+ function bonds (geometry:: HoneycombGeometry ; kitaevType= :All , kekuleType= :All )
492
526
positions = Int64[]
493
527
if kitaevType == :All
494
528
if kekuleType == :All
0 commit comments