index | modules | gitlab | page source

# FLEUR

## Introduction

FLEUR is a density-functional theory code which uses the full potential linearized augmented plane-wave (FLAPW) method. FLEUR can be applied to any element in the periodic table, and the code is well suited especially to surfaces and magnetic materials.

## Environment variables

In order to use FLEUR through ASE, two environment variables have to be set. `FLEUR_INPGEN` should point to the simple input generator of FLEUR, and `FLEUR` to the actual executable. Note that FLEUR has different executables e.g. for cases with and without inversion symmetry, so the environment variable has to be set accordingly. As an example, the variables could be set like:

    $ export FLEUR_INPGEN=$HOME/fleur/v25/inpgen.x
    $ export FLEUR=$HOME/fleur/v25/fleur.x

or:

    $ export FLEUR="mpirun -np 32 $HOME/fleur/v25/fleur.x"

for parallel calculations.

## FLEUR Calculator

Currently, limited number of FLEUR parameters can be set via the ASE interface Below follows a list of supported parameters

keyword | type | default value | description
--- | --- | --- | ---
`xc` | `str` | `'LDA'` | XC-functional. Must be one of ‘LDA’, ‘PBE’, ‘RPBE’
`kpts` | seq | \(\Gamma\)-point | k-point sampling
`convergence` | dict | `{'energy': 0.0001}` | Convergence criteria (meV)
`width` | `float` |  | Width of Fermi smearing (eV)
`kmax` | `float` |  | Plane-wave cut-off (a.u.)
`mixer` | dict |  | Mixing parameters ‘imix’, ‘alpha’, and ‘spinf’
`maxiter` | `int` | 40 | Maximum number of SCF steps
`maxrelax` | `int` | 20 | Maximum number of relaxation steps
`workdir` | `str` | Current dir | Working directory for the calculation

seq: A sequence of three `int`’s. dict: A dictionary

## Spin-polarized calculation

If the atoms object has non-zero magnetic moments, a spin-polarized calculation will be performed by default.

## Utility functions

As only a subset of FLEUR parameters can currently be specified through ASE interface, the interface defines some utility functions for cases where manual editing of the FLEUR input file `inp` is necessary.

`FLEUR.``write_inp`(atoms)

  Write the inp input file of FLEUR.

  First, the information from Atoms is written to the simple input file and the actual input file inp is then generated with the FLEUR input generator. The location of input generator is specified in the environment variable FLEUR_INPGEN.

  Finally, the inp file is modified according to the arguments of the FLEUR calculator object.

`FLEUR.``initialize_density`(atoms)

  Creates a new starting density.

`FLEUR.``calculate`(atoms)

  Converge a FLEUR calculation to self-consistency.

  Input files should be generated before calling this function FLEUR performs always fixed number of SCF steps. This function reduces the number of iterations gradually, however, a minimum of five SCF steps is always performed.

`FLEUR.``relax`(atoms)

  Currently, user has to manually define relaxation parameters (atoms to relax, relaxation directions, etc.) in inp file before calling this function.

## Examples

Lattice constant of fcc Ni

    from numpy import linspace

    from ase.calculators.fleur import FLEUR
    from ase.build import bulk
    from ase.io.trajectory import Trajectory

    atoms = bulk('Ni', a=3.52)
    calc = FLEUR(xc='PBE', kmax=3.6, kpts=(10, 10, 10), workdir='lat_const')
    atoms.set_calculator(calc)
    traj = Trajectory('Ni.traj','w', atoms)
    cell0 = atoms.get_cell()
    for s in linspace(0.95, 1.05, 7):
        cell = cell0 * s
        atoms.set_cell((cell))
        ene = atoms.get_potential_energy()
        traj.write()

See the equation of states tutorial for analysis of the results.

Documentation v: 3.19.0

Versions
  3.20.0b1 (development)
  3.19.0 (latest stable)