Bloch¶
-
class
sisl.physics.bloch.
Bloch
(*bloch)[source]¶ Bloch’s theorem object containing unfolding factors and unfolding algorithms
This class is a wrapper for expanding any matrix from a smaller matrix cell into a larger, using Bloch’s theorem. The general idea may be summarized in the following equation:
\[\begin{split}\mathbf M_{k}^N =\frac1N \; \sum_{ \substack{j=0\\ k_j=2\pi\frac{k+j}N } }^{N-1} \quad \begin{bmatrix} 1 & \cdots & e^{i (1-N)k_j} \\ e^{i k_j} & \cdots & e^{i (2-N)k_j} \\ \vdots & \ddots & \vdots \\ e^{i (N-1)k_j} & \cdots & 1 \end{bmatrix} \otimes \mathbf M_{k_j}^1.\end{split}\]- Parameters
- bloch(3,) int
Bloch repetitions along each direction
Examples
>>> bloch = Bloch([2, 1, 2]) >>> k_unfold = bloch.unfold_points([0] * 3) >>> M = [func(*args, k=k) for k in k_unfold] >>> bloch.unfold(M, k_unfold)
Attributes
Number of Bloch expansions along each lattice vector
Methods
__init__
(self, \*bloch)Create
Bloch
objectunfold
(self, M, k_unfold)Unfold the matrix list of matrices M into a corresponding k-point (unfolding k-points are k_unfold)
unfold_points
(self, k)Return a list of k-points to be evaluated for this objects unfolding
-
property
bloch
¶ Number of Bloch expansions along each lattice vector
-
unfold
(self, M, k_unfold)[source]¶ Unfold the matrix list of matrices M into a corresponding k-point (unfolding k-points are k_unfold)
- Parameters
- M(*, :, :)
an *-N-M matrix used for unfolding
- k_unfold(*, 3) of float
unfolding k-points as returned by
Bloch.unfold_points
- Returns
- M_unfoldunfolded matrix of size
M[0].shape * k_unfold.shape[0] ** 2
- M_unfoldunfolded matrix of size
-
unfold_points
(self, k)[source]¶ Return a list of k-points to be evaluated for this objects unfolding
The k-point k is with respect to the unfolded geometry. The return list of k points are the k-points required to be sampled in the folded geometry (
this.parent
).- Parameters
- k(3,) of float
k-point evaluation corresponding to the unfolded unit-cell
- Returns
- k_unfolda list of
np.prod(self.bloch)
k-points used for the unfolding
- k_unfolda list of