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

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.

Returns

s – A numpy array drawn from a corresponding circular ensemble.

Return type

numpy.ndarray

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.

CI: r = -sigma_y r^* sigma_y C, CII: r = sigma_y r^* sigma_y D, BDI: r = r^*. DIII: -r = r^*.

This function uses QR decomposition to probe symmetric compact groups, as detailed in arXiv:math-ph/0609050. For a reason as yet unknown, scipy implementation of QR decomposition also works for symplectic matrices.

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.

Returns

h – A numpy array drawn from a corresponding Gaussian ensemble.

Return type

numpy.ndarray

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.

#### Previous topic

4.1. kwant.digest – Random-access random numbers

#### Next topic

4.3. kwant.kpm – Kernel Polynomial Method