Dear all, I'm trying out Kwant, and I've encountered a problem when investigating 1D leads. The simplest minimal example would be to take your file "quantum_wire_revisited.py", set W=1 there, and change the energy window to energies=[0.01 * i for i in xrange(1000)] The lattice is plotted correctly, but the conductance calculation yields a "ValueError: expected square matrix". Changing "kwant.lattice.square" to "kwant.lattice.chain" does not solve the problem. Can you reproduce the error, or could there be a problem with my Kwant installation? Thanks! Regards, Thomas -- ----------------------------------------------------------- Dr. Thomas Schmidt Department of Physics Klingelbergstrasse 82 Phone: +41 61 267 3751 CH-4056 Basel Email: Thomas.L.Schmidt@gmx.de Switzerland http://www.thoschmidt.de ----------------------------------------------------------- --- This email is free from viruses and malware because avast! Antivirus protection is active. http://www.avast.com
Hi Thomas, Thomas Schmidt <thomas.schmidt@unibas.ch> writes:
I'm trying out Kwant, and I've encountered a problem when investigating 1D leads.
The problem that you encounter can be boiled down to the following program import kwant, numpy kwant.physics.modes(numpy.array([[2]]), numpy.array([[-1]])) You are asking for modes exactly at an energy where a new mode opens. This is something that is ill-defined. For now, to avoid this problem, you can simply add a small epsilon to your energies, like this: energies=[0.01 * i + 1e-6 for i in xrange(1000)] I'm not sure why the same problem does not appear for wider systems. (I'm not the one who wrote that part of Kwant.) Cheers, Christoph
On 12/17/2013 12:12 PM, christoph.groth@cea.fr wrote:
Hi Thomas,
Thomas Schmidt <thomas.schmidt@unibas.ch> writes:
I'm trying out Kwant, and I've encountered a problem when investigating 1D leads.
The problem that you encounter can be boiled down to the following program
import kwant, numpy kwant.physics.modes(numpy.array([[2]]), numpy.array([[-1]]))
You are asking for modes exactly at an energy where a new mode opens. This is something that is ill-defined. For now, to avoid this problem, you can simply add a small epsilon to your energies, like this:
energies=[0.01 * i + 1e-6 for i in xrange(1000)]
I'm not sure why the same problem does not appear for wider systems.
For wider systems, the band edge energy is some irrational number typically, so much harder to hit exactly as is the case for the 1D system, where it is exactly at E=2t (for the 4t onsite energy used in the example). Still, there should be a better error message - I had thought we had covered this case, but apparently not good enough ... Best, Michael
participants (3)
-
christoph.groth@cea.fr -
Michael Wimmer -
Thomas Schmidt