Dear all,

I am having problems, that might be caused by the numerical precision of the smatrix solvers.

I use the sign of the determinant of the reflection matrix [1] for the topological classification of my system.
I calculate the reflection matrix with

smatrix = kwant.solvers.default.smatrix(syst, energy=0.0, params=params, out_leads=[0], in_leads=[0])

In some cases the returned determinant is close to zero, but with the wrong sign. I am sure, that the sign is wrong, because it is sometimes -1, when the system is definitely not topological. In these cases, the sign changes to +1 when the parameters only slightly change (+-0.005 t).

The code also works well for the most parts of the parameter space, i.e. everywhere where the absolute value of the determinant is not small.

Is there any way to increase the precision of smatrix? It might just be the result of some rounding / float precision.


Thanks,
Jannis


[1] https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.106.057001

Reply via email to