Md Afsar Reja via Kwant-discuss wrote:

> Is it possible to implement non-reciprocal hopping( e.g. different
> magnitude in left-right hopping like the non-hermitian Hatano-Nelson
> model ) in the current available Kwant version?

Hi, there is nothing that requires Kwant systems (in the sense of
low-level systems) to be Hermitian.  However, builders (which provide
the common way of creating such low-level systems through finalization
of a builder) enforce Hermiticity of hoppings.  In fact, the ways
builders work internally, every pair of hoppings (say H_ij and H_ji) is
only queried in one “way”, with the other “way” being deduced by
Hermitian conjugation.

For example, if you set hopping H_ij to some value, H_ji will be
implicitly set to the Hermitian conjugate.  Same situation if you set
H_ij to a value function.  Then that function will never be queried for
H_ji.  Instead, it will be assumed to equal the conjugate of H_ij.  And
if you set H_ji directly, then it will be H_ij that is implicit.

With builders, there is no way around it.  Changing this would require
modifying how they work internally.

However, nothing in builder enforces the Hermiticity of onsite elements,
which can be blocks when there is more than one orbital per site.  So,
if for your application non-Hermiticity on blocks on the diagonal is
sufficient, that can be done with builder.

Otherwise you need to implement a low-level system yourself, which
depending on what you want to simulate could be easy or complicated.
See the Kwant paper for an example.

Independently from the above, Kwant’s default solver (‘kwant.smatrix’,
for example) checks whether the Hamiltonian is Hermitian.  But this
check can be disabled with the check_hermiticity option.

Hope this helps
Christoph

Reply via email to