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 - -1is suitable for data from Wannier90 as provided by- elphmod.el.Model.H(). Other conventions require- +1.
 
- Returns:
- ndarray
- Weights of the supercell states.