sisl.physics.Bloch
- class sisl.physics.Bloch
Bases:
object
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:
- 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)
Methods
unfold
(M, k_unfold)Unfold the matrix list of matrices M into a corresponding k-point (unfolding k-points are k_unfold)
Return a list of k-points to be evaluated for this objects unfolding
Attributes
Number of Bloch expansions along each lattice vector
- __call__(func, k, *args, **kwargs)[source]
Return a functions return values as the Bloch unfolded equivalent according to this object
Calling the
Bloch
object is a shorthand for the manual use of theBloch.unfold_points
andBloch.unfold
methods.This call structure is a shorthand for:
>>> 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)
Notes
The function passed must have a keyword argument
k
.- Parameters:
- Returns:
unfolded Bloch matrix
- Return type:
- unfold(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 unfoldingk_unfold (
(:
,3)
offloat
) – unfolding k-points as returned byBloch.unfold_points
- Returns:
unfolded matrix of size
M[0].shape * k_unfold.shape[0] ** 2
- Return type:
- unfold_points(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.
- Parameters:
k (
(3,)
offloat
) – k-point evaluation corresponding to the unfolded unit-cell- Returns:
a list of
np.prod(self.bloch)
k-points used for the unfolding- Return type:
- property bloch
Number of Bloch expansions along each lattice vector