Skip to content
Permalink
Branch: master
Find file Copy path
Fetching contributors…
Cannot retrieve contributors at this time
207 lines (165 sloc) 6.79 KB
=========
WANNIER90
=========
The Maximally-Localised Generalised Wannier Functions Code
INSTALLATION
------------
Requirements: A Fortran 95 compiler (most f90 compilers are really f95)
LAPACK and BLAS libraries
(Optional) MPI libraries for parallel execution of the
postw90.x executable
Configuration:
The system dependent parameters (e.g. compiler name) are contained in a file
called 'make.inc'. Sample files may be found in the ./config/ directory.
Choose one that is nearest to your setup and copy it to make.inc. You may
need to edit it, for example to give the correct library path for your
machine.
On a linux system with the intel compiler build Wannier90 by typing
cp ./config/make.inc.ifort ./make.inc
make
IMPORTANT NOTE: a GNU version of the make utility is needed to compile
Wannier90.
To know if your make version is GNU, type
make -v
If you have a GNU make utility, the first line of the output should
read somethink like
GNU Make 3.81
Refer to your local system administrator for further information.
See at the end of this file for some preprocessor flags that may be used
to change some behavior of the code.
Options to make include:
make wannier build the wannier90.x executable
make post build the postw90.x executable
make default (default) build wannier90.x and postw90.x
make lib build the wannier90 library
make w90chk2chk build the w90chk2chk.x utility (see 'Utility' section of
the user guide)
make w90vdw build the van der Waals code
make w90pov build the ray-tracing code
make tests run test cases
make doc build the documentation
make dist make a tar-ball of the distribution
make dist-lite make a tar-ball of the src and tests only
make clean remove object files etc
make veryclean remove all non-distribution file
'make -j NN' will allow compilation using NN multiple threads.
On a multicore CPU this will build the executables in a shorter time.
In order to compile the postw90.x executable in its parallel version, you have
to specify
COMMS=mpi
inside the make.inc file (some of the example files already contain this line)
and moreover define the parallel compiler using the MPIF90 flag, for instance:
MPIF90=mpiifort
Compiler: If your operating system came with a Fortran compiler or you have a
commercial compiler (such as ifort) this should give the best performance.
Libraries: For Wannier90 to perform well a well optimised BLAS library should
be used. Many commercial operating systems and compilers provide well optimised
BLAS libraries.
ATLAS is one of the fastest implementations
http://math-atlas.sourceforge.net/
ACML AMD provides optimised BLAS for AMD processors
http://developer.amd.com/acml.aspx
LAPACK can be obtained from the netlib website. It also includes a
non-optimised BLAS.
http://www.netlib.org/lapack/
Linux x86,x86-64
----------------
1- make.inc.ifort
Compiler: Intel (ifc,ifort,iforte)
Libraries: Intel mkl
(ATLAS BLAS is faster for AMD processors)
2- make.inc.pathscale
Compiler: Pathscale (pathf90)
Libraries: acml
3- make.inc.nag
Compiler: NAG (f95)
Libraries: ATLAS + LAPACK (maybe acml)
[note in our experience the NAG compiler does not produce well optimised code]
4- make.inc.sun
Compiler: Sun-studio f90
Libraries: sunperf (ATLAS is faster)
avaible as a free beta for Linux
Generic: Most architectures
---------------------------
1- make.inc.g95
Compiler: g95
Libraries: ATLAS + LAPACK
2- make.inc.gfort
Compiler: gfortran
Libraries: ATLAS + LAPACK
(the official gcc f90 compiler - often faster than g95)
Alpha/HP/Compaq/DEC Tru64 UNIX
------------------------------
1- make.inc.alpha
Compiler: f90
Libraries: cxml
Sun / Solaris (sparc or x86)
----------------------------
1- make.inc.sun
Compiler: f95
Libraries: sunperf
Mac OS X
--------
1- make.inc.macosx
Compiler: gfortran
Libraries: Accelerate library
(check comments in the make.inc.macosx file!)
IBM PowerPC/power series. Linux or AIX
--------------------------------------
1- make.inc.xlf
Compiler: xlf95
Libraries: ESSL + LAPACK
Note: ESSL does not provide a complete lapack installation.
If your machine does not have a full LAPACK install,
download the netlib LAPACK. You might want to use
the essl wrappers from
http://www.netlib.org/lapack/essl/
Windows
-------
There are many commercial Fortran compilers for windows.
We haven't included make.inc files for these as we don't
have access to them. Wannier90 should compile just fine.
I use cygwin (http://www.cygwin.com/) which provides a bash shell.
1- make.inc.g95
Compiler: g95 (within cygwin)
Libraries: LAPACK and ATLAS (cygwin comes with a lapack and blas library,
but I think they have been compiled with g77. I had problems making
a working executable. I suggest building your own)
2- make.inc.pgf90
Compiler: Portland Group (pgf90)
Libaries: pg supplied lapack and blas
PREPROCESSOR FLAGS
------------------
To add a preprocessor flag, add it to the FCOPTS and LDOPTS variables in the
make.inc file.
For instance, if the flag is called EXIT_FLAG, you can simply append
-DEXIT_FLAG
(note that -D is prepended to the name of the flag)
to the FCOPTS variable and LDOPTS variable, separating it with a space from
what is already defined. Example:
FCOPTS=-O2 -DEXIT_FLAG
LDOPTS=-O2 -DEXIT_FLAG
Alternatively, after the definition of the FCOPTS and LDOPTS variables,
at the end of the make.inc file, you can add the lines
FCOPTS+=-DEXIT_FLAG
LDOPTS+=-DEXIT_FLAG
Flags
-----
* EXIT_FLAG
If defined (and if your compiler supports it), returns an exit status =/= 0
when the code exits due to an error (while it returns 0 on correct
completion).
By default, when this flag is not present, the value of the exit code is
not sensible.
* CODATA2006
Use physical constants from 2006 version of CODATA tables
(http://physics.nist.gov/cuu/Constants/index.html)
(Note that this is the default choice if nothing is specified)
* CODATA2010
Use physical constants from 2010 version of CODATA tables
(http://physics.nist.gov/cuu/Constants/index.html)
* USE_WANNIER90_V1_BOHR
Use the value of the bohr radius (expressed in angstrom) that
was adopted in versions 1.x of the Wannier90 code, instead of
the values taken from the CODATA database.
(This is intended for backward compatibility only)
You can’t perform that action at this time.