Dispersion
Diagonalization on paths and meshes.
- elphmod.dispersion.band_order(v, V, by_mean=True, dv=inf, eps=1e-10, status=True)[source]
Sort bands by overlap of eigenvectors at neighboring k points.
- Parameters:
- vndarray
List of eigenvalues.
- Vndarray
Corresponding list of eigenvectors.
- by_meanbool
Sort disentangled bands by average frequency?
- dvfloat
Maximum allowed difference between consecutive eigenvalues of the same band after disentanglement.
- epsfloat
Maximum difference between eigenvalues considered degenerate.
- statusbool
Show progress bar?
- Returns:
- ndarray
List of band indices that sort eigenstates.
- elphmod.dispersion.dispersion(matrix, k, angle=60, vectors=False, gauge=False, rotate=False, order=False, hermitian=True, broadcast=True, shared_memory=False, **order_kwargs)[source]
Diagonalize Hamiltonian or dynamical matrix for given k points.
- Parameters:
- matrixfunction
Matrix to be diagonalized as a function of k in crystal coordinates with period \(2 \pi\).
- kndarray
k points in crystal coordinates with period \(2 \pi\). Wave-vector components are stored along the last axis; the leading axes describe the mesh. The shapes of matrix and k together determine the shape of the results.
- anglefloat
Angle between the axes of the reciprocal lattice.
- vectorsbool
Return eigenvectors?
- gaugebool
Choose largest element of each eigenvector to be real? Not stable!
- rotatebool
Align (phonon) eigenvectors with wave vector k via in-plane rotation. This is experimental and supposed to support the band-order algorithm.
- orderbool
Order/disentangle bands via their k-local character? Depending on the topology of the band structure, this may not be possible. Adjacent points in k must be adjacent in the Brillouin zone too.
- hermitianbool
Assume matrix to be Hermitian, i.e., calculate real eigenvalues?
- broadcastbool
Broadcast result from rank 0 to all processes?
- shared_memorybool
Store results in shared memory?
- **order_kwargs
Keyword arguments passed to
band_order()
.
- Returns:
- ndarray
Eigenvalues for the given k points.
- ndarray, optional
Corresponding eigenvectors.
- ndarray, optional
Indices which have been used to order the bands.
- elphmod.dispersion.dispersion_full(matrix, size, angle=60, vectors=False, gauge=False, rotate=False, order=False, hermitian=True, broadcast=True, shared_memory=False, **order_kwargs)[source]
Diagonalize Hamiltonian or dynamical matrix on uniform k-point mesh.
- elphmod.dispersion.dispersion_full_nosym(matrix, size, vectors=False, order=False, *args, **kwargs)[source]
Diagonalize Hamiltonian or dynamical matrix on uniform k-point mesh.
Use this routine to get eigenvectors less symmetric than the eigenvalues!
- elphmod.dispersion.map_dispersions(V1, V2)[source]
Map two similar arrays of eigenvectors onto each other.
- elphmod.dispersion.sample(matrix, k, **kwargs)[source]
Calculate Hamiltonian or dynamical matrix for given k points.
- Parameters:
- matrixfunction
Matrix as a function of k.
- kndarray
k points.
- **kwargs
Keyword arguments passed to matrix.
- elphmod.dispersion.unfolding_weights(k, R, U0, U, blocks0=None, blocks=None, sgn=-1)[source]
Calculate weights for “unfolding” of supercell dispersions.
- Parameters:
- klist of d-tuples
k points in arbitrary representation.
- Rlist of d-tuples
Positions of the unit cells in the supercell. The representation must be compatible with the k points: If k is given in crystal coordinates with a period of \(2 \pi\), R must be given in crystal coordinates with a period of 1. k and R can also be defined in Cartesian coordinates.
- U0: ndarray
Eigenvectors of the symmetric system.
- U: ndarray
Eigenvectors of the supercell system.
- blocks0list of indexing objects, optional
Mapping from indices of R to slices of U0. By default, all orbitals are selected.
- blockslist of indexing objects, optional
Mapping from indices of R to slices of U. By default, it is assumed that the orbitals are grouped into blocks corresponding to unit cells. Within the blocks, the order of the orbitals is as in U0. The order of the blocks is as in R.
- sgnint
Sign convention for Fourier transform in tight-binding model. The default sign
-1
is suitable for data from Wannier90 as provided byelphmod.el.Model.H()
. Other conventions require+1
.
- Returns:
- ndarray
Weights of the supercell states.