XML based input file

Advice for first time readers

This section is more of reference character. You might want to skip it first and come back later.

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.27">
   <comment>
      alpha Si
   </comment>
   <calculationSetup>
      <cutoffs Kmax="3.70" Gmax="11.00" GmaxXC="9.20" numbands="0"/>
      <scfLoop itmax="9" maxIterBroyd="99" imix="Anderson" alpha=".05" preconditioning_param="0.0" spinf="2.00"/>
      <coreElectrons ctail="T" frcor="F" kcrel="0" coretail_lmax="0" />
      <magnetism jspins="1" l_noco="F" l_J="F" swsp="F" lflip="F"/>
      <soc theta=".00" phi=".00" l_soc="F" spav="F" off="F" soc66="T"/>
      <expertModes gw="0" pot8="F" eig66="F" lpr="0" isec1="99" secvar="F"/>
      <geometryOptimization l_f="F" qfix="0" />
      <bzIntegration valenceElectrons="20.00" mode="hist" fermiSmearingEnergy=".0010">
         <kPointCount count="16" gamma="F"/>
      </bzIntegration>
      <energyParameterLimits ellow="-1.80" elup="1.00"/>
   </calculationSetup>
   <cell>
      <symmetryFile filename="sym.out"/>
      <bulkLattice scale="1.00" latnam="any">
         <bravaisMatrix>
            <row-1>.0000000000 5.1673552752 5.1673552752</row-1>
            <row-2>5.1673552752 .0000000000 5.1673552752</row-2>
            <row-3>5.1673552752 5.1673552752 .0000000000</row-3>
         </bravaisMatrix>
      </bulkLattice>
   </cell>
   <xcFunctional name="pbe" relativisticCorrections="F"/>
   <atomSpecies>
      <species name="Si-1" element="Si" atomicNumber="14" coreStates="2" magMom=".00" flipSpin="T">
         <mtSphere radius="2.18" gridPoints="721" logIncrement=".016"/>
         <atomicCutoffs lmax="8" lnonsphr="6"/>
         <energyParameters s="3" p="3" d="3" f="4"/>
         <lo type="SCLO" l="1" n="2" eDeriv="0"/>
      </species>
   </atomSpecies>
   <atomGroups>
      <atomGroup species="Si-1">
         <relPos>1.000/8.000 1.000/8.000 1.000/8.000</relPos>
         <relPos>-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" vacdos="F" slice="F">
      <checks vchk="F" cdinf="F" disp="F"/>
      <densityOfStates ndir="0" minEnergy="-.50" maxEnergy=".50" sigma=".0150"/>
      <vacuumDOS layers="0" integ="F" star="F" nstars="0" locx1=".00" locy1=".00" locx2=".00" locy2=".00" nstm="0" tworkf=".00"/>
      <unfoldingBand unfoldBand="F" supercellX="1" supercellY="1" supercellZ="1"/>
      <plotting iplot="F" score="F" plplot="F"/>
      <chargeDensitySlicing numkpt="0" minEigenval=".00" maxEigenval=".00" nnne="0" pallst="F"/>
      <specialOutput form66="F" eonly="F" bmt="F"/>
   </output>
</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 section

   <comment>
      alpha Si
   </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.00" GmaxXC="9.20" numbands="0"/>
      <scfLoop itmax="9" maxIterBroyd="99" imix="Anderson" alpha=".05" preconditioning_param="0.0" spinf="2.00"/>
      <coreElectrons ctail="T" frcor="F" kcrel="0"/>
      <magnetism jspins="1" l_noco="F" l_J="F" swsp="F" lflip="F"/>
      <soc theta=".00" phi=".00" l_soc="F" spav="F" off="F" soc66="T"/>
      <expertModes gw="0" pot8="F" eig66="F" lpr="0" isec1="99" secvar="F"/>
      <geometryOptimization l_f="F" qfix="0"/>
      <bzIntegration valenceElectrons="20.00" mode="hist" fermiSmearingEnergy=".0010">
         <kPointCount count="16" gamma="F"/>
      </bzIntegration>
      <energyParameterLimits ellow="-1.80" elup="1.00"/>
   </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
imix The mixing scheme. This can be one of "straight", "Broyden1", "Broyden2", and "Anderson"
alpha The mixing factor
preconditioning_param The preconditioning parameter for bulk metals. Typical value: 0.8. Choose higher mixing parameter, f.e. 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
l_J Set this to true to calculate Heisenberg J_ij parameters.
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.
off Only soc contributions from certain muffin tins are considered.
soc66 This is only relevant for spin-orbit calculations with set eig66 flag.
nocoParams See the section on the non-collinear magnetism setup for details.
expertModes Parameters for the control of certain advanced Fleur calculation modes
gw The different output modes for GW approximation calculations are set here.
pot8 Set this to true to use the potential from the files pottot and potcoul.
eig66 If true and the eig file exists read the eigenvalues and eigenvectors from it. If true and the eig file does not exist create it and stop.
lpr If lpr is greater than 0, also list eigenvectors in the out file
isec1 After iteration isec the iterative diagonalization is used.
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.
qfix This parameter determines the calls to the qfix routine that ensures charge neutrality.
qfix=0 restricts the number of calls to the routine. This should be fine in general.
qfix=1 calls the routine more often. This is the old FLEUR behaviour.
For further options on relaxation..
ldaU Optional parameters for the density matrix mixing in LDA+U calculations. The LDA+U setup. for details.
bzIntegration Parameters required for the Brillouin zone integration
valenceElectrons The number of electrons to be represented within the valence electron framework.
mode The Brillouin zone integration mode. It can be one of
hist - Use the histogram mode. This is the default.
gauss - Use Gaussian smearing.
tria - Use the tetrahedron method.
fermiSmearingEnergy The Fermi smearing can be parametrized by this energy in Hartree.
fermiSmearingTemp As an alternative to fermiSmearingEnergy a Fermi smearing temperature can be set in Kelvin.
kPointCount See the page on the k point set setup for details.
energyParameterLimits Boundaries for energy parameters
ellow
elup

Unit cell section

   <cell>
      <symmetryFile filename="sym.out"/>
      <bulkLattice scale="1.0000000000" latnam="any">
         <bravaisMatrix>
            <row-1>.0000000000 5.1673552752 5.1673552752</row-1>
            <row-2>5.1673552752 .0000000000 5.1673552752</row-2>
            <row-3>5.1673552752 5.1673552752 .0000000000</row-3>
         </bravaisMatrix>
      </bulkLattice>
   </cell>

The unit cell section covers the declaration of the symmetry operations available in the unit cell and the definition of the lattice vectors.

Definition of the Bravais lattice

In the XML input file lattices for bulk or film unit cells can be defined in the unit cell section. The type of unit cell is selected by using either the BulkLattice or the FilmLattice XML elements. The definition of the details of the lattice is in both cases similar. The lattice vectors are given in atomic units (bohr radii). For the bulk lattice the following examples illustrate the different options to declare the shape of the unit cell:

      <bulkLattice scale="1.00" latnam="any">
         <bravaisMatrix>
            <row-1>.0000000000 5.1673552752 5.1673552752</row-1>
            <row-2>5.1673552752 .0000000000 5.1673552752</row-2>
            <row-3>5.1673552752 5.1673552752 .0000000000</row-3>
         </bravaisMatrix>
      </bulkLattice>

A simple way to define the lattice is to just provide the lattice vectors in the 3x3 Bravais matrix. The attribute scale of the bulkLattice element is a factor the matrix is multiplied with. It can be used to change the size of the unit cell, e.g., to find the optimized lattice constant from a sequence of DFT calculations. If the Bravais matrix is directly provided, the bulkLattice attribute latnam has to be set to "any".

Film calculations

For film lattices several additional attributes have to be set. The attribute dVac defines the length of the unit cell in z-direction. dTilda defines the length of an artificial, virtual, extended unit cell used to determine the set of LAPW basis functions. This is required as the LAPWs for a given unit cell are adapted to periodic problems. For the direction normal to the film plane this periodicity is not present.

The lattice itself can again be declared by providing the Bravais matrix as it is done in the example. However, in this case the entries of the matrix in the third row and in the third column are ignored.

The vacuum energy parameters are also defined in the filmLattice XML element. These can be given by up to two vacuumEnergyParameters elements for the two vacua. For both vacua energy parameters can be provided for two spins. In nonmagnetic systems only the spinUp entry is considered. The entries define the energy parameters relative to the vacuum potential zero, i.e., the potential infinitely far away from the film.

      <filmLattice scale="1.00" latnam="squ" dVac="5.79" dTilda="9.68">
         <a1>5.458864500000</a1>
         <vacuumEnergyParameters vacuum="1" spinUp="-.25" spinDown="-.25"/>
      </filmLattice>

Alternative specification of lattice

While we currently still support some of the options outlined here, these are deprecated. Please use them in the input of the input-generator 'inpgen' instead of 'inp.xml'

      <bulkLattice scale="0.97" latnam="squ">
         <a1>4.815397</a1>
         <c>6.81</c>
      </bulkLattice>

Another way to define the lattice is to set the latnam attribute to the name of the Bravais lattice. In this case instead of the Bravais matrix the corresponding lattice parameters have to be provided. They are set in the <a1>, <a2>, and <c> xml elements. Note that not all lattices require all three lattice constants. In such a case only the required parameters have to be set. The lattices definable by this approach are

latnam <a1> <a2> <c> description
squ x x
c-b x x
fcc x * face-centered cubic
hex x x
hx3 x x
bcc x * body-centered cubic
c-r x x x
p-r x x x
obl ** ** x

The declaration of film lattices is illustrated with the following examples:

      <filmLattice scale="1.00" latnam="any" dVac="47.66" dTilda="51.37">
         <bravaisMatrix>
            <row-1>6.0157233797 .0000000000 .0000000000</row-1>
            <row-2>.0000000000 6.0157233797 .0000000000</row-2>
            <row-3>.0000000000 .0000000000 48.1100636580</row-3>
         </bravaisMatrix>
         <vacuumEnergyParameters vacuum="1" spinUp="-.25" spinDown="-.25"/>
      </filmLattice>

Of course, film lattices can also be defined by naming the type of 2D lattice and providing the lattice constants. In comparison to the bulk lattice the lattice constant does not have to be provided as it is given by dVac.

Declaration of the unit cell symmetry in the XML input

The symmetry of the system is another important input for FLEUR. It is specified by providing a list of symmetry operations to FLEUR. Usually, these operations are generated by the input-generator by inspection of the cell and atomic input.

Adjusting the symmetry

For certain calculations you might want to modify the operations and for example remove symmetry operations. While this is easily possible by removing operations from the list in 'inp.xml' you should be careful not to remove operations that map equivalent atoms onto each other within an atom group. If you remove such operations you have to adjust the assignment of atoms to groups.

The usual way to specify symmetry operations is by using the corresponding '' XML tag.

      <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>
         <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>
         <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>
         <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>
         <symOp>
            <row-1>0 -1 0 .5000000000</row-1>
            <row-2>-1 0 0 .5000000000</row-2>
            <row-3>0 0 1 .0000000000</row-3>
         </symOp>
         <symOp>
            <row-1>0 -1 0 .5000000000</row-1>
            <row-2>1 0 0 .5000000000</row-2>
            <row-3>0 0 1 .0000000000</row-3>
         </symOp>
         <symOp>
            <row-1>0 1 0 .5000000000</row-1>
            <row-2>-1 0 0 .5000000000</row-2>
            <row-3>0 0 1 .0000000000</row-3>
         </symOp>
         <symOp>
            <row-1>0 1 0 .5000000000</row-1>
            <row-2>1 0 0 .5000000000</row-2>
            <row-3>0 0 1 .0000000000</row-3>
         </symOp>
         <symOp>
            <row-1>1 0 0 .5000000000</row-1>
            <row-2>0 1 0 .5000000000</row-2>
            <row-3>0 0 -1 .0000000000</row-3>
         </symOp>
         <symOp>
            <row-1>-1 0 0 .5000000000</row-1>
            <row-2>0 1 0 .5000000000</row-2>
            <row-3>0 0 -1 .0000000000</row-3>
         </symOp>
         <symOp>
            <row-1>1 0 0 .5000000000</row-1>
            <row-2>0 -1 0 .5000000000</row-2>
            <row-3>0 0 -1 .0000000000</row-3>
         </symOp>
         <symOp>
            <row-1>-1 0 0 .5000000000</row-1>
            <row-2>0 -1 0 .5000000000</row-2>
            <row-3>0 0 -1 .0000000000</row-3>
         </symOp>
         <symOp>
            <row-1>0 -1 0 .0000000000</row-1>
            <row-2>-1 0 0 .0000000000</row-2>
            <row-3>0 0 -1 .0000000000</row-3>
         </symOp>
         <symOp>
            <row-1>0 -1 0 .0000000000</row-1>
            <row-2>1 0 0 .0000000000</row-2>
            <row-3>0 0 -1 .0000000000</row-3>
         </symOp>
         <symOp>
            <row-1>0 1 0 .0000000000</row-1>
            <row-2>-1 0 0 .0000000000</row-2>
            <row-3>0 0 -1 .0000000000</row-3>
         </symOp>
         <symOp>
            <row-1>0 1 0 .0000000000</row-1>
            <row-2>1 0 0 .0000000000</row-2>
            <row-3>0 0 -1 .0000000000</row-3>
         </symOp>
      </symmetryOperations>

The symmetryOperations element allows to specify each symmetry operation directly. Each symmetry operation is given by a matrix of three rows and four columns, where the last column is a translation vector needed for nonsymmorphic symmetries. If the input file generator is invoked with the -explicit command line switch this form of declaring the symmetry operations is used in the inp.xml file.

Including the sym.xml file

As this list can be long it might be desired to provide the symmetry operations in a separate file. You can use the x-include option for this purpose.

Deprecated options to specify the symmetry

The options below are still in frequent use but should be considered as deprecated. We will remove them in future.

Symmetries in an external sym.out file

      <symmetryFile filename="sym.out"/>

By providing the symmetryFile element the symmetry operations are read in from an external file. Typically this is the sym.out file written out by the input file generator. It is, of course, possible to change the filename with the associated attribute. Explicit specification of space-groups

      <symmetry spgrp="p4m" invs="T" zrfs="T"/>

With the XML element symmetry it is possible to define the symmetries by providing one of the 2D space groups in the attribute spgrp and additionally providing information about the availability of inversion symmetry in invs and z reflection symmetry in zrfs. The applicable 2D space groups are (where the angles denote the number of centers for corresponding rotations):

name lattice 180° 120° 90° 60° reflection axes glide reflections
p1 oblique - - - - - -
p2 oblique 4 - - - - -
pmy
pgy
cmy
pmm rectangular 4 - - - 4 (in 2 perp. directions) -
pmg rectangular 2 - - - 2 (parallel) 2 (parallel, perp. to refl. axes)
pgg rectangular 2 - - - - 4 (in 2 perp. directions)
cmm rhombic 3 - - - 2 (in 2 perp. directions) 4 (in 2 perp. directions)
p4 square 2 - 2 - - -
p4m square 2 - 2 - 6 (2 horizontal, 2 vertical, 2 diagonal) 4 (in 2 perp. directions, not on refl. axes)
p4g square 2 - 2 - 4 (2 per diagonal) 6 (in 4 directions, not on refl. axes)
p3 hexagonal - 3 - - - -
p3m1 hexagonal - 3 - - 5 (in 3 directions) 8 (in 3 directions, in middle between refl. axes)
p31m hexagonal - 3 - - 3 (in 3 directions) 4 (in 3 directions, in middle between refl. axes)
p6 hexagonal 3 2 - 1 - -
p6m hexagonal 3 2 - 1 8 (in 6 directions) 12 (in 6 directions, in middle between refl. axes)
pm rectangular - - - - 2 (parallel) -
pg rectangular - - - - - 2 (parallel)
cm rhombic - - - - 2 (parallel) 2 (parallel to, in middle between refl. axes)

Setup of the k point set

To define the k point set used for the calculation three alternatives are provided. Additionally the XML input provides a way of defining the k point path for band structure calculations. The different means of setting the k point set are selected by providing one of three possible XML elements in the bzIntegration part of the calculation setup section. The following examples illustrate each of these elements:

         <kPointCount count="100" gamma="F"/>

By using the kPointCount element one only defines a number of k points that Fleur should use. Fleur then generates a default k point mesh that features approximately the desired number of k points. Some advanced orbital dependent exchange correlation functionals require k point sets that include the gamma point. For such calculations the gamma attribute can be used to ensure that the gamma point is included in the k point set, even if this is not provided by the default mesh.

         <kPointMesh nx="12" ny="12" nz="12" gamma="F"/>

If more control over the k point mesh is needed the kPointMesh element can be used. Here the number of k points in each dimension (nx, ny, nz) can be set directly. In analogy to the kPointCount element kPointMesh also provides the above discussed gamma attribute.

         <kPointList posScale="48.00000000" weightScale="288.00000000" count="24">
            <kPoint weight="    8.000000">   20.000000    20.000000    21.000000</kPoint>
            <kPoint weight="   16.000000">   20.000000    12.000000    21.000000</kPoint>
            <kPoint weight="   16.000000">   20.000000     4.000000    21.000000</kPoint>
            <kPoint weight="    8.000000">   12.000000    12.000000    21.000000</kPoint>
            <kPoint weight="   16.000000">   12.000000     4.000000    21.000000</kPoint>
            <kPoint weight="    8.000000">    4.000000     4.000000    21.000000</kPoint>
            <kPoint weight="    8.000000">   20.000000    20.000000    15.000000</kPoint>
            <kPoint weight="   16.000000">   20.000000    12.000000    15.000000</kPoint>
            <kPoint weight="   16.000000">   20.000000     4.000000    15.000000</kPoint>
            <kPoint weight="    8.000000">   12.000000    12.000000    15.000000</kPoint>
            <kPoint weight="   16.000000">   12.000000     4.000000    15.000000</kPoint>
            <kPoint weight="    8.000000">    4.000000     4.000000    15.000000</kPoint>
            <kPoint weight="    8.000000">   20.000000    20.000000     9.000000</kPoint>
            <kPoint weight="   16.000000">   20.000000    12.000000     9.000000</kPoint>
            <kPoint weight="   16.000000">   20.000000     4.000000     9.000000</kPoint>
            <kPoint weight="    8.000000">   12.000000    12.000000     9.000000</kPoint>
            <kPoint weight="   16.000000">   12.000000     4.000000     9.000000</kPoint>
            <kPoint weight="    8.000000">    4.000000     4.000000     9.000000</kPoint>
            <kPoint weight="    8.000000">   20.000000    20.000000     3.000000</kPoint>
            <kPoint weight="   16.000000">   20.000000    12.000000     3.000000</kPoint>
            <kPoint weight="   16.000000">   20.000000     4.000000     3.000000</kPoint>
            <kPoint weight="    8.000000">   12.000000    12.000000     3.000000</kPoint>
            <kPoint weight="   16.000000">   12.000000     4.000000     3.000000</kPoint>
            <kPoint weight="    8.000000">    4.000000     4.000000     3.000000</kPoint>
         </kPointList>

If the input file generator is used with the -explicit command line switch it generates a kPointList that directly shows each k point and the number of k points.

Each kPoint element features the attribute weight and three numbers. The weight is the weight of the k point in the Brillouin zone integration. Each of the three numbers is divided by the value of the posScale attribute of the kPointList element to obtain the coordinates of the k point.

The weightScale and count attributes of kPointList only have informative character. The here provided values are not used by Fleur but only calculated by the input file generator. weightScale is the sum of the weights of all provided k points. count is the number of the provided k points.

The k point path for band structure calculations

For band structure calculations only the kPointCount element should be used. Fleur then generates a k point path along several default high-symmetry points that consists exactly of the number of k points provided in the count attribute of kPointCount.

If a special k point path deviating from the default one should be used this can be achieved by defining several special k points within the kPointCount element:

         <kPointCount count="100" gamma="F">
            <specialPoint name="g">0.0 0.0 0.0</specialPoint>
            <specialPoint name="X">0.5 0.0 0.0</specialPoint>
         </kPointCount>

The two or more specialPoints defined in this way replace the high-symmetry k points in the generation of the k point path. Again for each specialPoint the three coordinates in the Brillouin zone have to be provided. Additionally a name should be set with the associated attribute.

Exchange correlation functional section

   <xcFunctional name="pbe" relativisticCorrections="F"/>

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.

Atom species

The atom species 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 atom groups section each atom group is associated to one of the species.

   <atomSpecies>
      <species name="Si-1" element="Si" atomicNumber="14" coreStates="2" magMom=".00" flipSpin="T">
         <mtSphere radius="2.18" gridPoints="721" logIncrement=".016"/>
         <atomicCutoffs lmax="8" lnonsphr="6"/>
         <energyParameters s="3" p="3" d="3" f="4"/>
         <lo type="SCLO" l="1" n="2" eDeriv="0"/>
      </species>
   </atomSpecies>
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.
coreStates The number of states whose electrons are to be treated as core electrons.
magMom The magnetic moment of each atom in the unit cell belonging to this species.
flipSpin A boolean switch to flip the spin direction for the associated atoms.

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.
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 specie. 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.
electronConfig See the description of the electron configuration setup for details.
nocoParams See the description of the non-collinear magnetism setup for details.
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 page on the [[xmlLOSetup
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.

Local orbital setup

In Fleur a local orbital (LO) is given by an energy parameter, an angular momentum quantum number, and a definition of the kind of radial function used to construct the LO. Within the inp.xml file LOs are defined for certain species within the atom species section. Some examples for such definitions are:

         <lo type="SCLO" l="1" n="3" eDeriv="0"/>

An LO definition like this is typically used to define a local orbital used to represent semicore states within the valence electron framework in an FLAPW calculation. Sometimes it is even better to add another LO to describe such a state as the energy parameter might not be perfectly adjusted. In such a case one might add an LO with the same parameters except the degree of the energy derivative (eDeriv) which would be 1.

         <lo type="HELO" l="2" n="4" eDeriv="0"/>

An LO definition typically used to define local orbitals with radial functions at energy parameters in the range of the unoccupied states. Such LOs are typically used whenever the performed calculation explicitly considers the unoccupied states, e.g., in calculations employing the GW approximation to many-body perturbation theory. Another use for such LOs is the elimination of the linearization error within the FLAPW method.

         <lo type="SCLO" l="0-3" n="4,4,3,4" eDeriv="2"/>

A definition of a set local orbitals for the angular momentum quantum numbers 0 to 3 and corresponding main quantum numbers 4,4,3, and 4. Each of the LOs uses the second energy derivative of the solution to the radial scalar-relativistic approximation (SRA) to the Dirac equation as third radial function. Such sets of LOs can be used to overcome the linearization error in all relevant l channels. However, one has to be careful not to obtain a numerically singular overlap matrix for the radial functions in one of the l channels. If energy parameters for unoccupied states are used this way of defining sets of LOs is very practical to cover a large range of energy and l quantum numbers in only a few lines in the input file.

In detail, the energy parameter for the LO is given by the LO type and the main quantum number. The main quantum number n defines the number of nodes (n-l-1) of the additional radial function constructed for the LO. The energy parameter is then obtained by solving the radial problem under certain boundary conditions defined by the type attribute:

LO-Type Description
SCLO A semicore local orbital.The spherical part of the potential in the MT sphere is extended by an artificial confining potential outside the MT sphere. The energy parameter then is the eigenenergy belonging to the solution to this problem with the given l and n quantum numbers.
HELO A higher energy local orbital. Here the SRA to the radial Dirac equation is solved for different test energies as a differential equation outwards starting at the atomic nucleus. The energy parameter then is that energy whose solution yields the correct number of nodes and a logarithmic derivative of -(l+1) at the MT boundary. It is found by a bisection search algorithm.

The angular momentum quantum number l and the main quantum number n are defined by the associated attributes of the lo XML element. The entries for these values can either be single integer values or sequences of values. For the l quantum number these sequences can be defined by two numbers and a "-" in between or by comma separated values. For the n quantum number only comma separated values are allowed. Note that l and n quantum numbers are used in pairs: The i-th l quantum number together with the i-th n quantum number are used to define the i-th local orbital.

Note that if an enpara file is present the energy parameters defined in that file override the definitions in the inp.xml file. If the energy parameters are to be obtained by the energy center of mass (ECM) method, this additional file has to be used.

The kind of the additional radial function is given by the eDeriv attribute. If this is set to 0 the solution of the SRA to the radial Dirac equation at the given energy parameter is used. If it is set to finite positive integers the energy derivative of this solution of degree eDeriv is used to construct an HDLO (higher derivative local orbital).

Further reading

Setup of the electron configurations

Within each species in the atom species section an electronConfig element can be defined. This is used to declare which electron states are to be treated within the core electron framework and which have to be considered in the valence electron framework. Furthermore, occupations for the different electron states are set here. The electronConfig element is optional and only required if a setup differing from the default for the respective atom shall be considered. The following example demonstrates how an electron configuration is set:

         <electronConfig>
            <coreConfig>[Xe] (4f5/2) (4f7/2)</coreConfig>
            <valenceConfig>(6s1/2) (5d3/2) (5d5/2) (6p1/2) (6p3/2)</valenceConfig>
            <stateOccupation state="(6p3/2)" spinUp="1.00000000" spinDown="1.00000000"/>
         </electronConfig>

The electronConfig encloses the XML elements coreConfig, valenceConfig and possibly multiple stateOccupation elements.

The coreConfig element is used to provide a space separated list of electron states to be treated by the core framework. Certain subsets can be set in terms of noble gas configurations. The electron states together with the noble gas configurations are

noble gas configuration electron states
[He] (1s1/2)
[Ne] (2s1/2) (2p1/2) (2p3/2)
[Ar] (3s1/2) (3p1/2) (3p3/2)
[Kr] (4s1/2) (3d3/2) (3d5/2) (4p1/2) (4p3/2)
[Xe] (5s1/2) (4d3/2) (4d5/2) (5p1/2) (5p3/2)
[Rn] (6s1/2) (4f5/2) (4f7/2) (5d3/2) (5d5/2) (6p1/2) (6p3/2)
(7s1/2) (5f5/2) (5f7/2) (6d3/2) (6d5/2)

In the table each noble gas configuration incorporates the electron states that are stated in the same line and the lines above.

In the valenceConfig element a similar list of electron states has to be provided to declare the occupied valence states. Here noble gas configurations are not allowed.

For each of the listed states that is not fully occupied a stateOccupation element has to be set. In it the state attribute selects the respective states. The spinUp and spinDown attributes are used to define the number of electrons in the two spin channels.

Atom groups section

   <atomGroups>
      <atomGroup species="Si-1">
         <relPos>1.000/8.000 1.000/8.000 1.000/8.000</relPos>
         <relPos>-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.

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.

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>.0000000000 .5000000000 .0600000000</relPos>
         <relPos>.5000000000 .0000000000 -.0600000000</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 XML element 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.

Film positions

      <atomGroup species="W-2">
         <filmPos>1.0000000000/2.0000000000 1.0000000000/2.0000000000 -12.0314467594</filmPos>
         <filmPos>1.0000000000/2.0000000000 1.0000000000/2.0000000000 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" vacdos="F" slice="F">

      <checks vchk="F" cdinf="F" disp="F"/>
      <densityOfStates ndir="0" minEnergy="-.50" maxEnergy=".50" sigma=".015"/>
      <vacuumDOS layers="0" integ="F" star="F" nstars="0" locx1=".00" locy1=".00" locx2=".00" locy2=".00" nstm="0" tworkf=".00"/>
      <unfoldingBand unfoldBand="F" supercellX="1" supercellY="1" supercellZ="1"/>
      <plotting iplot="F" score="F" plplot="F"/>
      <chargeDensitySlicing numkpt="0" minEigenval=".00" maxEigenval=".00" nnne="0" pallst="F"/>
      <specialOutput form66="F" eonly="F" bmt="F"/>
   </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.
vacdos A boolean switch that determines whether a vacuum DOS has to be calculated.
slice A boolean switch controlling whether a slice has to be calculated. The associated parameters are set in the chargeDensitySlicing element.
coreSpec A boolean switch controlling whether a core spectrum has to be calculated. The associated parameters are set in the coreSpectrum 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.
densityOfStates Parameters for DOS calculations are set in this element.
ndir Select the DOS calculation mode. For details have a look at the respective page for the conventional input file.
minEnergy The lower energy boundary of the window for the DOS plot in Htr.
maxEnergy The upper energy boundary of the window for the DOS plot in Htr.
sigma The Gaussian smearing factor used in the plot whenever the tetrahedron method is not used.
vacuumDOS
layers The number of layers in which the vacuum DOS is integrated. The value can be between 1 and 99.
integ If integ is true the vacuum DOS is also integrated in the direction normal to the film.
star if star is true, star coefficients are calculated at values of izlay for 0 (=q) to nstars-1.
nstars The number of star functions to be used (0th star is given by value of q=charge integrated in 2D)
locx1, locy1,
locx2, locy2
The four attributes loc[xy]1, loc[xy]2 are used to calculate a local DOS at a certain vertical z position (or integrated in z). The local DOS is restricted to an area in the 2D unit cell which is defined by the corner points given by loc[xy]1 and loc[xy]2. The two corners have to be provided in internal coordinates.
nstm For the consideration of STM: 0: s-Tip, 1: p_z-Tip, 2: d_z^2-Tip (following Chen's derivative rule)
tworkf For the consideration of STM: Workfunction of Tip (in Hartree units) is needed for d_z^2-Orbital.
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. The region is defined by the plot_inp file.
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.
specialOutput
form66 Use this switch to write out a formatted eigenvector file.
eonly This switch can be used to prevent prevent the output of eigenvectors into associated file.
bmt This switch is used to generate a charge density file 'cdnbmt' with suppressed magnetization in the interstitial and vacuum regions.
coreSpectrum See the section on the core spectrum setup for details.

Setup of non-collinear magnetism in the XML input file

To configure a Fleur calculation incorporating non-collinear magnetism, some parameters have to be set in the calculation setup section and further parameters have to be set for each atomGroup in the atom groups section. In each of these sections nocoParams elements have to be added. Templates with default parameters are generated by using the input generator with the -explicit command line option.

An example for the nocoParams element in the calculation setup section is:

      <nocoParams l_ss="F" l_mperp="F" l_constr="F" l_disp="F" sso_opt="FFF" mix_b=".00000000" thetaJ=".00000000" nsh="0">
         <qss>.0000000000 .0000000000 .0000000000</qss>
      </nocoParams>

The following attributes have to be set here:

Attribute Description
l_ss This boolean switch is used to activate spin-spiral calculations.
l_mperp Here the output of the magnetization perpendicular to the chosen axis can be activated.
l_constr Switch this on to constrain the magnetic moments.
l_disp This is the dispersion switch. If l_disp is set to true, the Force theorem is used to calculate the sum of eigenvalues for each predefined qss.
sso_opt This attribute sets three logical switches used in the context of [[SsoDetails
mix_b This is a mixing factor. If l_constr is set to true then the constraint field is mixed. In this case mix_b="0.5" should work fine. In the case of an atom with l_relax being set to true the input/output-directions of the moments are mixed. Here you can choose mix_b > 1 (e.g. 4).
thetaJ Used for the [[HeisenbergInteractionParametersJij
nsh Used for the calculation of Heisenberg J_ij interaction coefficients. This is the number of shells of neighbors to be considered.

The enclosed XML element is used to define the spin spiral vector in reciprocal lattice vectors.

An example for the nocoParams element in each atomGroup element of the atom groups section is:

         <nocoParams l_relax="F" l_magn="F" M=".0000000000" alpha=".0000000000" beta=".0000000000" b_cons_x=".0000000000" b_cons_y=".0000000000"/>

The following attributes have to be set here:

Attribute Description
l_relax This has to be set to true to relax the directions of the magnetic moments at the associated atoms.
l_magn Used for the calculation of Heisenberg J_ij interaction coefficients. Set this to true iff the atoms in the group are magnetic.
M Used for the calculation of Heisenberg J_ij interaction coefficients. The value of the magnetic moment(including sign) has to be set here.
alpha The 1st angle that determines the magnetic structure. It is equal to "phi" in spherical coordinates.
beta The 2nd angle that determines the magnetic structure. It is equal to "theta" (measured from the z axis) in spherical coordinates.
b_cons_x,b_cons_y These are the constraint fields in x and y direction. They are determined self-consistently if l_constr is set to true.

Setup of LDA+U calculations

To amend the description of electron correlations in local and semilocal XC functionals, up to 4 Hubbard U parameters can be defined for each species in the atom species section. For this optional ldaU XML elements have to be inserted into the respective section below the energyParameters, electronConfig, and nocoParams entries and above the lo entries. The following example demonstrates how an ldaU element looks like:

         <ldaU l="2" U="8.0" J="0.9" l_amf="F"/>
Attribute Description
l The angular momentum quantum number of the orbital for which the U parameter is set.
U The U parameter in eV.
J The J parameter in eV.
l_amf This logical switch determines whether the "around mean field" limit (if true) or the atomic limit (if false) is used.

Mixing of the density matrix

Whenever a Hubbard U parameter is added to an atom not only the density has to be part of the mixing from iteration to iteration but the density matrix, too. For this additional parameters can be set in an optional ldaU XML element (different from the one above) in the calculation setup section. Such an element looks like:

<ldaU l_linMix="F" mixParam="0.05" spinf="1.00"/>
Attribute Description
l_linMix This switch determines whether a straight mixing algorithm is applied to the density matrix (if true) or the mixing of the density matrix will be performed like the mixing of the density (if false). The switch is optional and set to false by default.
mixParam This is the optional mixing parameter that is used for the straight mixing of the density matrix. By default this parameter is 0.05.
spinf Optional, default ist 1.0.

If the ldaU XML element in the calculation setup section is not present all parameters that can be set in it have their default values.

Further reading

Using the force-theorem in FLEUR calculations

Fleur has the option to calculate some properties using the force-theorem. In such calculations the last self-consistency iteration (or the only iteration if itmax=1) is replaced by a loop in which the eigenvalue sum for different configurations at a fixed potential are calculated.

This is controlled by a special section in the inp.xml file to be inserted after the output-section:

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

Here several different modes are possible. Exactly one should be present:

Magnetic Anisotropy Energy MAE

      <MAE theta="0.0 0.5*Pi" phi="0.0 0.5*Pi" />

This is a simple mode to estimate the magnetocyrstalline anisotropy energy. A loop over different spin-quantization directions is performed. A list of angles should be given. Please note that the number of "theta" and "phi" angles must of course be the same.

Spin-Spiral Dispersion

      <spinSpiralDispersion>
          <q> 0.0 0.0 0.0 </q>
          <q> 0.1 0.0  0.0 </q>
          ...
     </spinSpiralDispersion>

This is a simple mode to calculate a spin-spiral dispersion for several q-values. Please note that the first q-Vector given will overwrite the q-vector specified in the '''qss'''-tag given in the '''nocoParams'''.

Dzyaloshinskii Moriya Interaction

      <DMI theta="0.0 0.5*Pi 0.5*Pi" phi="0.0 0.0 0.5*Pi" >
         <qVectors>
             <q> 0.0 0.0 0.0 </q>
             <q> 0.1 0.0  0.0 </q>
             ...
         </qVectors>
     </DMI>

This mode is actually slightly different from the modes above as it actually does not only calculate the eigenvalue sum for different setups, but also employs first order perturbation theory to estimate the effect of spin-orbit coupling on a spin-spiral calculation. Hence you can specify here a list of q-vectors as well as different angles for the magnetisation.

Structure relaxations with FLEUR

WORK in progress

ATTENTION: this section describes work in progress. Your version might not support it yet.

General notes:

  1. Structural relaxations should be performed using the HDF5-version of the code to enable better handling of charge densities after a relaxation step
  2. You should be aware that good forces in LAPW are only obtained if you perform very accurate calculations. In particular you should:
    • Use high cutoffs for your LAPW-basis set (high Kmax and high lmax).
    • Use the core-tail correction ctail=T possibly checking the influence of coretail_lmax.
    • Use LOs for semi-core states as tails or core states can give contributions to forces otherwise not covered.

Switching on the calculation of forces

To calculate forces on an Atom use the ''force'' tag in the ''atomgroup'' tag.

<force calculate="T" relaxXYZ="TTT"/>

For each atom you specify if forces are calculated and which of the directions should be used. Please be aware that setting this tag alone only enables the calculation of the contributions to the force simple to obtain. The full force including the Pulay terms are calculated by setting l_f="T".

Relaxing the structure

To calculate all forces (including Pulay terms) and to perform a structure relaxation you have to specify the ''geometryOptimization'' tag in the input:

<geometryOptimization l_f="F" epsdisp="0.001" epsforce="0.001" forcemix="2"  forcealpha="1.0" qfix="0" force_converged="0.00001" />

All attributes except the l_f are optional with defaults as specified above.

Attribute Description
l_f This switches on the calculation of the full force including the more expensive to obtain Pulay terms
epsdisp This is the minimal displacement at which the relaxation is considered converged
espforce The minimal force at which the relaxation is considered converged
forcemix The scheme to use for calculating displacements
forcemix=0 Simple relaxation by moving the atoms in the direction of the force (forcealpha gives the corresponding scaling factor)
forcemix=1 A CG scheme for relaxations
forcemix>1 A BFGS scheme to determine new displacements.
forcealpha This is the scaling factor used to shift the atoms in the ''forcemix=0'' case or in the case of no history.
qfix The qfix parameter determines how to deal with non-charge neutral densities. These occur if you want to reuse the charge after new displacements have been calculated. In addition, this parameter determines the number of times the code checks of charge neutrality in a self-consistency run. The logic is as follow:
even number leads to less frequent checks. This should be OK in general.
odd number leads to frequent checks as in older FLEUR versions
numbers 0/1 will just fix the charge after a displacement
numbers 2/3 will fix the charge by adjusting the interstitial charge only. This is a better approximation if your charge was generated by a displaced configuration.
numbers 4/5 will try to use an additional decomposition of the charge to get a better estimate for displaced positions (experimental)
force_converged the value given here determines a criterion if an actual relaxation step is performed. Only if the maximal change of force between two SCF iterations is below this value a structural relaxation step is done.

Output of new coordinates

If a relaxation step is performed the code stops with the message of either Structual relaxation: new displacements generated or Structual relaxation: Done if the forces or displacements are smaller than epsforce or epsdisp, respectively.

In addition a file relax.xml is generated. This file contains the current displacements and the history of the positions and forces from previous relaxation steps.

Shifting positions

During structural relaxation the atomic positions will update. These updates should be preformed by specifying additional tags in the inp.xml file. FLEUR creates such a tag-structure in the relax.xml file which looks similar to the one given here:

<relaxation>
   <displacements>
    <displace>   0.0000000000    0.0000000000   -0.0122134660 </displace>
    <displace>   0.0000000000    0.0000000000    0.0031814755 </displace>
    <displace>   0.0000000000    0.0000000000   -0.0044667051 </displace>
    <displace>   0.0000000000    0.0000000000    0.0179966687 </displace>
  </displacements>
   <relaxation-history>
    <step energy="   -22005.9436915333">
      <posforce>   0.0000000000    0.0000000000    0.5000000000    0.0000000000    0.0000000000   -0.0111067330 </posforce>
      <posforce>   0.5000000000    0.5000000000    0.0350000000    0.0000000000    0.0000000000    0.0030907378 </posforce>
      <posforce>   0.5000000000    0.0000000000    0.1130000000    0.0000000000    0.0000000000   -0.0042333525 </posforce>
      <posforce>   0.5000000000    0.5000000000   -0.3960000000    0.0000000000    0.0000000000    0.0189983343 </posforce>
    </step>
   </relaxation-history>
 </relaxation>

You should include this file into inp.xml by incorporating a line like

<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="relax.xml"> <xi:fallback/> </xi:include>

just before the closing </fleurInput> tag. This is done automatically by the input-generator now. The empty fallback enables you to use this line even if no relax.xml is present.

Spheres might overlap during relaxation

The code will check that no overlapping MT-spheres arise from your displacements and it will decrease them if necessary. Hence you have to make sure that no such warning for overlapping MT-spheres still remain if your structure is considered converged or you might be stuck with a configuration limited by the size of your MT-spheres.

External fields

Magnetic fields

Note

  • these are simple Zeeman terms added to the potential, not proper B-fields**
  • the fields are not taken into account when calculating the density-potential integrals which enter the total energy.**
  • Magnetic fields can be applied in film and bulk setups.

There are two options to apply B-Fields:

  1. You can specify an overall B-field in the fields-tag of the calculation setup:
<calculationSetup>
      ....
      <fields b_field="0.1"/>
</calculationSetup>
  1. If you want to have a field only applied within the MT-sphere of a single atom (old mfee-file) you should use the tag in the species definition:
<species ....>
      ....
      <special b_field_mt="0.1"/>
     ....
</species>

Electic field settings

There are two basic ways of specifying electric fields:

  1. The values of the sheets of charge for external electric fields is set by requiring charge neutrality. Thus, most easily you can add or subtracting a fractional charge by changing the number of valence electrons. The resulting field is shown in the external electric field section of the out file.
<bzIntegration valenceElectrons="8.00100000" ...
  1. More complex settings are possible using the <fields> tag:
<calculationSetup>
  ....
  <fields zsigma="0.0" sig_b_1="0.0" sig_b_2="0.0" autocomp="T" dirichlet="F" eV="F">
      <shape> shapestring </shape>
  </fields>
</calculationSetup>

The following attributes are provided: * zsigma: the position of the sheets of charge relative to the vacuum boundary (set by default to 10 a.u. (= 5.291772 Å)). * sig_b_1/2 for charges on the upper and one for the lower plate (default 0.0). Setting these to different values enables to place an asymmetric field. * the autocomp switch makes sure that overall charge neutrality is automatically calculated. * the dirichlet switch enables use of Dirichlet boundary conditions. * the eV switch is used to modify units in the dirichlet="T" case. * in addition an (unlimited) number of <shape> tags can be given to specify inhomogenous fields.

Since version 0.26b inhomogeneous fields can be generated: * 'sig_b_1/2' contain the additional (homogeneous) charge for the top and bottom sheet. By default, excess (positive/negative) charge of the film is compensated by equally charging the charge sheets; if 'autocomp' is false, the user has to do this manually. Note: Fleur requires an overall (film plus top plus bottom sheet) charge neutrality. * the inhomogeneous charge can be places using the in which stings are supplied. These strings specify the inhomogenous charges using the key-words rect, circ, rectSinX, polygon, and datafile. Their detailed syntax is:

  rect <sheet> <x>,<y> <width>,<height> <charge> [options]

  circ <sheet> <x>,<y> <radius> <charge> [options]

  rectSinX <sheet> <x>,<y> <width>,<height>  <amplitude> <n> <delta> [options]

  polygon <sheet> <n_points> <x1>,<x2> ... <x_n>,<y_n> <charge> [options]

  datafile <filename> [zero_avg] [options]

Note that all positions and lengths are currently relative values (i.e. between 0 and 1). The sheet to be used can be set using , which can be either top, bot or topbot/bottop. Options are: add (default) to add the charge to the charge of previous tags or replace to use the new charge instead; zero to place the charge only to areas which were before zero, nonzero to place it at areas which where before nonzero or all (default) to place it in the whole area covered by the tag.

Note: The regions can exceed the unit cell plane and then cut off, e.g. circ top 0,0 0.25 0.5 places half an electron in a quarter circle with origin (0,0). Note, however, that circ creates a perfect circle only on the grid; this generates a circle and not an ellipse only if the ''k1d''/''k2d'' ratio matches the crystal's ''a''/''b'' ratio.

rectSinX creates a sinodal potential in ''x'' direction (constant in ''y'' direction for any ''x'' value), i.e. {}, where ''A'' is the amplitude; however, the argument in apwefl is not ''A'' directly but {}, where {} is the number of points in ''z'' direction. Contrary to circ and rect, charges are mask out without being redistributed to non-masked positions. It is {}, n is the order and delta ({}) the offset.

polygon creates a polygon-shaped charge distribution; note that the currently used algorithm does not always give the perfectly shaped polygon - and the edge points are not always included in the polygon.

The datafile reads the data from a file; if a zero_avg has been given, the charge is averaged to zero, i.e. only the inhomogeneous contributions are taken into account. The option replace/add is supported, but zero/not_zero is not. The syntax of the data file itself is as follows. First line: number of ''x'' and ''y'' points; second line: charge for point (x=1,y=2), third: (x=1,y=2) etc. The number of points must be 3*k1d and 3*k2d.

Example 1: To have two top plates (segments):

  rect top 0,  0  0.5,1.0  0.2
  rect top 0.5,0  0.5,1.0 -0.2

Example 2: To have a charged ring with 0.2e and -0.2e of charge evenly distributed outside this ring:

  circ topBot 0.5,0.5 0.2  1           ! Create temporary an inner ring
  circ topBot 0.5,0.5 0.3  0.2 zero    ! Create outer ring
  circ topBot 0.5,0.5 0.2  0   replace ! Delete inner ring
  rect topBot 0,0     1,1 -0.2 zero    ! Place smeared opposite charge

Setup of core spectrum calculations for EELS in the XML input file

In the output section it can be specified that a core spectrum has to be calculated. For this the attribute coreSpec has to be set to "T" and in the output section the optional xml element coreSpectrum has to be defined analogously to the following example:

      <coreSpectrum eKin="300.0" atomType="1" lmax="2" edgeType="L" eMin="-1.0" eMax="15.0" numPoints="17" nqphi="10" nqr="10" alpha_Ex="0.024" beta_Ex="0.050" I_initial="155" verbose="T">
         <edgeIndices> 3 </edgeIndices>
      </coreSpectrum>
Attribute Description
eKin The kinetic energy of the incoming electron in units of keV. The relativistic correction term, which was shown to be important (see PhD thesis of Kevin Jorissen ), is proportional to eKin.
atomType This is the index of the atom group for which the EELS is to be calculated.
lmax Maximum value of the angular momentum to be considered in the EELS calculation. By setting it to a reasonably low value (e.g. 2 or 3), the calculation is significantly faster in comparison with no lmax restriction.
edgeType The edge selection: K, L, M, ...
eMin The bottom edge of the energy interval with respect to the Fermi energy for which the EELS is calculated.
eMax The top edge of the energy interval with respect to the Fermi energy for which the EELS is calculated.
numPoints Number of points in the [eMin,eMax] interval for which the EELS is calculated..
nqphi Number of angular divisions of the q-mesh, optional, standard value: 10
nqr Number of radial divisions of the q-mesh, optional, standard value: 10
alpha_Ex Experimental convergence semi-angle in rad, optional, standard value: 0.024
beta_Ex Experimental collection semi-angle in rad, optional, standard value: 0.05
I_initial Initial intensity of the incoming electron beam, optional, standard value: 155
verbose Verbose output is produced, optional, standard value: F

In the edgeIndices element a list of space separated indices has to be provided.

Using the x-include feature

The xml-parser of FLEUR allows you to use the XInclude functionality of XML. By specifying a line like

<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="relax.xml"> <xi:fallback/> </xi:include>

you can include additional files into 'inp.xml' (in this case the 'relax.xml' file. An additional fallback can be specified if this file is not present (here an empty string).