Forked from
kwant / kwant
314 commits behind, 17 commits ahead of the upstream repository.
-
Anton Akhmerov authoredAnton Akhmerov authored
test_square.py 1.27 KiB
import square
from pytest import raises
from numpy.testing import assert_almost_equal
def test_nodeid_to_from_pos():
s = square.System((3, 4), 1)
raises(Exception, s.nodeid_from_pos, (0, -2))
raises(Exception, s.nodeid_from_pos, (-1, 3))
raises(Exception, s.nodeid_from_pos, (3, 1))
raises(Exception, s.pos_from_nodeid, -1)
raises(Exception, s.pos_from_nodeid, 12)
assert s.nodeid_from_pos((0, 0)) == 0
assert s.nodeid_from_pos(s.pos_from_nodeid(7)) == 7
assert s.pos_from_nodeid(s.nodeid_from_pos((2, 3))) == (2, 3)
def test_hamiltonian():
sys = square.System((4, 5), 1)
for i in range(sys.graph.num_nodes):
shape = sys.hamiltonian(i, i).shape
assert len(shape) == 2
assert shape[0] == 1
for j in sys.graph.out_neighbors(i):
m = sys.hamiltonian(i, j)
shape = m.shape
m_herm = m.T.conj()
assert_almost_equal(m, m_herm)
assert_almost_equal(m_herm, sys.hamiltonian(j, i))
def test_selfenergy():
syst = square.System((2, 4), 1)
for lead in range(len(syst.lead_interfaces)):
se = syst.leads[lead].selfenergy(0)
assert len(se.shape) == 2
assert se.shape[0] == se.shape[1]
assert se.shape[0] == len(syst.lead_interfaces[lead])