Configuration and 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 fleur@fz-juelich.de 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:

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.

Requirements

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

Required are:

Optional:

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 configure.sh -h for further dependencies and hints.

Configure

The configure.sh script found in the main FLEUR source directory can (and should) be used to start the configuration of FLEUR. It is called as

configure.sh [-l LABEL ] [-d] [CONFIG]

The most used options are:

Check out!

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

The configure.sh 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/machines.sh'). 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 configure.sh) 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 configure.sh, 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 configure.sh 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 -flag option to configure.sh. So for example you might want to say configure.sh -flag "-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 the -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 give an include path. This can be achieved using the -includedir option. So you might want to say something like configure.sh -includedir SOMEPATH

Adding linker flags

To add flags to the linker you can do

Compiler specifics

FLEUR is known to work with the following compilers:

INTEL:

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

  1. Versions <13.0 will most probably not work correctly
  2. Version 19.0 has issues with the debugging version of FLEUR.

GFortran:

GFortran is known to work with versions newer than 6.3.

PGI:

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

CI-Tests

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 -n2 "to run with two MPI tasks. * You can use the environment variable juDFT to give 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 Testing/work. You can check this directory to see why a specific test fails.