pythtb.Wannier.project#
- Wannier.project(tf_list=None, band_idxs=None, use_tilde=False)[source]#
Perform Wannierization via optimal alignment with trial functions (single-shot SVD).
Constructs Bloch-like states \(\tilde{\psi}_{n\mathbf{k}}\) by maximizing their overlap with user-specified trial functions using a per-\(\mathbf{k}\) singular-value decomposition. Specifically, for the overlap matrix
\[A_{n j}(\mathbf{k}) \;=\; \langle \psi_{n\mathbf{k}} \mid t_j \rangle ,\]we compute \(A(\mathbf{k}) = V(\mathbf{k}) \Sigma(\mathbf{k}) W^\dagger(\mathbf{k})\) and rotate the selected energy eigenstates by \(U(\mathbf{k}) \equiv V(\mathbf{k}) W^\dagger(\mathbf{k})\):
\[\tilde{\psi}_{n\mathbf{k}} \;=\; \sum_{m\in \texttt{band_idxs}} U_{nm}(\mathbf{k}) \, \psi_{m\mathbf{k}} .\]This realizes the optimal alignment described in [1] (Sec. II) and used in the disentanglement initialization of [2].
Sets the Wannier functions in home unit cell with associated spreads, centers, trial functions and Bloch-like (tilde) states using the single shot projection method.
- Parameters:
- tf_listlist, optional
Trial wavefunctions. If omitted, previously set trials are used.
- band_idxslist, optional
Indices of energy bands to project (defaults to occupied manifold).
- use_tildebool, optional
If True, project onto the current Bloch-like subspace instead of the original energy eigenstates. This can be used to re-wannierize a set of Bloch-like states with a different set of trial functions. By default False.
- Returns:
- w_0nnp.ndarray
Wannier functions in the home unit cell, obtained by inverse FFT of \(\tilde{\psi}_{n\mathbf{k}}\).
Notes
This routine does not perform iterative minimization of \(\Omega\); it provides a high-quality initial guess via SVD alignment.
References