Bloch¶
-
class
sisl.physics.
Bloch
(*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:
\[\begin{split}\mathbf M_{K}^N =\frac1N \; \sum_{ \substack{j=0\\ k_j=\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
__dict__
__doc__
__module__
__weakref__
list of weak references to the object (if defined)
Number of Bloch expansions along each lattice vector
Methods
__call__
(func, k, *args, **kwargs)Return a functions return values as the Bloch unfolded equivalent according to this object
__delattr__
Implement delattr(self, name).
__dir__
Default dir() implementation.
__eq__
Return self==value.
__format__
Default object formatter.
__ge__
Return self>=value.
__getattribute__
Return getattr(self, name).
__gt__
Return self>value.
__hash__
Return hash(self).
__init__
(*bloch)Create
Bloch
object__init_subclass__
This method is called when a class is subclassed.
__le__
Return self<=value.
__len__
()Return unfolded size
__lt__
Return self<value.
__ne__
Return self!=value.
__new__
Create and return a new object.
__reduce__
Helper for pickle.
__reduce_ex__
Helper for pickle.
__repr__
Return repr(self).
__setattr__
Implement setattr(self, name, value).
__sizeof__
Size of object in memory, in bytes.
__str__
()Representation of the Bloch model
__subclasshook__
Abstract classes can override this to customize issubclass().
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
-
property
bloch
¶ Number of Bloch expansions along each lattice vector
-
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) of float) – unfolding k-points as returned by
Bloch.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 (
this.parent
).- Parameters
k ((3,) of float) – 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
k_unfold