Category:Wannier functions: Difference between revisions

From VASP Wiki
No edit summary
No edit summary
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Wannier functions <math>|w_{m\mathbf{R}}\rangle</math> are constructed by a linear combination of Bloch states <math>|\psi_{n\mathbf{k}}\rangle</math>, i.e., the computed Kohn-Sham (KS) orbitals, as follows:
Wannier functions <math>|w_{m\mathbf{R}}\rangle</math> are constructed by a linear combination of Bloch states <math>|\psi_{n\mathbf{k}}\rangle</math>, i.e., the computed Kohn-Sham (KS) orbitals, as follows:


<math>
::<math>
|w_{m\mathbf{R}}\rangle =
|w_{m\mathbf{R}}\rangle =
\sum_{n\mathbf{k}}
\sum_{n\mathbf{k}}
Line 10: Line 10:


Here, <math>U_{mn\mathbf{k}}</math> is a unitary matrix which can be generated using different approaches discussed below, <math>m</math> is an index enumerating Wannier functions with position <math>\mathbf{R}</math>, <math>n</math> is the band index, and <math>\mathbf{k}</math> is the Bloch vector.
Here, <math>U_{mn\mathbf{k}}</math> is a unitary matrix which can be generated using different approaches discussed below, <math>m</math> is an index enumerating Wannier functions with position <math>\mathbf{R}</math>, <math>n</math> is the band index, and <math>\mathbf{k}</math> is the Bloch vector.
Generally, one starts with an initial guess for <math>U_{mn\mathbf{k}}</math> that is build from <math>A_{mn\mathbf{k}}</math>. The latter can be build from projections onto some localized-orbital basis.
Generally, one starts with an initial guess for <math>U_{mn\mathbf{k}}</math> that is built from <math>A_{mn\mathbf{k}}</math>. The latter can be built from projections onto some localized-orbital basis.


== One-shot single value decomposition (SVD)==
* Comprehensive instructions on [[Constructing Wannier orbitals|how to construct Wannier orbitals]].
 
== One-shot singular-value decomposition (SVD)==


In one-shot SVD, <math>A_{mn\mathbf{k}}</math> is computed by projecting the KS orbitals onto localized orbitals basis <math>\phi_{m\mathbf{k}}</math> that is specified by the {{TAG|LOCPROJ}} tag:
In one-shot SVD, <math>A_{mn\mathbf{k}}</math> is computed by projecting the KS orbitals onto localized orbitals basis <math>\phi_{m\mathbf{k}}</math> that is specified by the {{TAG|LOCPROJ}} tag:


<math>
::<math>
A_{mn\mathbf{k}} =  
A_{mn\mathbf{k}} =  
\langle \psi_{n\mathbf{k}} | S |\phi_{m\mathbf{k}}\rangle,
\langle \psi_{n\mathbf{k}} | S |\phi_{m\mathbf{k}}\rangle,
Line 23: Line 25:
where
where


<math>
::<math>
\phi_{i\mathbf{k}}(\mathbf{r}) = e^{\mathrm{i}\mathbf{k}\cdot\mathbf{r}} Y_{lm}(\hat{r})R_n(r).
\phi_{i\mathbf{k}}(\mathbf{r}) = e^{\mathrm{i}\mathbf{k}\cdot\mathbf{r}} Y_{lm}(\hat{r})R_n(r).
</math>
</math>
Line 31: Line 33:
Then, VASP performs one-shot SVD for each k point
Then, VASP performs one-shot SVD for each k point


<math>
::<math>
A_{mn\mathbf{k}} = [D \Sigma V^*]_{mn\mathbf{k}}
A_{mn\mathbf{k}} = [D \Sigma V^*]_{mn\mathbf{k}}
</math>
</math>
Line 37: Line 39:
to obtain the unitary matrix
to obtain the unitary matrix


<math>
::<math>
U_{mn\mathbf{k}} = [DV^*]_{mn\mathbf{k}}.
U_{mn\mathbf{k}} = [DV^*]_{mn\mathbf{k}}.
</math>
</math>
Line 43: Line 45:
== Selected columns of the density matrix (SCDM) ==
== Selected columns of the density matrix (SCDM) ==


The SCDM method {{cite|dale:mms:2018}} is switched on using {{TAG|LSCDM}}. It has the advantage that the specification of a local basis in terms of atomic quantum numbers is omitted.  
The SCDM method {{cite|damle:mms:2018}} is switched on using {{TAG|LSCDM}}. It has the advantage that the specification of a local basis in terms of atomic quantum numbers is omitted.  


== Maximally localized Wannier functions using Wannier90 ==
== Maximally localized Wannier functions using Wannier90 ==


The interface of VASP with the Wannier90 code is mainly controlled by {{TAG|LWANNIER90}} and {{TAG|LWANNIER90_RUN}}. First, the initial guess for <math>A_{mn\mathbf{k}}</math> can be created by providing the ''projections block'' in the '''wannier90.win''' file (also see {{TAG|WANNIER90_WIN}}) and setting {{TAG|LWANNIER90}}=True.  
The interface of VASP with the Wannier90 code{{cite|mostofi:cpc:2014}}{{cite|pizzi:jpcm:2020}} is mainly controlled by {{TAG|LWANNIER90}} and {{TAG|LWANNIER90_RUN}}. First, the initial guess for <math>A_{mn\mathbf{k}}</math> can be created by providing the ''projections block'' in the '''wannier90.win''' file (also see {{TAG|WANNIER90_WIN}}) and setting {{TAG|LWANNIER90}}=True.  


In order to obtain maximally localized Wannier functions, <math>U_{mn\mathbf{k}}</math> is constructed in a second step. For this, <math>A_{mn\mathbf{k}}</math> could be created using any projection method in the first step, i.e., single-shot SVD method ({{TAG|LOCPROJ}}), SCDM method ({{TAG|LSCDM}}), or Wannier90 ({{TAG|LWANNIER90}}). Then, Wannier90 can be executed directly or through VASP with the {{TAG|LWANNIER90_RUN}} tag.
In order to obtain maximally localized Wannier functions, <math>U_{mn\mathbf{k}}</math> is constructed in a second step. For this, <math>A_{mn\mathbf{k}}</math> could be created using any projection method in the first step, i.e., single-shot SVD method ({{TAG|LOCPROJ}}), SCDM method ({{TAG|LSCDM}}), or Wannier90 ({{TAG|LWANNIER90}}). Then, Wannier90 can be executed directly or through VASP with the {{TAG|LWANNIER90_RUN}} tag.

Latest revision as of 13:11, 27 February 2025

Wannier functions [math]\displaystyle{ |w_{m\mathbf{R}}\rangle }[/math] are constructed by a linear combination of Bloch states [math]\displaystyle{ |\psi_{n\mathbf{k}}\rangle }[/math], i.e., the computed Kohn-Sham (KS) orbitals, as follows:

[math]\displaystyle{ |w_{m\mathbf{R}}\rangle = \sum_{n\mathbf{k}} e^{-i\mathbf{k}\cdot\mathbf{R}} U_{mn\mathbf{k}} |\psi_{n\mathbf{k}}\rangle. }[/math]

Here, [math]\displaystyle{ U_{mn\mathbf{k}} }[/math] is a unitary matrix which can be generated using different approaches discussed below, [math]\displaystyle{ m }[/math] is an index enumerating Wannier functions with position [math]\displaystyle{ \mathbf{R} }[/math], [math]\displaystyle{ n }[/math] is the band index, and [math]\displaystyle{ \mathbf{k} }[/math] is the Bloch vector. Generally, one starts with an initial guess for [math]\displaystyle{ U_{mn\mathbf{k}} }[/math] that is built from [math]\displaystyle{ A_{mn\mathbf{k}} }[/math]. The latter can be built from projections onto some localized-orbital basis.

One-shot singular-value decomposition (SVD)

In one-shot SVD, [math]\displaystyle{ A_{mn\mathbf{k}} }[/math] is computed by projecting the KS orbitals onto localized orbitals basis [math]\displaystyle{ \phi_{m\mathbf{k}} }[/math] that is specified by the LOCPROJ tag:

[math]\displaystyle{ A_{mn\mathbf{k}} = \langle \psi_{n\mathbf{k}} | S |\phi_{m\mathbf{k}}\rangle, }[/math]

where

[math]\displaystyle{ \phi_{i\mathbf{k}}(\mathbf{r}) = e^{\mathrm{i}\mathbf{k}\cdot\mathbf{r}} Y_{lm}(\hat{r})R_n(r). }[/math]

Note that [math]\displaystyle{ i }[/math] encodes the quantum numbers [math]\displaystyle{ n }[/math], [math]\displaystyle{ l }[/math], and [math]\displaystyle{ m }[/math]. Thus, in [math]\displaystyle{ A_{mn\mathbf{k}} }[/math], [math]\displaystyle{ m }[/math] is not the magnetic quantum number.

Then, VASP performs one-shot SVD for each k point

[math]\displaystyle{ A_{mn\mathbf{k}} = [D \Sigma V^*]_{mn\mathbf{k}} }[/math]

to obtain the unitary matrix

[math]\displaystyle{ U_{mn\mathbf{k}} = [DV^*]_{mn\mathbf{k}}. }[/math]

Selected columns of the density matrix (SCDM)

The SCDM method [1] is switched on using LSCDM. It has the advantage that the specification of a local basis in terms of atomic quantum numbers is omitted.

Maximally localized Wannier functions using Wannier90

The interface of VASP with the Wannier90 code[2][3] is mainly controlled by LWANNIER90 and LWANNIER90_RUN. First, the initial guess for [math]\displaystyle{ A_{mn\mathbf{k}} }[/math] can be created by providing the projections block in the wannier90.win file (also see WANNIER90_WIN) and setting LWANNIER90=True.

In order to obtain maximally localized Wannier functions, [math]\displaystyle{ U_{mn\mathbf{k}} }[/math] is constructed in a second step. For this, [math]\displaystyle{ A_{mn\mathbf{k}} }[/math] could be created using any projection method in the first step, i.e., single-shot SVD method (LOCPROJ), SCDM method (LSCDM), or Wannier90 (LWANNIER90). Then, Wannier90 can be executed directly or through VASP with the LWANNIER90_RUN tag.

References