eigenΒΆ

The eigenvalues and eigenvectors of the Hamiltonian at the convergence are exported in NumPy zip (npz) format. Using the string (referred to as eigen_str) specified by the keyword eigen in file.output section in the parameter file, the filename is chosen as eigen_str.npz.

The following code is an example for reading the data from the output file.

import numpy as np
data = np.load("eigen_str.npz")
eigenvalue = data["eigenvalue"]
eigenvector = data["eigenvector"]

wavevector_unit = data["wavevector_unit"]
wavevector_index = data["wavevector_index"]

eigenvalue contains the eigenvalues \(\lambda_l(\vec{k})\) for each wave number. The wave number is taken in unit of sublattice when the sublattice is considered. The data format is a numpy ndarray with the layout as eigenvalue[k][l], where k refers to the linearlized index of the wave number vector \(\vec{k}\) (see below), and l refers to the index of eigenvalue. When Sz is fixed, l is given by l = l' + Norb * s where l' is the index of the eigenvalue in a cell, and s refers to the spin index (0 for up-spin, and 1 for down-spin).

eigenvector contains the corresponding eigenvectors. The data format is a numpy ndarray with the layout as eigenvector[k][j][l], where k and l refer to the indices of the corresponding wave number and eigenvalue, and j refers to the index of the orbital and spin in a cell.

wavevector_unit and wavevector_index refer to the information of the wave number vectors. wavevector_unit contains the unit wave number vectors given by \(2\pi\vec{b}_i/N_i\) with \(\vec{b}_i\) being reciprocal lattice vectors. wavevector_index contains the map from the index k to the indices of the wave number vector (kx, ky, kz). The wave number vector that corresponds to the index k is obtained by

k_vec = np.dot(wavevector_index[k], wavevector_unit)