Notes on my answer: I'll mainly link to arXiv versions of papers, but will also link the peer-reviewed version if the arXiv page doesn't do that itself. DFA means "density functional approximation", and MLWFs are maximally localized Wannier functions.
Helpful resources for wannier90
include its user guide and the 2008 Comput. Phys. Comm. article that introduced it to the world.
1) Energy windows
The inner (or frozen) and outer energy windows are parameters required by the disentanglement procedure of Souza, Marzari, and Vanderbilt, PRB (2001). Whenever the collection of bands you're interested in is entangled—that is, when there is no energy gap separating it from both higher- and lower-energy bands at every point in the Brillouin zone—you need to use this disentanglement to cause it to be composite.
This step actually changes the band structure a little, at the top and bottom of the outer energy window, where bands are being deflected away from the cutoffs. These cutoffs are known as dis_win_min
and dis_win_max
. By default, they are the lowest- (highest-)energy eigenvalues in your calculation, allowing all the bands to be included in the disentanglement procedure. In my work I've never had to specify otherwise.
The inner window, specified by dis_froz_min
and dis_froz_max
, is a smaller energy range on which disentanglement isn't allowed to change the band structure. What this is allowed to be depends on the question you're asking, as well as the actual range of the band structure you're looking at. I usually like to make sure the occupied states don't change under disentanglement, so I set dis_froz_max
a little higher than the Fermi energy. I've never had to adjust dis_froz_min
, because the disentanglement usually happens at higher energies, but if you want to ignore shallow core states you might set it some distance or other below the Fermi energy.
2) Orbital projections
This is basically the initial guess for wannier90
. If use_bloch_phases = .TRUE.
, it just uses the canonical Kohn–Sham orbitals; they're not very close to the maximally localized Wannier functions, except maybe for small isolated systems, but the localization procedure is robust enough that it might work anyway.
If you have some idea about the chemical bonding happening in your system, you could use the projections
block; for instance onto sp3 orbitals centered between atoms or something. See section 3.1 of the User Guide for this.
Personally, I prefer to use set auto_projections = .TRUE.
instead, and then use a method called SCDM, for Selected Columns of the Density Matrix (initial theory and its peer-reviewed version, extension to bulk systems (peer reviewed here), and with disentanglement built in (peer reviewed)). SCDM automatically selects what are usually reasonably localized initial guesses, based on the nearsightedness principle: Because the one-body density matrix follows an exponential decay
$$ \rho(\mathbf{r}, \mathbf{r}') \sim e^{-\lvert \mathbf{r} - \mathbf{r}' \rvert}, $$
you can perform a QR decomposition with column pivoting and get a few columns of $\rho(\mathbf{r},\mathbf{r'})$ that are fairly localized orbitals. In my experience, SCDM orbitals work really nicely as initial guesses for MLWFs. This 2020 paper by Vitale and coworkers demonstrates the usefulness of SCDM as an automatable initial-guess generator.
The actual SCDM calculation is done in pw2wannier90
; see section 3.5 of the user guide linked above.