Dear Qingtian, kwant.lattice.honeycomb() creates a honeycomb lattice that as you noted lets you also access easily next-nearest neighbors via neighbors(2). There are two things to note here: 1. kwant.lattice.honeycomb() just creates a lattice - this is not a Hamiltonian yet. For this you need to specify values that you do with kwant.Builder() - this always the same in kwant. (Please check the tutorial examples). That said, you can implement any Hamiltonian that lives on the honeycomb lattice using kwant.lattice.honeycomb(). 2. Note that if all next-nearest-neighbor hoppings have the same value, things are easy and you can just write for example sys[lat.neighbors(2)] = 0.1 However, you can also specify each type of hopping (i.e. all hoppings that go in a certain direction) separately, using kwant.HoppingKind. Note that in fact lat.neighbors() returns a *list* of kwant.HoppingKinds. How to set individual hoppings in kwant is demonstrated on the simpler example of a square lattice and spin-orbit in tutorial 2.3.1. Pleae note that we cannot give specific advice on how to implement a particular physical model, although you are welcome to ask questions if you have specific problems with code in kwant. Best, Michael
Dear all, I note that we can easily consider the next-nearest-neighbor hopping in honeycomb, however, what is the model (Hamiltonian) for this code? In graphene, the intrinsic SOI is included in the reference:PRL 95, 226801 (2005) and we also have that in silicene: PRL 110, 026603 (2013). Is the model for Kwant the same as the two reference papers? Moreover,can we consider the Rashba SOI using the Tinyarray package in honeycomb? the hoppings along x and y direction are more complicated in honeycomb. Regards, Qingtian Zhang