Interpolation
This page lists struct
and function
s for Wannier interpolation.
There are two flavors of interpolation:
- WS: the Wigner-Seitz interpolation
- MDRS: the Minimal-distance replica selection method
MDRS has better interpolation quality[WAN20], so it should be used in most cases. Moreover, we implement two versions of MDRS:
MDRSv1
: the original version inWannier90
[WAN20]. This is slower than the WS interpolation.MDRSv2
: a slightly modified version which removes some for loops, same as what is implemented inWannier Berri
[WBERRI]. The speed is similar to the WS interpolation.
By default, we use the MDRSv2
interpolation.
Contents
Index
R vectors
RVectors
The R vectors are automatically generated by calling either of these two approaches:
read_w90_with_chk
to read theWannier90
outputseedname.chk.fmt
file, and generate anInterpModel
,InterpModel
a constructor to generate theInterpModel
from a WannierizationModel
.
So usually the user does not need to call the following functions.
KRVectors
The KRVectors
contains both kpoint mappings and RVectors
, allowing both forward and inverse Fourier transform.
Fourier transforms
Performs Fourier transform between k and R spaces defined by KRVectors
.
In general, the user only need to call the fourier(kRvectors, Oᵏ)
and invfourier(kRvectors, Oᴿ, kpoints)
functions directly, irrespective of the type of kRVectors
. Other functions are internally used based on the type of KRVectors
, thanks to multiple dispatch.
InterpModel
To separate the Wannier interpolation from Wannierization, we have another model, the InterpModel
, which is solely for the purpose of interpolation, while Model
works only for Wannierization.
Band structure
Need some care when comparing the band interpolation between Wannier.jl
and Wannier90
, after running the Wannier.jl
disentanglement and writing an optimized amn
file for Wannier90
to interpolate band structure.
When Wannier90
read an amn
file, it will (Wannier90
v3.1.0)
- Lowdin orthogonalize the
amn
matrices, indisentangle.F90:dis_project
, line 1418 This should do no harm, since the optimized amn is already semi-unitary, a SVD of it should not change the optimized amn (apart from numerical noise) - generate a new
amn
according to the frozen window, indisentangle.F90:dis_proj_froz
, line 1830. This will DESTROY the optimizedamn
matrices, if we restartWannier90
from the optimizedamn
withdis_num_iter = 0
, the spreads inwout
file is very different from the output ofWannier.jl
, we must skip this step by commenting out ALL thedis_froz_min/max
in thewin
file, then useWannier90
to interpolate bands, remember also setnum_iter
anddis_num_ite = 0
.
Fermi surface
The fermi_surface
function will use WS or MDRS interpolation based on the type of Rvectors
. However, Wannier90
only use WS interpolation when plotting Fermi surface (even if the use_ws_distance
is set as true
in the win
file). So the fermi_surface
function will output different result than Wannier90
if using MDRS.
Derivatives
- WAN20Pizzi, G.; Vitale, V.; Arita, R.; Blügel, S.; Freimuth, F.; Géranton, G.; Gibertini, M.; Gresch, D.; Johnson, C.; Koretsune, T.; Ibañez-Azpiroz, J.; Lee, H.; Lihm, J.-M.; Marchand, D.; Marrazzo, A.; Mokrousov, Y.; Mustafa, J. I.; Nohara, Y.; Nomura, Y.; Paulatto, L.; Poncé, S.; Ponweiser, T.; Qiao, J.; Thöle, F.; Tsirkin, S. S.; Wierzbowska, M.; Marzari, N.; Vanderbilt, D.; Souza, I.; Mostofi, A. A. & Yates, J. R., Wannier90 as a community code: new features and applications, Journal of Physics: Condensed Matter, 2020, 32, 165902
- WBERRITsirkin, S. S., High performance Wannier interpolation of Berry curvature and related quantities with WannierBerri code, npj Computational Materials, 2021, 7