Newer Older
Welcome to the source code of FLEUR
Ingo Heimbach's avatar
Ingo Heimbach committed

3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
1. Short Overview of the code
2. Installation

1. Overview of the code

The source of FLEUR is organized in several 
subdirectories. Some of them collect code 
specific for particular features, others code
relevant for crutial steps in the code or simply
code that is usually executed together.
Here a short description of the directories:

main: contains the main-program and several core subroutines
init: stuff for the initialization (called from fleur_init in main)
vgen: potential generation (called from vgen in main)
eigen: setup of the eigenproblem
diagonalization: various methods to diagonalize the Hamiltonian
cdn: general code for the generation of charge
cdn_mt: charge generation in MT-spheres
force: code related to the evaluation of forces
mix: charge/potential mixing routines
ldau: routines needed in case of LDA+U calculations
inpgen: code for the input generator (seperate executable inpgen)
fermi: determination of the fermi-level
eigen_secvar: second variational solution of the Hamiltonian
eigen_soc: Spin-orbit related code
core: Core states
dos: Code for Density of states, bandstructures
orbdep: Code for quantities depending on orbitals
optional: code that is used in special cases like inital charge generation
wannier: wannier related code
xc-pot: various exchange-correlation potential routines
mpi: code for parallel execution

io: subroutines doing IO
juDFT: timing, error handling, etc
math: code providing math functionality
include: c-type include files

global: code used everywhere (here you find types.F90 with the data-types)

cmake: definitions used by cmake (see Installation)

2. Installation

For the compilation of FLEUR you will need:

- Fortran compiler (should support Fortran2003)
- Compatible C compiler for the XML-IO
- cmake for controlling the make-process
- Libraries:
  * MPI for parallelization
  * SCALAPACK or ELPA or ELEMENTAL if you want to use parallel diagonalization
    	      (without you can only exploit k-point parallelism)
  * HDF5 for parallel IO (if you have lots of memory, you might not need to do IO :-)

You should probably create a directory structure like this:

somewhere/src -this is where the source code lives, i.e. the location of this README
somewhere/build -here you can build the code

change to the build directory and type:

cmake ../src

This might generate the FLEUR executables. If you get errors, you have to adjust cmake
so that your build system is correctly set-up. To do so, please adjust cmake.config. You might
find inspiration in the cmake.???.config files provided for several systems.

If your build environment is recognized correctly you can obtain the following executables:
inpgen      - the input generator of FLEUR
fleur       - general version of FLEUR
fleur_INVS  - version of FLEUR suitable for systems with inversion symmetry leading to real matrices
fleur_SOC   - version of FLEUR with spin-orbit coupling

All codes might also have a _MPI attached to indicate parallel versions.