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 |
- * 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.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
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 '
<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
- 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.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
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
- The LDA+U method has been developed by Anisimov et al.
- The implementation of LDA+U in Fleur is similar to the one proposed by Shick et al.
- A comparison between the around mean field limit and the atomic limit is available in an article by Petukhov et al.
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:
- Structural relaxations should be performed using the HDF5-version of the code to enable better handling of charge densities after a relaxation step
- 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 highlmax
). - Use the core-tail correction
ctail=T
possibly checking the influence ofcoretail_lmax
. - Use LOs for semi-core states as tails or core states can give contributions to forces otherwise not covered.
- Use high cutoffs for your LAPW-basis set (high
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:
- You can specify an overall B-field in the fields-tag of the calculation setup:
<calculationSetup>
....
<fields b_field="0.1"/>
</calculationSetup>
- 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:
- 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" ...
- 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
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
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).