# 4.2. kwant.rmt – Random matrix theory Hamiltonians¶

kwant.rmt.gaussian(n, sym='A', v=1.0, rng=None)[source]

Make a n * n random Gaussian Hamiltonian.

Parameters: n : int Size of the Hamiltonian. It should be even for all the classes except A, D, and AI, and in class CII it should be a multiple of 4. sym : one of ‘A’, ‘AI’, ‘AII’, ‘AIII’, ‘BDI’, ‘CII’, ‘D’, ‘DIII’, ‘C’, ‘CI’ Altland-Zirnbauer symmetry class of the Hamiltonian. v : float Variance every degree of freedom of the Hamiltonian. The probaility distribution of the Hamiltonian is P(H) = exp(-Tr(H^2) / 2 v^2). rng: int or rng (optional) Seed or random number generator. If no ‘rng’ is provided the random number generator from numpy will be used. h : numpy.ndarray A numpy array drawn from a corresponding Gaussian ensemble.

Notes

The representations of symmetry operators are chosen according to Phys. Rev. B 85, 165409.

Matrix indices are grouped first according to orbital number, then sigma-index, then tau-index.

Chiral (sublattice) symmetry C always reads:
H = -tau_z H tau_z.
AI: H = H^*. BDI: H = tau_z H^* tau_z. CI: H = tau_x H^* tau_x. AII, CII: H = sigma_y H^* sigma_y. DIII: H = tau_y H^* tau_y.
C, CI: H = -tau_y H^* tau_y. CII: H = -tau_z sigma_y H^* tau_z sigma_y. D, BDI: H = -H^*. DIII: H = -tau_x H^* tau_x.

This implementation should be sufficiently efficient for large matrices, since it avoids any matrix multiplication.

kwant.rmt.circular(n, sym='A', charge=None, rng=None)[source]

Make a n * n matrix belonging to a symmetric circular ensemble.

Parameters: n : int Size of the matrix. It should be even for the classes C, CI, CII, AII, DIII (either T^2 = -1 or P^2 = -1). sym : one of ‘A’, ‘AI’, ‘AII’, ‘AIII’, ‘BDI’, ‘CII’, ‘D’, ‘DIII’, ‘C’, ‘CI’ Altland-Zirnbauer symmetry class of the matrix. charge : int or None Topological invariant of the matrix. Should be one of 1, -1 in symmetry classes D and DIII, should be from 0 to n in classes AIII and BDI, and should be from 0 to n / 2 in class CII. If charge is None, it is drawn from a binomial distribution with p = 1 / 2. rng: int or rng (optional) Seed or random number generator. If no ‘rng’ is passed, the random number generator provided by numpy will be used. s : numpy.ndarray A numpy array drawn from a corresponding circular ensemble.

Notes

The representations of symmetry operators are chosen according to Phys. Rev. B 85, 165409, except class D.

Matrix indices are grouped first according to channel number, then sigma-index.

Chiral (sublattice) symmetry C always reads:
s = s^+.
AI, BDI: r = r^T. CI: r = -sigma_y r^T sigma_y. AII, DIII: r = -r^T. CII: r = sigma_y r^T sigma_y.
4.1. kwant.digest – Random-access random numbers
4.3. kwant.kpm – Kernel Polynomial Method