pyWannier90: A Python interface for wannier90
wannier90 is a well-established package to construct maximally-localied Wannier functions (MLWFs) as well as to perform MLWF-based analysis. pyWannier90 uses the library-mode of wannier90 to perform the wannierization on the wave function obtained by PySCF or VASP.
- pyWannier90 is now available for wannier90 community, check it out here.
- pyWannier90 only supports the wannier90 v3.0.0 or newer.
pyWannier90 can use the wave function obtained by:
- PySCF 1.5 and
- VASP via the MCU package
- If you would like to construct MLWFs for the wave function obtained by PySCF
- pyWannier90 for VASP can construct MLWFs using only the WAVECAR and vasprun.xml obtained by VASP. That means you won't need to rerun the VASP calculation everytime you change some wannierization parameters with the wannier90 build-in library (pw2wannier90.x). One should note that the MLWFs constructed by pyWannier90 may be not identical to that by VASP since only the pseudo wave function (WAVECAR) is used. However, I have not experienced any significant discrepancy between the two approaches.
How to install libwannier90
libwannier90 needs to be installed first before one can call pyWannier90 from the code of choice (PySCF or MCU).
Replace /wannier90-xxx/src/wannier_lib.F90 with /pyWannier90/src/wannier_lib.F90
Go to /wannier90-xxx, modify make.inc with your favorite compiler and important adding this line to it:
FCOPTS = -O3 -fPIC -g
make & make lib
Go to /pyWannier90/src, modify Makefile and compile libwannier90:
Modify the path of libwannier90 in pyWannier90.py (in /pyscf/pbc/tools or in /mcu/wannier90)
Test libwannier90 library:
python -c "import libwannier90" #Should return nothing if the compilation was successful
How to cite?
Please cite this paper when you use pyWannier90 code in your research: