pythtb.Lattice.k_shell_weights#

Lattice.k_shell_weights(nks, n_shell=1, return_shell=True, report=False)[source]#

Generates the finite difference weights on a k-shell.

This function uses the k-shells generated by nn_k_shell() to compute the weights for finite difference approximations of \(\nabla_{\mathbf{k}}\) on a Monkhorst-Pack k-mesh. To linear order, the following expression must be satisfied

\[\sum_{s}^{N_{\rm sh}} w_s \sum_{i}^{M_s} b_{\alpha}^{i,s} b_{\beta}^{i,s} = \delta_{\alpha,\beta}\]

where \(N_{\rm sh} \equiv\) n_shell is the number of shells defining the order of nearest neighbors, \(M_s\) is the number of k-points in the \(s\)-th shell, and \(b_{\alpha}^{i,s}\) is the \(\alpha\)-th Cartesian component of \(i\)-th vector connecting k-points to their nearest neighbors in the \(s\)-th shell.

Parameters:
n_shellint

The number of shells to consider.

reportbool

Whether to print a report of the k-shells.

Returns:
wnp.ndarray

The finite difference weights.

k_shelllist[np.ndarray[float]], optional

List of \(\mathbf{b}\) vectors in inverse units of lattice vectors connecting nearest neighbor k-mesh points. Length is n_shell.

idx_shelllist[np.ndarray[int]], optional

Each entry is an array of integer shifts that takes a k-point index in the mesh to its nearest neighbors. Length is n_shell.