# XML based input file

In analogy to the conventional inp file a default inp.xml file is generated by the [[Inp-FileGenerator | inp-file generator]] as long as it is not invoked with the -old command line switch. To generate an inp.xml file providing a list of k points and the symmetry operations one can invoke the inp-file generator with the -explicit switch.

# 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.70000000" Gmax="11.00000000" GmaxXC="9.20000000" numbands="0"/>
<scfLoop itmax="9" maxIterBroyd="99" imix="Anderson" alpha=".05000000" preconditioning_param="0.0" spinf="2.00000000"/>
<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=".00000000" phi=".00000000" 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.00000000" mode="hist" fermiSmearingEnergy=".00100000">
<kPointCount count="16" gamma="F"/>
</bzIntegration>
<energyParameterLimits ellow="-1.80000000" elup="1.00000000"/>
</calculationSetup>
<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>
<xcFunctional name="pbe" relativisticCorrections="F"/>
<atomSpecies>
<species name="Si-1" element="Si" atomicNumber="14" coreStates="2" magMom=".00000000" flipSpin="T">
<mtSphere radius="2.18000000" gridPoints="721" logIncrement=".01600000"/>
<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.0000000000/8.0000000000 1.0000000000/8.0000000000 1.0000000000/8.0000000000</relPos>
<relPos>-1.0000000000/8.0000000000 -1.0000000000/8.0000000000 -1.0000000000/8.0000000000</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="-.50000000" maxEnergy=".50000000" sigma=".01500000"/>
<vacuumDOS layers="0" integ="F" star="F" nstars="0" locx1=".00000000" locy1=".00000000" locx2=".00000000" locy2=".00000000" nstm="0" tworkf=".00000000"/>
<plotting iplot="F" score="F" plplot="F"/>
<chargeDensitySlicing numkpt="0" minEigenval=".00000000" maxEigenval=".00000000" 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 element that carries as an attribute the version number of the input file format. Within 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.70000000" Gmax="11.00000000" GmaxXC="9.20000000" numbands="0"/>
<scfLoop itmax="9" maxIterBroyd="99" imix="Anderson" alpha=".05000000" preconditioning_param="0.0" spinf="2.00000000"/>
<coreElectrons ctail="T" frcor="F" kcrel="0"/>
<magnetism jspins="1" l_noco="F" l_J="F" swsp="F" lflip="F"/>
<soc theta=".00000000" phi=".00000000" 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.00000000" mode="hist" fermiSmearingEnergy=".00100000">
<kPointCount count="16" gamma="F"/>
</bzIntegration>
<energyParameterLimits ellow="-1.80000000" elup="1.00000000"/>
</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 $K_\text{max}= \vert \vec{k}+\vec{G} \vert_\text{max}$
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 page on the [[xmlNocoSetup
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 see [[XMLRelaxations
ldaU Optional parameters for the density matrix mixing in LDA+U calculations. See the page on [[xmlLDAUSetup
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 [[xmlKPointSetSetup
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

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.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>

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".

<bulkLattice scale="0.970000000000" 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
• * an arbitrary value is required but ignored
• ** the two rows of a 2D Bravais matrix without an enclosing bravaisMatrix element have to be provided

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

<filmLattice scale="1.00000000" latnam="any" dVac="47.66000000" dTilda="51.37000000">
<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="-.25000000" spinDown="-.25000000"/>
</filmLattice>

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.00000000" latnam="squ" dVac="5.79000000" dTilda="9.68000000">
<a1>5.458864500000</a1>
<vacuumEnergyParameters vacuum="1" spinUp="-.25000000" spinDown="-.25000000"/>
</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

For certain calculations it is required not to exploit the full symmetry a unit cell provides. Fleur therefore gives the user control over the symmetry operations used by the code. It is possible to modify the full set of symmetry operations written out by the input generator. In the unit cell section of the XML input there are three ways of defining which symmetry operations are to be used. The method is selected by providing one of three possible XML elements:

<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.

<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)
<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.

# 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 two attributes:

LDA functionals
x-a
wign
mjw
pz The [[http://dx.doi.org/10.1103/PhysRevB.23.5048
vwn The [[http://www.nrcresearchpress.com/doi/abs/10.1139/p80-159
bh The [[http://dx.doi.org/10.1088/0022-3719/5/13/012
GGA functionals
pw91 The [[http://dx.doi.org/10.1103/PhysRevB.45.13244
pbe The [[http://dx.doi.org/10.1103/PhysRevLett.77.3865
rpbe The [[http://dx.doi.org/10.1103/PhysRevLett.80.890
Rpbe The [[http://dx.doi.org/10.1103/PhysRevB.59.7413
wc The [[http://dx.doi.org/10.1103/PhysRevB.73.235116

relativisticCorrections="F" A boolean switch used to activate optional relativistic corrections according to MacDonnald-Vosko.

# Atom species section

<atomSpecies>
<species name="Si-1" element="Si" atomicNumber="14" coreStates="2" magMom=".00000000" flipSpin="T">
<mtSphere radius="2.18000000" gridPoints="721" logIncrement=".01600000"/>
<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>

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.

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 [[http://www.sciencedirect.com/science/article/pii/S0038109899005773?via%3Dihub
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 page on the [[xmlElectronConfig
nocoParams See the page on the [[xmlNocoSetup
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

• Local orbitals for the representation of semicore states have originally been introduced by Singh et al.
• In the context of GW calculations local orbitals employing higher energy derivatives have been introduced by Friedrich et al.
• For the representation of unoccupied states local orbitals on the basis of the HELO -(l+1) criterion have been used by Betzinger et al.
• An analysis about the usefulness of different types of local orbitals to eliminate the linearization error for the representation of valence electrons has been performed by Michalicek et al.

## 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.0000000000/8.0000000000 1.0000000000/8.0000000000 1.0000000000/8.0000000000</relPos>
<relPos>-1.0000000000/8.0000000000 -1.0000000000/8.0000000000 -1.0000000000/8.0000000000</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="-.50000000" maxEnergy=".50000000" sigma=".01500000"/>
<vacuumDOS layers="0" integ="F" star="F" nstars="0" locx1=".00000000" locy1=".00000000" locx2=".00000000" locy2=".00000000" nstm="0" tworkf=".00000000"/>
<plotting iplot="F" score="F" plplot="F"/>
<chargeDensitySlicing numkpt="0" minEigenval=".00000000" maxEigenval=".00000000" 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 [[IntegratedDOSProgramm
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.
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 [[PlotInp
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 page on the [[coreSpectrumSetup