The Fleur input file

Fleur expects all input (execpt some computational settings specified on the command line) in the inp.xml file in the current working directory. This file is usually produced by the input-generator 'inpgen' but Fleur workflows require adjustments to this file.

Example inp.xml file

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<fleurInput fleurInputVersion="0.35">
   <comment>
      Si bulk                                                                         
   </comment>
   <calculationSetup>
      <cutoffs Kmax="3.70" Gmax="11.10" GmaxXC="9.20" numbands="0"/>
      <scfLoop itmax="15" minDistance=".00001" maxIterBroyd="15"
               imix="Anderson" alpha=".05" precondParam="0.0" spinf="2.0"/>
      <coreElectrons ctail="T" frcor="F" kcrel="0" coretail_lmax="0"/>
      <magnetism jspins="1" l_noco="F" swsp="F" lflip="F"/>
      <soc theta=".00000000" phi=".00000000" l_soc="F" spav="F"/>
      <expertModes gw="0" secvar="F"/>
      <geometryOptimization l_f="F" forcealpha="1.00" forcemix="BFGS"
                            epsdisp=".00001" epsforce=".00001"/>
      <ldaU l_linMix="F" mixParam=".050000" spinf="1.000000"/>
      <xcFunctional name="pbe" relativisticCorrections="F"/>
   </calculationSetup>
   <cell>
      <bzIntegration valenceElectrons="8.00000000" mode="hist"
                     fermiSmearingEnergy=".00100000">
         <kPointListSelection listName="default-1"/>
         <kPointLists>
            <kPointList name="default-1" count="8" nx="2" ny="2" nz="2" type="mesh">
               <kPoint weight="  1.00"> -1.00/4.00  -1.00/4.00  -1.00/4.00</kPoint>
               <kPoint weight="  1.00">  1.00/4.00  -1.00/4.00  -1.00/4.00</kPoint>
               <kPoint weight="  1.00"> -1.00/4.00   1.00/4.00  -1.00/4.00</kPoint>
               <kPoint weight="  1.00">  1.00/4.00   1.00/4.00  -1.00/4.00</kPoint>
               <kPoint weight="  1.00"> -1.00/4.00  -1.00/4.00   1.00/4.00</kPoint>
               <kPoint weight="  1.00">  1.00/4.00  -1.00/4.00   1.00/4.00</kPoint>
               <kPoint weight="  1.00"> -1.00/4.00   1.00/4.00   1.00/4.00</kPoint>
               <kPoint weight="  1.00">  1.00/4.00   1.00/4.00   1.00/4.00</kPoint>
            </kPointList>
         </kPointLists>
      </bzIntegration>
      <symmetryOperations>
         <symOp>
            <row-1>1 0 0 .0000000000</row-1>
            <row-2>0 1 0 .0000000000</row-2>
            <row-3>0 0 1 .0000000000</row-3>
         </symOp>
      </symmetryOperations>
      <bulkLattice scale="1.0000000000" latnam="any">
         <bravaisMatrix>
            <row-1>.0000000000 5.1306085335 5.1306085335</row-1>
            <row-2>5.1306085335 .0000000000 5.1306085335</row-2>
            <row-3>5.1306085335 5.1306085335 .0000000000</row-3>
         </bravaisMatrix>
      </bulkLattice>
   </cell>
   <atomSpecies>
      <species name="Silicon (Si)" element="Si" atomicNumber="14">
         <mtSphere radius="2.16000000" gridPoints="521" logIncrement=".02200000"/>
         <atomicCutoffs lmax="8" lnonsphr="6"/>
          <electronConfig>
            <coreConfig>(1s1/2) (2s1/2) (2p1/2) (2p3/2) </coreConfig>
            <valenceConfig>(3s1/2) (3p1/2) (3p3/2)</valenceConfig>
            <stateOccupation state="(3p1/2)" spinUp=".33333333" spinDown=".33333333"/>
            <stateOccupation state="(3p3/2)" spinUp=".66666667" spinDown=".66666667"/>
         </electronConfig>
         <energyParameters s="3" p="3" d="3" f="4"/>
      </species>
   </atomSpecies>   
   <atomGroups>
      <atomGroup species="Silicon (Si)">
         <relPos label="        1">1.000/8.000 1.000/8.000 1.000/8.000</relPos>
         <force calculate="T" relaxXYZ="TTT"/>
      </atomGroup>
      <atomGroup species="Silicon (Si)">
         <relPos label="        2">-1.000/8.000 -1.000/8.000 -1.000/8.000</relPos>
         <force calculate="T" relaxXYZ="TTT"/>
      </atomGroup>
   </atomGroups>
   <output dos="F" band="F" slice="F" >
      <checks vchk="F" cdinf="F"/>
      <bandDOS minEnergy="-.50" maxEnergy=".50" 
                       sigma=".0150"/>
      <vacuumDOS layers="0" integ="F" star="F" nstars="0" locx1=".00000"
                 locy1=".00000" locx2=".00000" locy2=".00000" nstm="0"
                 tworkf=".00000"/>
      <unfoldingBand unfoldBand="F" supercellX="1" 
                     supercellY="1" supercellZ="1"/>
      <plotting iplot="0" />
      <chargeDensitySlicing numkpt="0" minEigenval=".00000" 
                            maxEigenval=".00000" nnne="0" pallst="F"/>
      <specialOutput eonly="F" bmt="F"/>
      <magneticCircularDichroism mcd="F" energyLo="-10.0000" energyUp=".0000"/>
   </output>
   <!-- We include the file relax.inp here to enable relaxations 
        (see documentation) -->
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
               href="relax.xml">
      <xi:fallback/>
   </xi:include>
</fleurInput>

Being an XML file inp.xml starts with some general XML information in line 1. The rest of the file is enclosed in the <fleurInput> element that carries as an attribute the version number of the input file format. Within <fleurInput> the input file consists of several sections to be discussed in detail below.

Comment and Constants sections

<comment>
   Si bulk
</comment>

The comment section is optional. It encloses a simple line of text that is written out as part of the inp.xml into the out.xml file.

<constants>
   <constant name="myConst" value="5.1673552752"/>
</constants>

The constants section is optional and not part of the example inp.xml file shown above. It can be used to define constants that can then be used in other parts of the XML input file, e.g., the lattice setup or the declaration of the atom positions. The constants element may enclose multiple constant definitions. Each one has to provide the name and value of the respective constant.

Calculation Setup section

   <calculationSetup>
      <cutoffs Kmax="3.70" Gmax="11.10" GmaxXC="9.20" numbands="0"/>
      <scfLoop itmax="15" minDistance=".00001" maxIterBroyd="99"
               imix="Anderson" alpha=".05" precondParam="0.0" spinf="2.0"/>
      <coreElectrons ctail="T" frcor="F" kcrel="0" coretail_lmax="0"/>
      <magnetism jspins="1" l_noco="F" swsp="F" lflip="F"/>
      <soc theta=".00000000" phi=".00000000" l_soc="F" spav="F"/>
      <expertModes gw="0" secvar="F"/>
      <geometryOptimization l_f="F" forcealpha="1.00" forcemix="BFGS"
                            epsdisp=".00001" epsforce=".00001"/>
      <ldaU l_linMix="F" mixParam=".050000" spinf="1.000000"/>
      <xcFunctional name="pbe" relativisticCorrections="F"/>
   </calculationSetup>

The calculation setup section covers the input of general numerical parameters controlling the Fleur calculation.

Tag Attribute Description
cutoffs The main cutoff parameters for the calculation
Kmax The cutoff for the basis functions
Gmax The cutoff for the density
GmaxXC The cutoff used for the potential when the XC functional is calculated
numbands The number of eigenvalues to be calculated at each k point. A value of 0 is converted to a default value.
scfLoop Parameters controlling the number of SCF loop iterations and the mixing scheme
itmax The number of SCF loop iterations to be performed by Fleur
maxIterBroyd The number of iterations to be taken into account by Broyden-like mixing schemes. The mixing history is periodically deleted with the periodicity specified by this parameter.
imix The mixing scheme. This can be one of "straight", "Broyden1", "Broyden2", and "Anderson"
alpha The mixing factor
precondParam The preconditioning parameter for bulk metals. Typical value: 0.8. Choose higher mixing parameter, e.g. 0.25.
spinf The spin mixing factor enhancement
coreElectrons Parameters for the treatment of the core electrons
ctail Use core tail corrections.
frcor The frozen core approximation can be activated here.
kcrel If true fully relativistic core routines are used, otherwise only spin-polarized routines.
coretail_lmax Cutoff for the expansion of the core-tail into other MT spheres. Also relevant for initial charge generation.
magnetism Parameters for controlling the degree of magnetism considered in the calculation
jspins The number of spins to be considered: 1 for nonmagnetic calculations and 2 for calculations incorporating magnetism.
l_noco Set this to true to consider not only collinear but also non-collinear magnetism
See the section on the non-collinear magnetism setup for details.
swsp If true generate spin-polarized from unpolarized density.
lflip If true flip spin directions for each atom with set flipSpin flag.
soc Parameters needed for calculations with spin-orbit coupling
theta The spin quantization axis is given by the theta and phi angles.
phi The spin quantization axis is given by the theta and phi angles.
l_soc This switch is used to toggle the consideration of spin-orbit coupling in the respective calculation .
spav Construct spin-orbit operator from spin-averaged potential.
expertModes Parameters for the control of certain advanced Fleur calculation modes
gw The different output modes for GW approximation calculations are set here.
secvar Treat the nonspherical part of the Hamiltonian in second variation.
geometryOptimization Parameters required for force calculations and the optimization of atom positions
l_f l_f is used to switch on the calculation of forces.
forcealpha The mixing parameter for the forces when performing structural optimizations.
forcemix The mixing procedure for the forces. Choose one of "BFGS" and "straight"
epsdisp The convergence criterion for atom displacements.
epsforce The convergence criterion for the forces.
For further options on relaxation..
ldaU Optional parameters for the density matrix mixing in LDA+U calculations. See the LDA+U setup for details.
xcFunctional see below

The exchange correlation functional section consists of a single xml element with the two attributes name and relativisticCorrections. The XC functional is specified by the name attribute:

LDA functionals
x-a
wign
mjw
pz The functional by Perdew and Zunger
vwn The functional by Vosko, Wilk, and Nusair
bh The functional by Barth and Hedin
GGA functionals
pw91 The functional by Perdew and Wang
pbe The functional by Perdew, Burke, and Ernzerhof
rpbe The revPBE functional by Zhang and Yang
Rpbe The RPBE functional by Hammer, Hansen, and Nørskov
wc The functional by Wu and Cohen
Tag Attribute Description
relativisticCorrections A boolean switch used to activate optional relativistic corrections according to MacDonnald-Vosko.

Cell section

   <cell>
      <bzIntegration valenceElectrons="20.00000000" mode="hist"
                     fermiSmearingEnergy=".00100000">
         <kPointListSelection listName="default-1"/>
         <kPointLists>
            <kPointList name="default-1" count="8" nx="2" ny="2" nz="2" type="mesh">
               <kPoint weight="  1.00"> -1.00/4.00  -1.00/4.00  -1.00/4.00</kPoint>
               <kPoint weight="  1.00">  1.00/4.00  -1.00/4.00  -1.00/4.00</kPoint>
               <kPoint weight="  1.00"> -1.00/4.00   1.00/4.00  -1.00/4.00</kPoint>
               <kPoint weight="  1.00">  1.00/4.00   1.00/4.00  -1.00/4.00</kPoint>
               <kPoint weight="  1.00"> -1.00/4.00  -1.00/4.00   1.00/4.00</kPoint>
               <kPoint weight="  1.00">  1.00/4.00  -1.00/4.00   1.00/4.00</kPoint>
               <kPoint weight="  1.00"> -1.00/4.00   1.00/4.00   1.00/4.00</kPoint>
               <kPoint weight="  1.00">  1.00/4.00   1.00/4.00   1.00/4.00</kPoint>
            </kPointList>
         </kPointLists>
      </bzIntegration>
      <symmetryOperations>
         <symOp>
            <row-1>1 0 0 .0000000000</row-1>
            <row-2>0 1 0 .0000000000</row-2>
            <row-3>0 0 1 .0000000000</row-3>
         </symOp>
      </symmetryOperations>
      <bulkLattice scale="1.0000000000" latnam="any">
         <bravaisMatrix>
            <row-1>.0000000000 5.1306085335 5.1306085335</row-1>
            <row-2>5.1306085335 .0000000000 5.1306085335</row-2>
            <row-3>5.1306085335 5.1306085335 .0000000000</row-3>
         </bravaisMatrix>
      </bulkLattice>
   </cell>

The cell section covers the declaration of the k-points, of the symmetry operations available in the unit cell and the definition of the lattice vectors. For details please see the sections on the kpoint setup, Bravais lattice setup and the unit cell symmetry setup.

Atom species section

   <atomSpecies>
      <species name="Silicon (Si)" element="Si" atomicNumber="14">
         <mtSphere radius="2.16000000" gridPoints="521" logIncrement=".02200000"/>
         <atomicCutoffs lmax="8" lnonsphr="6"/>
          <electronConfig>
            <coreConfig>(1s1/2) (2s1/2) (2p1/2) (2p3/2) </coreConfig>
            <valenceConfig>(3s1/2) (3p1/2) (3p3/2)</valenceConfig>
            <stateOccupation state="(3p1/2)" spinUp=".33333333" spinDown=".33333333"/>
            <stateOccupation state="(3p3/2)" spinUp=".66666667" spinDown=".66666667"/>
         </electronConfig>
         <energyParameters s="3" p="3" d="3" f="4"/>
      </species>
   </atomSpecies>

The atomSpecies section is a tool to set identical numerical parameters for the atoms of different atom groups without introducing redundancy. For this several species with a unique name can be defined in the section. In the following atomGroups section each atom group is associated to one of the species.

Tag Attribute Description
species The element defining a species. There can be multiple of these elements in this section.
name A name for the species. This should be unique within the set of species.
element The abbreviation of the chemical element.
atomicNumber The atomic number of the chemical element.

A species element contains other elements to determine its numerical parameters. Please note that the order of these elements in the input file is predefined:

Tag Attribute Description
mtSphere This element is used to define the properties of the muffin-tin spheres.
radius The radius of the MT sphere.
gridPoints The number of grid points on the radial mesh for this MT sphere.
logIncrement The logarithmic increment of the radial mesh.
atomicCutoffs This element covers the l-cutoffs.
lmax The general l-cutoff for all atoms of the species.
lnonsphr The reduced l-cutoff for the calculation of contributions originating from non-spherical part of the potential
lmaxAPW If present the APW+lo approach will be used. This is the cutoff defining the lmax up to which LAPWs are used if no APW+lo local orbital is defined for the respective l. See also the respective article by G.K.H. Madsen.
electronConfig See the description of the electron configuration setup for details.
energyParameters This element sets the energy parameters.
s The main quantum number for the valence s electrons.
p The main quantum number for the valence p electrons.
d The main quantum number for the valence d electrons.
f The main quantum number for the valence f electrons.
special
socscale A float in range from 0.0 to 1.0. Scales the magnitude of SOC at the species. socscale="0.0" switches SOC off.
vca_charge A float to specify an extra charge for calculations in the virtual crystal approximation for this species.
lda Logical switch to use LDA for this atom.
b_field_mt Zeeman field applied to this atom.
ldaU Up to one ldaU element can be present to define a U parameter for this atom and a certain l channel.
l This is the l channel the U is supposed to affect.
U This is the U parameter in eV.
J This is the J parameter in eV.
l_amf If true the around mean field limit is employed, otherwise the atomic limit.
For a more detailed description have a look at [[xmlLDAUSetup
lo This element is used to introduce local orbitals to each of the associated atoms. It can be present multiple times. See the section on the local orbital setup for a more profound discussion.
type The type of the LO. This can be SCLO for semicore LOs or HELO for LOs at higher energies
l The angular momentum quantum number belonging to this LO
n The main quantum number for this LO
eDeriv The energy derivative of the additional radial function introduced with this LO. This is by default 0 to obtain conventional LOs. For HDLOs it has to be set to a finite positive integer value.

Atom groups section

   <atomGroups>
      <atomGroup species="Silicon (Si)">
         <relPos label="        1">1.000/8.000 1.000/8.000 1.000/8.000</relPos>
         <force calculate="T" relaxXYZ="TTT"/>
      </atomGroup>
      <atomGroup species="Silicon (Si)">
         <relPos label="        2">-1.000/8.000 -1.000/8.000 -1.000/8.000</relPos>
         <force calculate="T" relaxXYZ="TTT"/>
      </atomGroup>
   </atomGroups>

The atom groups section covers parameters relevant for each group of symmetry equivalent atoms. In the example the Fleur input file has been generated without symmetry detection. The two Si atoms are thus placed in different atom groups.

Tag Attribute Description
atomGroup There is at least one atom group. Each atom in the unit cell has to be in one.
species The name of the species of this group's atoms.

Each atom group element encloses certain other elements:

Tag Attribute Description
relPos See below
filmPos See below
force Some switches associated to force calculations.
calculate This boolean switch determines whether forces are calculated for the atoms of this group.
relaxXYZ Three boolean switches used declare in which directions the atom position may be optimized in force relaxation calculations.
nocoParams See the description of the non-collinear magnetism setup for details.

The atom positions are defined within each atomGroup of symmetry equivalent atoms in the atom groups section of the input file. They can be provided as relative or film positions:

Relative positions

      <atomGroup species="W-1">
         <relPos label="   1">.000000 1.0/2.0 .060000</relPos>
         <relPos label="   2">1.0/2.0 .000000 -.060000</relPos>
         <force calculate="T" relaxXYZ="TTT"/>
      </atomGroup>

Typically for bulk materials the atom positions are provided in relative coordinates as fractions of the three lattice vectors. For this the relPos tag is used. In the example the atom group consists of two atoms at two different positions. The first one is the representative atom. As shown the relative coordinates are provided as three numbers within the relPos element. Note that each coordinate can also be provided by a short mathematical expression that does not contain any spaces, e.g., 1.0/4.0.

Each atom can be associated to a label that can be specified in the inpgen input. If there is no explicit labeling in the inpgen input the labels just associate a unique number with each atom. This labeling is only meant as a help to the user to keep an overview for setups of very large unit cells.

Film positions

      <atomGroup species="W-2">
         <filmPos label="   1">1.0/2.0 1.0/2.0 -12.0314467594</filmPos>
         <filmPos label="   2">1.0/2.0 1.0/2.0 12.0314467594</filmPos>
         <force calculate="T" relaxXYZ="TTT"/>
      </atomGroup>

For calculations on films the atom positions are provided within the filmPos element. Here, the first two of the coordinates are relative, while the third coordinate in the direction normal to the film plane is absolute and in atomic units (Bohr radii).

Output section

   <output dos="F" band="F" slice="F" >
      <checks vchk="F" cdinf="F"/>
      <bandDOS minEnergy="-.50" maxEnergy=".50" 
                       sigma=".0150"/>
      <vacuumDOS layers="0" integ="F" star="F" nstars="0" locx1=".00000"
                 locy1=".00000" locx2=".00000" locy2=".00000" nstm="0"
                 tworkf=".00000"/>
      <unfoldingBand unfoldBand="F" supercellX="1" 
                     supercellY="1" supercellZ="1"/>
      <plotting iplot="0" />
      <chargeDensitySlicing numkpt="0" minEigenval=".00000" 
                            maxEigenval=".00000" nnne="0" pallst="F"/>
      <specialOutput eonly="F" bmt="F"/>
      <magneticCircularDichroism mcd="F" energyLo="-10.0000" energyUp=".0000"/>
   </output>

The output section is optional. It covers parameters relevant for the generation of special output.

Tag Attribute Description
output
dos A boolean switch that determines whether a density of states has to be calculated.
band A boolean switch that determines whether a band structure calculation should be performed.
slice A boolean switch controlling whether a slice has to be calculated. The associated parameters are set in the chargeDensitySlicing element.

If an attribute of the output element is set to true the associated enclosed element has to be present:

Tag Attribute Description
checks The checks element covers several switches to perform and write out certain tests.
vchk Continuity checks of the potential at the MT and vacuum boundaries.
cdinf Calculation of partial charges and the continuity of the density.
disp Calculation of the distance between the in- and output potential.
bandDOS Select the DOS calculation mode. For details have a look at the respective section.
vacuumDOS For details have a look at the respective section.
unfoldingBand
unfoldBand A boolean switch that defines if unfolding is used and additional weights are written.
supercellX The size of the supercell (in units of simple unit cells) (iteger value) in X direction.
supercellY The size of the supercell (in units of simple unit cells) (iteger value) in Y direction.
supercellZ The size of the supercell (in units of simple unit cells) (iteger value) in Z direction.
plotting The plotting element groups several switches to plot the density and the potential.
iplot Calculate a charge density plot. For details see the respective section.
score If true the core charge is excluded from the plot.
plplot This switch allows the plotting of the potential from its respective files.
chargeDensitySlicing
numkpt This is the number of the k-point which is used for the slice (k=0 : all k-points are used)
minEigenval This is the lower boundary for eigenvalues in the slice.
maxEigenval This is the upper boundary for eigenvalues in the slice.
nnne The number of eigenvalues used for the slice (nnne=0 : all eigenvalues between boundaries are taken into account)
pallst Set this to true if states above the Fermi level are plotted.
coreSpectrum See the section on core spectrum calculations for details.
magneticCircularDichroism See the section on magnetic circular dichroism calculations for details.

Force therorem section

   <forceTheorem>
      <MAE theta="0.0 0.1*Pi" phi="0.0 0.2*Pi" />
   </forceTheorem>

It is possible to apply the magnetic force theorem to perform efficient approximative calculations on the magnetocrystalline anisotropy energy (MAE), spin-spiral dispersions, the Dzyaloshinskii Moriya interaction (DMI), and the Heisenberg exchange interaction. To do so a forceTheorem section has to be inserted directly below the output section. For details see the section on the respective calculations.

Inclusion of the relax.xml file

<!-- We include the file relax.inp here to enable relaxations 
   (see documentation) -->
   <xi:include xmlns:xi="http://www.w3.org/2001/XInclude" 
               href="relax.xml">
      <xi:fallback/>
   </xi:include>

It is possible to automatically include other xml files into the Fleur input file by using the respective XInclude feature. By default this is done for the relax.xml file. The syntax above also provides a fallback that is used when the relax.xml file is not present: In that case it is just not included, but a message about this is written out to the terminal.

When starting new Fleur calculations the relax.xml file is typically not present. It is automatically created when geometry optimizations for the atom positions are performed. Its contents are the atom displacements calculated so far. These automatically modify the atom positions provided in the Fleur input file. Furthermore a history of atom positions and related forces for the previous optimization steps is found in the relax.xml file. This is needed for the determination of the next displacements for ongoing atom position optimization calculations.

Details on how geometry optimizations are performed are found in the respective section.