PERTURBO uses a few subroutines from the PWSCF and Phonon packages of Quantum Espresso (QE). Therefore, it needs to be compiled on top of QE. PERTURBO needs the output files from Wannier 90 (W90). In addition, PERTURBO uses the HDF5 format to store data. For the detailed instructions on the installation of these packages, please refer to their official websites: QE, W90, HDF5. If you run the calculations on a cluster or a supercomputer, these packages might be already pre-installed. Here we provide some brief instructions on the installation of these packages. Please note that these instructions can be different for your computing environement.

### Quantum Espresso

To download QE, one can use the wget command:

wget https://github.com/QEF/q-e/archive/qe-7.0.tar.gz
tar xvzf qe-7.0.tar.gz
cd q-e-qe-7.0


or to clone the package from the QE GitHub repository, specifying the version:

git clone https://github.com/QEF/q-e.git
cd q-e
git checkout qe-7.0


./configure


one can run ./configure --help to get additional configure options (for the C, C++, Fortran compilers, etc.). Compile QE:

make pw ph pp


### Wannier 90

We suggest to install Wannier 90 inside the QE folder.

Download the package with wget:

wget https://github.com/wannier-developers/wannier90/archive/v3.0.0.tar.gz
tar xvzf v3.0.0.tar.gz
cd wannier90-3.0.0


or clone from the GitHub repository:

git clone https://github.com/wannier-developers/wannier90.git
cd wannier90


Compile Wannier 90:

cp ./config/make.inc.xxx ./make.inc
make


### HDF5

For example, the current directory is called ‘mylib’. We download the source code inside the directory called ‘hdf5-1.12.0-source-codes’. Now we are going to install the HDF5 library into a directory called ‘hdf5-1.12.0’. Create the empty directories:

mkdir hdf5-1.12.0


Generate a Makefile for compiling the HDF5 library using the fortran option: --enable-fortran. Please modify the 'prefix' path to fit your case. Here we compile the serial HDF5 library:

cd hdf5-1.12.0-source-codes
./configure --prefix=mylib/hdf5-1.12.0 --enable-fortran


One can specify the compilers running the ./configure command with the additional options: CC=<c compiler>, CXX=<c++ compiler>, FC=<fortran compiler>. For more information, run ./configure --help. Compile HDF5:

make
make install


To check whether HDF5 was compiled correctly, one can run the test suite:

make test


Now we have the compiled HDF5 library inside the directory ‘hdf5-1.12.0’. Please use the directory path when compiling PERTURBO (IFLAGS and HDF5_LIB parameters in the PERTURBO make.sys file, see below).

To help us keep track of user number, we encourage each individual user to submit a separate request for code download. For example, research groups with multiple users should also have each user submit a request.

If the the form does not work, see here the intructions.

Clone from GitHub (or extract .tar.gz) into the QE directory. There are three subdirectories inside the directory “perturbo”:

• “config” contains the system-dependent makefiles make.sys.XXX
• “pert-src” contains the source code of perturbo.x to compute electron dynamics
• “qe2pert-src” contains the source code of the interface program qe2pert.x

The source code is supplemented by the tutorial examples input and output files. More details about the examples can be found in the Organization section.

### Installation

There are two files in the “perturbo” directory, Makefile and make.sys. PERTURBO uses the config file make.inc of QE for most of the compiler options. The config file make.sys inside the directory “perturbo” specifies additional options required by PERTURBO. Modify make.sys to make it suitable for your system:

vim make.sys


specify the path to your HDF5 library:

IFLAGS += -L<path-to-hdf5-dir>/hdf5-1.12.0/include -lhdf5 -lhdf5_fortran
HDF5_LIB = -L<path-to-hdf5-dir>/hdf5-1.12.0/lib -lhdf5 -lhdf5_fortran


Modify the two flags FFLAGS and LDFLAGS for your compilers, for example:

#for intel compiler
FFLAGS += -qopenmp -cpp
LDFLAGS += -qopenmp


or

#for gfortran compiler
FFLAGS += -fopenmp -x f95-cpp-input
LDFLAGS += -fopenmp


Once the file make.sys has been modified, you are ready to compile PERTURBO:

make


After the compilation, a directory called ‘bin’ is generated, which contains two executables, perturbo.x and qe2pert.x.

If the contact link does not work, in order to get access to the code, please write us an email to [perturbo AT caltech.edu] and provide the following information about you:

Name:
Organization:
Country:
I am going to use PERTURBO for: