Installation of Fleur

We are aware of the fact that installing Fleur can be a tricky task on many machines. While we tried to make the process as userfriendly as possible, there are still a couple of challenges you might encounter.

System requirements

The installation of Fleur depends on the availablity of some software on your system. You can find this list of requirements below. If in doubt, please check with your system administrator to see if all requirements for using Fleur can be fulfilled on your system.

Further support

For help register at the MailingList and post your questions there.

If you manage to compile on some system that can be of general interest, please consider to report to with your settings so that these can be included in the general distribution.

Quick guide

If you are extremely lucky (and/or your system is directly supported by us) installation can be very simple:

  1. Run the configuration script 'PATH_TO_SOURCE_CODE/ You can do that in any directory in which the 'build' directory should be created. The script accepts some useful arguments, you can run the script with -h to get a list of supported arguments.
  2. The script creates the build directory and runs cmake. If all goes well (look at the output) you can then change to the build directory and run cd build; make.
  3. If make does not report any error you are done!

Please be aware that there are different executables that could be be build:

Usually only the serial or the MPI version will be build. You can run the MPI-version in serial while it is of course not possible to use the non-MPI version with MPI.

You might want to run the automatic tests.


There are a couple of external dependencies in the build process of Fleur.

Required are:


Fleur can benefit significantly if the following further software components are available. Please be aware that some of these can be difficult to use for FLEUR and see the Instructions for adjusting your configuration for details on how to provide input into the build process to use these libraries.

You should also check the output of -h for further dependencies and hints.


The script found in the main Fleur source directory can (and should) be used to start the configuration of Fleur. It is called as [-l LABEL ] [-d] [CONFIG].

The most used options are:

Check out!

More options are available. Please check the output of -h. You might find options to include dependencies into the build usefull.

The script performs the following steps:

  1. It creates a subdirectory called 'build' or 'build.LABEL'. If this directory is already present, the old directory will be overwritten.
  2. It copies the CONFIG dependent configuration into this directory (this is actually done in the script 'cmake/'). The special choice of "AUTO" for CONFIG will not provide any further configuration but relies completely on cmake. You can specify a config.cmake file in the working directory (from which you call to modify this AUTO mode. 3 Finally cmake is run in the build directory to determine your configuration.

If you specify -d as argument of, the string "debug" will be added to LABEL and a debugging version of FLEUR will be build, i.e., the corresponding compiler switches will be set.

How to adjust the Configuration

While cmake and the script can determine the correct compilation switches automatically in some cases (mostly those known to us), in many other instances fine-tuning is needed. In particular you might have to:

Setting the compiler to use

By defining the environment variables FC and CC to point to the Fortran and C compiler you can make sure that cmake uses the correct compilers, e.g., you might want to say export FC=mpif90.

Please be aware that the use of CONFIG specific settings might overwrite the environment variable.

Adding flags for the compiler

This should be done using the -flags option to So for example you might want to say -flags "-r8 -nowarn".

In general for a compiler not known in cmake/compilerflags.cmake you need at least an option to specify the promotion of standard real variables to double precision (like -r8). But additional switches can/should be used.

Adding include directories

For libraries with a Fortran-90 interface, ELPA, HDF5, MAGMA, ... you probably will have to provide an include path. This can be achieved using the -includedir option. So you might want to say something like -includedir SOMEPATH.

Adding linker flags

To add flags to the linker you can

Building with LibXC

If the user decides to compile Fleur together with LibXC support, a special version of this library is needed that has not yet been released. Therefore the easiest way to install Fleur with LibXC is to download Fleur with git:

git clone --branch release

Then you can configure Fleur with

./ -libxc TRUE

which will download the correct libxc version, compile and link it. Notice this only works if you download Fleur using git.

Compiler specifics

Fleur is known to work with the following compilers:


The Intel Fortran compilers (ifort) is able to compile Fleur. Depending on the version you might experience the following problems:


GFortran is known to work with versions newer than 6.3.


The PGI compilers also can compile FLEUR. Here you need at least version 18.4 but might still run into some problems.


After the build was finished you might want to run the automatic test.

Just type ctest in the build directory for this purpose.

Please note: * The tests run on the computer you just compiled on. Hence a cross-compiled executable will not run. * You can use the environment variables juDFT_MPI to specify any additional command needed to start fleur_MPI, e.g., say export juDFT_MPI="mpirun -n 2" to run with two MPI tasks. * You can use the environment variable juDFT to pass command line arguments to Fleur, e.g., say export juDFT='-mem'. * To run a specific test only (or a range of tests) use the -I option of ctest (check ctest -h for details) * The tests are run in the subdirectory Testing/work. You can check this directory to see why a specific test fails.

Experimental features

The Fleur code is under rapid development. This implies that in each release there are features that are considered to be experimental. These features are either not well tested or their implementation is incomplete. The user will not find explicit documentation on these features in the Fleur user guide, but may become aware of them due to information from other sources. Especially the output of the script may indicate certain features because it lists for several software libraries whether they have been detected and will be linked to Fleur.

In the MaX 4.0 release of Fleur expecially the functionalities related to the MAGMA and Wannier90 libraries are considered to be experimental.