Trouble shooting

If you use the program remotely via ssh login and the central widget is not displaying anything (no white screen) try:

export LIBGL_ALWAYS_INDIRECT=yes

an the command line before running the program.

On some KDE systems the color modes are set wrongly after re-loggin. This results in a failure to display disabled widgets in a grayed-out fashion. This behavior is system wide and not xfplo specific. A remedy (after loggin) is to edit the file .kde/share/config/kdeglobals and to remove all color sections from the beginning of the file.

Hotkeys

In the main window several hotkeys are defined.

Mac users: Ctrl is the Apple-key on Mac OS. Alt keys do not have an equivalent on Mac. Especially, there are no hotkeys to select menu entries or controls in dialogs. That’s Mac OS’s restriction. On Linux all these hotkeys are working.

Axes hotkeys
Action Key
Show axes popup a
toggle cartesian a-x
toggle conentional a-c
toggle primitive a-p
toggle cartesian frame a-a
toggle conventional frame a-v
toggle primitive frame a-r

Hotkeys

Boundary/Display cell hotkeys
Action Key
Show boundary popup b
toggle main boundary b-b
toggle conentional b-c
toggle primitive b-p

Hotkeys

View direction cell hotkeys
Action Key
Show view direction popup v
view top (down the z axis) v-t
view front (down -y axis) v-f
view right (down x axis) v-r
Many more options

Hotkeys

Pick high symmetry points (Fermi surface module)
Action Key
Picking p
Pick points p-p
Pick lines p-l
Pick planes p-a
Pick general points p-g

Hotkeys

The 3D View

Tool-buttons are used in the GUI. They have a main part, which acts like a button and a little down-arrow part, which acts like a combobox. When choosing from the combobox menu the corresponding action will be executed and the corresponding action becomes the buttons default action. So, pushing the button will execute the recently chosen action.

Moving in the sceene

The 3D view has extensive mouse input actions.

Trackball rotate
Hold down the left mouse button and move it around. The rotation is not commutative. So after a while one gets a pretty good feeling for orienting the sceene.
Circle rotate
Ctrl+left mouse button 2D-rotates the sceene around the center of the scene.
Pan/Move
middle mouse button or Shift +left mouse button will move the scene
Zoom
the mouse wheele or the right mouse button or Ctrl+Shift+left mouse button will zoom the sceene in and out.
Default views
The view buttons and their hotkeys will set a default view angle/rotation around the object center. After moving the sceene the center does not coincide with the object center. The object center can be attached to atoms (right mouse/contect menu)
Default pan
Ctrl+R will reset the pan and zoom such that the object basically fits into the viewport. This is not allways prefect, though.

Canvas size

The canvas or view has by default a fixed size. This comes in handy if several similar pictures have to be created. The canvas size can be set with a menu (Ctrl+V) or by unlocking the canvas by clicking the lock icon in the lower left corner of the window. Then window resizing will resize the canvas as well. One can lock the canvas at any size.

Right mouse click
On an atom you get a context menu.

Atom distances and angles

Menu: Tools \rightarrow Measure or hotkey M will open the measureing window.

Use the mouse to click on a visible part of an atom. The atom gets added to the list in the dock-window if it is not yet selected, otherwise it gets removed from the list. Atoms get added to the bottom of the list but can be removed arbitrarily. This will change the order of the remaining atoms and can be convenient.

Up to 3 atoms can be selected. If there are 3 atoms they form a sequence (1st, 2nd, 3rd). The distance between the 1st and the 2nd and the 2nd and the 3rd is shown in the dock-window, as well as the angle formed by the vectors (1st-2nd) and (3rd-2nd).

If M is pressed again the dock-window closes the measuring stops and the list gets reset.

If ESC is pressed the list is reset.

If the underlying data change (symmetry, boundary) the list gets reset.

Symmetry Dialog

Groups

The groups can be specified as space groups and points groups and layer groups, depending on the structure type (crystal, molecule and slab).

The point groups are specified internally via a suitable space group, being build on the desired point group. This also means that we do not have C_{\infty} and icosahedral groups. For these use proper subgroups.

If several settings are defined for a certain group it can be specified. While changing settings the lattice constants, axes angles and Wyckoff positions are not changed unless the Update check box is checked, in which case the data are adjusted such that the same structure results.

Additionally to the group settings a global rotation matrix can be specified, which rotates the whole structure. These rotations are active when the rotate check box is checked.

Wyckoff positions

For crystals the Wyckoff positions are relative coordinates according to the standard crystallographic conventions. For molecules the positions are given in absolute Cartesian coordinates.

Alt-W
to select the Wyckoff position table.
Cursor keys
Move around with the help of the cursor keys.
Editing
Start editing above any item by just typing.
F2
Starts editing with the old value selected. Use cursors, Del, Backspace

When not editing…

Ins/Ctrl-I
will insert a new row below the current.
Del/Ctrl-D
will delete the current row.
Ctrl+up/down
will move the selected row around

Once in editing mode use

Esc
to leave the editor without commiting changes!
Enter
to finish editing (on Mac that is restricted)
Ctrl+A
to select all
Ctrl+C
to copy the value
Ctrl+V
to paste previously copied values
Tab
to move to the next table item

In order to enter one complicated value in more then one position use these keys!

Symmetry determination

Note that all operations start from the primitive cell, even if the boundary shown is larger than that.

Also note, that the resulting space group might not be a unique solution. This happens if the resulting cell does not have the maximum possible translational symmetry (by user request: button conventional cell, flag reduce translation being off). For further information see here: Symmetries for non-minimal cell.

Conventional cell
Remove centering operations and return maximum symmetry of the non-centered cell.
Remove generators
Keep the current lattice parameters but remove all non translational group operations by setting the subgroup generators to \left\{E\right\}. This will make all sites inequivalent. The spacegroup number will stay the same (for the lattice cell) but its pointgroup operations are switched off. Use this to pick a few atoms and make them different (set different element or type). Use determine symmetry afterwards to get maximum symmetry.
Determine symmetry
The symmetry is calculated. The result is a spacegroup according to certain standard definitions. If the reduce translations box is checked the smallest possible unit cell is calculated. If it is not checked the cell can change in shape, but not in volume. When calculating the symmetry all atoms with the same type number (second column in the Wyckoff table) are considered to be potentially symmetry related. Hence to request two atoms to be definitely different Wyckoff positions the types have to differ. The easiest way is to change the element of the atom, since this will set the type to the elements nuclear charge. It also changes the color which makes it easier to evaluate the new cell. However, one can also just change the type.

After determining the full symmetry of a layer-derived bulk system (magnetism) the new c-axis might be different from the origin direction. On the other hand the restriction to operations, which are compatible with the q-vector, might be too tight if the resulting system is a bulk system.

The rotation matrix describes an active rotation of the unit cell which results from the symmetry settings. It is applied according to

A_{\mathrm{rot}}^{T}=RA_{\mathrm{def}}^{T}

where

A^{T}=\left(\vec{a}_{1}\vec{a}_{2}\vec{a}_{3}\right),\quad\vec{a}_{i}=\left(\begin{array}{c}
a_{ix}\\
a_{iy}\\
a_{iz}
\end{array}\right)

Hence R is the matrix which transforms a vector v like

\left(\begin{array}{c}
v_{x}^{\prime}\\
v_{y}^{\prime}\\
v_{z}^{\prime}
\end{array}\right)=R\left(\begin{array}{c}
v_{x}\\
v_{y}\\
v_{z}
\end{array}\right)

which makes the columns of R_{i} the new x,y,z-directions.

Helpfull feature: The table to enter the matrix accepts non-normalized columns. It is also possible to set a single column to zero, in which case this column will be set to be an orthogonal direction to the other two columns.

All operations of the manipulate panel will update the rotation matrix such that the orientation with respect to the global cartesian system stays unchanged. This is of course only visible if the rotation checkbox is checked. The rotation will always be updated but it only becomes active if checked.

The setting changer (update button changed) does not change the rotation, since this is the whole point about different settings.

The enlarge function
is used to produce a commensurate multiple of the cell.
Layered cell
is used to create a unit cell which has the first two lattice vectors perpendicular to the given axis. Check the rotate button to keep the cell orientation. If orthog. if possible is checked the cell will be larger to ensure an orthogonal c-axis (if possible).
Insert vacuum
is used to create a repeated or free standing slab from the current cell. For this the a and b-axis are considered fixed. The third axis will be enlarged to insert the vaccum. Use this together with Layered cell.
To Molecule
is used to convert the visible cell into a molecule. Use this to achieve more control when you prepare a structure picture.

Symmetries for non-minimal cell

Usually, the maximum symmetry is calculated. This involves finding the smallest possible translational unit. The user can however, request the symmetry with certain restrictions. Notably, the reduction of the translation group can be skipped. In this case we have a set of symmetry operations for the lattice which is the maximum point group allowed by the required translational group and by the sites and all the sub-cell translations which where forbidden to be reduced. This leads to a group which has a larger order than the point group of the required lattice. To find a space group which describes this lattice one has to fulfill a group multiplication table of the order of the target space group within a set of operations which is parametrized by all the sub translations from the non-reduced translation group. The result is a set of operations which depends on integer parameters. Now, one has to pick a set of parameters and it turns out that the resulting space groups may not be identical. The algorithm picks one of those choices. Hence, several consecutive invocations of the algorithm might yield different groups with the same order, but different number of Wyckoff positions!

To make matters worse, in certain symmetries the expected maximal subgroup does not exist. E.g. if we have a non symmorphic body centered tetragonal cell and want to determine the symmetry of the corresponding simple tetragonal lattice (with 2 times the number of atoms) and if the bct cell has a 4_{1} screw axis there is no simple tetragonal spacegroup with a 4_{1} axis. Hence, we cannot find a cell with this symmetry element. Consequently, the resulting group will be of lower order than expected. In practice, we apply an additional constraint: if there is a subgroup which contains the inversion we pick this subgroup in order to be able to use the parity algorithm for topological insulators. Note, that the use cases for this symmetry determination are usually quite rare.

Boundary Dialog

Items are only displayed if they (there origin) fall(s) within the boundary cell defined here. (Exceptions are atoms/bonds, which have a corresponding flag set.) The boundary is either the Wigner-Seitz cell (for Fermi surfaces), a simple box spanned by three directions or a polyhedron defined by faces.

A box is defined by three vectors V_{i}, i\in\left[1,3\right] and three factors d_{i}. These vectors are expressed in terms of either the primitive, conventional or cartesian basis vectors and span a lattice. The faces of the box are lattice planes of this lattice defined by r\cdot G_{i}=d_{i}: G_{i} are the reciprocal vectors of V_{i}: G_{i}V_{j}=\delta_{ij}. The cell’s diagonal goes from \left(0,0,0\right) to \sum V_{i}d_{i}.

If the center around origin checkbox is checked, the cell’s center is at (0,0,0). Additionally an origin shift vector s can be defined. The shift vector defines an active shift of the boundary box by the amount specified, which again can be given in different basis systems. The basis system Box means that the shift is given in terms of the boxes dimensions, e.g. \left(\frac{1}{2}\frac{1}{2}\frac{1}{2}\right) would be the vector from the box’s corner to it’s center.

In case of a slab geometry, the underlying z-direction/”third lattice vector” is \left(0,0,1\right) so that e.g. V_{3}=\left(102\right) in conventional basis gives the vector a_{1}+2e_{z}. For conventional/primitive basis the factors d_{3,0}=0 and d_{3,1}=1 represent two lattice planes at the atoms with smallest and largest z-component respectively, such that the default box encloses all atoms in z-direction. For cartesian basis, all factors are in cartesian basis. The z-component of the origin follows the same logic. Conventional/Primitive: map s_{z}=\left(z_{\mathrm{max}}-z_{\mathrm{min}}\right)z , Cartesian: s_{z} is cartesian (absolute).

The option faces/User defined describes a cell formed by a polyhedron, which is spanned by all points lying inside of a set of planes defined via \boldsymbol{r}\cdot\boldsymbol{R}=\left|\boldsymbol{R}\right|^{2}d. The vector \boldsymbol{R} is expressed in a certain basis \boldsymbol{b}_{i} (see Reference basis combobox in the dialog): \boldsymbol{R}=n_{i}\boldsymbol{b}_{i}. Hence, what we really give as input are the three numbers n_{i}. Now , if we want to scale n we need to do understand this:

\begin{eqnarray}
\boldsymbol{r}\cdot\boldsymbol{R} & = &
\left|\boldsymbol{R}\right|^{2}d\\
\boldsymbol{r}\cdot\left(n_{i}\boldsymbol{b}_{i}\right)&=&\left|n_{i}\boldsymbol{b}_{i}\right|^{2}d\\
\boldsymbol{r}\cdot\left(\lambda
n_{i}\boldsymbol{b}_{i}\right)&=&\lambda\left|n_{i}\boldsymbol{b}_{i}\right|^{2}d\\
\boldsymbol{r}\cdot\left(\lambda
n_{i}\boldsymbol{b}_{i}\right)&=&\left|\lambda
n_{i}\boldsymbol{b}_{i}\right|^{2}\frac{d}{\lambda}
\end{eqnarray}

Scaling works like: n_{i}\to\lambda n_{i}, d\to\frac{d}{\lambda}.

Example: n=\left(110\right), d=1 gives a plane which is perpendicular to the \left(110\right)-direction in the choosen basis. For an orthogonal basis this would be the a plane going through the point \boldsymbol{b}_{1}+\boldsymbol{b}_{2}.

The Load button initializes the faces with certain settings depending on the currently chosen basis. Hence, a change of basis requires a repeated load in order to obtain the same physical cell.

In case of a slab geometry, and faces, d=0 or d=1 in the z-direction refer to a plane through the lowest or highest lying atom respectively.

The save current button can be used to save the current faces. They can be reloaded via the corresponding option under the load button.

When being in a line-edit

Ctrl+A
select all
Ctrl+C
copy selection
Tab
jump to next line-edit
Ctrl+V
paste selection

When being in a table

F2
starts editing
Any key
start editing

Real numbers can be rationals: one can enter 3/8 instead of 0.375.

Bond Dialog

Hotkeys:

Ctrl+1Ctrl+4
Expand the bond tree view to the according level.

In the Bonds/Poly tree view

Right/Left
Expand/collapse the current item
Space
(un)check the current item, or open the Bond-Poly dialog.
Any edit key
when on a root item open the Bond-Poly dialog.
double click
when on root item open the Bond-Poly dialog, on other items expand/collapse the item.
Enter
commit the data and update the scene
Ctrl-A
select allover
(Ctrl/Shift) click
change current selection (only the root items selection actually matters)

In the BondGroups table view

Cursor keys
move around
Ins/Ctrl-I
will insert a new row below the current.
Del/Ctrl-D
will delete the current row.
Ctrl-Up/Ctrl-Down
move column
Space
on checkbox: toggle, on color button: open color dialog, on Name column: start editing
Any key/F2
on name column: start editing

When clicking on an atom in the 3D view, the corresponding atom gets selected in the current BondGroup table in an open Bond Dialog. If you have multiple groups in the table check the other groups if you search for the settings of that atom. If more than one root-item is selected in the Bonds/Poly tree view and the Bond-Poly dialog is open clicking on an atom in the 3D view selects the properties of this atom unless the atom is not in the current selection. This allows to transfer the settings of one atom to all the atoms in the selection.

Bond-Poly Dialog

Here you define which atoms (bonds) are depicted. You also define polyhedra for the corresponding Wyckoff position.

The first thing is the Atom/Bond visibility, which has four possible settings:

In Boundary
Show only atoms in the boundary as specified in the boundary dialog.
Add Missing
Show atoms outside the boundary in order to complete all bonds of all atoms of this type, which are inside the boundary
Delete Incomplete
Delete atoms for which some of the bonds point outside the boundary. The atoms are not deleted if they are needed to fulfill the In Boundary option for another atom.
Delete Loners
Delete atoms, which have only bonds, which point outside the boundary.

Note, that in the case of multiple bondgroups the bond definitions of the later bond group supercede those from earlier groups. Also note that a bond has two ends and that both ends can have different Atom/Bond visibility.

If Apply is pressed the hole Bond Dialog gets commited and the scene updated. If Close is pressed the data are committed to the Bond Dialog but not to the application. Cancel (Escape) closes the Dialog. When the dialog is open you also can click at atoms in the scene to load the data of another atom. This discards all previously made non-commited changes to this dialog.

Find atoms Dialog

todo

Fermi energy and bands

Here we select the bands, which have to be plotted.

Brillouin zones: High symmetry points

Interface

There are two modes of special symmetry points treatment, the automatic one, which adapts to the current lattice type and parameters and the user defined, which cannot adapt in all lattices, since some lower symmetry lattices have points whose coordinates depend on the lattice paramters irrespective of the choice of coordinate basis. The default is automatic. If the user clicks on the pick button and the mode is automatic a warning will be issued. Only user defined points can be manipulated (label moving and point picking).

_images/spspmenu.png
_images/spsptoolbar.png

Special symmetry point controls.

When picking points is active some green dots appear, which can be clicked on. The corresponding point is inserted into the table in the dialog. Usually insertion happens at the end. But if a row in the point table is selected the point is inserted after this. Use the up/down buttons (Ctrl-Up/Ctrl-Down) to move points around in the table. The names of the green dots are suggestions. There are cases when the nameing depends on the actual relation of point to some axis. In these cases the names have different names then their translationally equivalent point, which is why they are sugguestions. Also the subscripts make only sense with respect to the default path. If another path is chosen by picking, it might be reasonable to delete the subscripts or add some or rename the points altogether. E.g. in fcc the K-point is related to similar points via translations (and inversion and fourfold rotations). The same holds for the U-point. However if we apply the threefold rotation K and U become the same point class. In other words if we look at the fcc lattice from the z-axis, K and U interchange if translations are considered as equivalences. In this case we decided to discard translational equivalence and use rotational equivalence instead, when labels of non standard points are assigned (green dot labels). If a non standard cell is used to pick labels, K and U might be mixed up.

When moving labels is activated, the user can click with the mouse pointer on a label and move it.

When picking or moving is activated and the main window is the current window, the escape key will terminate picking/moving.So does closing the special points dialog.

The dialog allows to select the high symmetry points. You can set the point names, colors, font size and label depth. You can also pick points in the scene. Note, that all boundary cells shown in the scene will provide pickable points. Beside points, you can insert jumps, which allows to backfold a path, which goes straight through more than one first BZ into the first BZ. A jump will consist usually of three point. Let’s say there is a path \Gamma{}XS, which forms a straight line, where \Gamma{}X is in the first BZ and XS in the adjacent BZ. There is an equivalent line segment X^{\prime}S in the first BZ, with another X point, which is equivalent to the first X point. The path now reads \Gamma{}X\left\langle\mbox{Jump}\right\rangle{}X^{\prime}S. In the bandplot this is translated into \Gamma{}XS. In other words the segment XX^{\prime} is cut out and the band structure will look as if you go through the two BZ. This is most usefull for showing all high symmetry points in a single first BZ picture.

The break option under the plus button-menu inserts break point, at which a new path segment starts. Currently, in bandplot the segments are glued together where the two labels of the endpoint of the first segment and the starting point of the second segment are combined to somehting like “X | K”. This glueing produces discontinuities in the bands, if the points before and after the break-point are not equivalent.

If there are equivalent points they are named according to their translation, or rotation. Some points are subscripted following arXiv:1004.2974v1 even if they are translational equivalent.

The reference basis in which the point coordinates are given are:

basis \boldsymbol{k} in absolute coordinates as function of input k_{i}
Cartesian (units 2pi) 2\pi\left(k_{x},k_{y},k_{z}\right)
Cartesian \left(k_{x},k_{y},k_{z}\right)
FPLO (untis \frac{2\pi}{a}) \frac{2\pi}{a}\left(k_{x},k_{y},k_{z}\right)
Conventional \left(k_{x},k_{y},k_{z}\right)^{T}G_{c}
Primitive \left(k_{x},k_{y},k_{z}\right)^{T}G_{p}

Simple Orthorhombic Lattices

We do not enforce the order of the lattice constants with respect to length. Instead the points are named according to their relation with respect to the three axes.

Facecentered/Bodycentered Orthorhombic Lattices

We adopt the scheme that the conventional axes are sorted internally to obtain a\leq b\leq c before determining the special symmetry points. This is done in a way that one always gets the same picture (except for axes) if changes the setting while having the rotate and update check box checked (symmetry menu, empty lattice mode). What is meant by this is that two lattices which are only differing by the setting but otherwise are identical have the BZ and high symmetry points. This leads to three different possible kinds of BZs for the facecentered lattice. The points are named according to this order, which means that e.g. the Z-point will lie on the shortest reciprocal axis, which ever this is. The default path will jump in space if a critical point of the parameter is crossed.

Base Centered Orthorhombic Lattices

We adpot internally sorting of the conventional axes such that the axis opposing the centered plane is c and that the remaining two axis fulfill a\leq b. This means that similar looking BZ shapes have the same special points irregardless of the actual orientation of the cell. E.g. the Z-point is the center of the “hexagonal” lid. The default path will jump in space if the critical point a=b is crossed. The setting which looks like the pictures in the above mentioned arxiv paper if the lattice is by itself reduced is “axis -a cell 1”.

Simple Monoclinic Lattices

For discussion we assume that the c-axis is the monoclinic axis and we focus on the reciprocal lattice. A simple monoclinic lattice can always be transformed into one, which has the shortest possible a^{*}, b^{*} reciprocal lattice constants (for the two axis perpendicular to the monoclinic axis) and a monoclinic angle \geq90^{\circ}. At the same time the angle between \boldsymbol{a}^{*} and -\boldsymbol{a}^{*}-\boldsymbol{b}^{*} and between \boldsymbol{a}^{*} and -\boldsymbol{a}^{*}-\boldsymbol{b}^{*} can be made non-accute \geq90^{\circ}. This is a Delaunay reduced lattice. If we furtermore require a^{*}\geq b^{*} we arrive at a unique lattice basis. Note, that the corresponding direct space lattice is not at the same time Delaunay reduced. To achieve this one has to flip the monoclinic axis \boldsymbol{c} and one of the other two (\boldsymbol{c}\to-\boldsymbol{c}, \dots). This uniquely defined lattice basis is used for the assignment of special points and their names. This means that the special points will jump around if a critical value of the lattice constants is crossed. In fact there are infinitely many such critical values for the lattice parameters. It is however most natural to use the reduced basis for point nameing. Cases with other monoclinic axis are obtained by cyclic permutation of the axis. The names (like X and Y) have the usual meaning for instance in the following setting

_images/smspsp.png

Simple monoclinic setting where the names are intuitive.

If you now check the Update button and the rotate button and change the setting to another monoclinic axis, the same BZ and naming is obtained only with permutated axis (and rotated in space if the rotate button is not clocked, since our c-axis is always in the z-direction [not the reciprocal c^{*}-axis!]).

Centered Monoclinic Lattices

For base centered monoclinic lattices a similar condition as for the simple monoclinic lattice can be applied to reduce the lattice to a unique standard. Point nameing is based on that. There are in total 5 cases of different BZs in this lattice. The default path jumps around when parameters cross critical points. Otherwise we follow the setting condition explained for face-centered orthorhombic lattices.

Triclinic Lattices

We use reduction to Type I/Type II lattices (Delaunay reduction) to determine which of two distinct cases we have. In Type I we have to employ a simple case decision which decides where the N point lies. Then the points (all face mid points) are named according to their relation to the reduced axis. Again it means that the labels jump if critical parameter values are crossed. Consider the naming a suggestions. At least we have a predefined set of points now.

Mesh Dialog

The Fermi surface mesh is created such that it adapts best to the symmetry of the lattice. To achieve that an automatic mesh subdivision is empoyed. Only a mesh subdivision parameter is needed. This is usually the subdivision along the x-axis or first lattice direction. In order to reduce the calculation time for the band structure code, point group symmetry is used, If the checkbox for the irreducible part is checked. The subdivision is done such that the resulting micro-cubes and tetrahedra are as isotropic as possible. For slabs that would be a waste. Therefore, one can overwrite individual subdivisions from the automatic determination. In the slab case that will be the z-direction,where we need only 1 subdivision. If the manual subdivision line-edits stay empty, the automatic value is used. Beware, that depending on symmetry restriction for possible values apply. For instance, in tetragonal lattices the x and y values must be equal.

Fat band editor

FPLO can export band weights in the files +bweights... This has limitations. FPLO can also export the complex coefficient matrix in +coeff when requested via a switch in the FEDIT bandstructure submenu. This file can be used to create custom tailored band weights by selecting certain molecular/atomic orbital projectors, which define the band weights. The resulting data are written to a file with a user specified file name, which then can be plotted in the usual way (xfbp).

Another option is to not create the +coeff file and to put the file =.bwdef (or whatever name you gave when saving the content of the fat band editor) into the fedit bandplot menu. Then fplo will create bandweights according to the definitions contained in this file and ignores the other settings in the bandplot menu.

If the DOS is required by the standard options (bandplot on and option NO_DOS not set) additional files +bdos... are created containing the LDOS corresponding to the patterns defined in this dialog.

To edit molecular band weights there is a helpful feature: if a structure view of the corresponding =.in-file is open, the atoms and absolute positions of a molecular orbital projector can be selected from the structure view via mouse click, see Band Weight Contrib Dialog.

Warning

If you define let’s say a molecular pattern consisting of two p_{z}-orbitals sitting at two sites, you have to define the relative phases (factor in the contrib dialog) in order to get bonding/anti-bonding orbitals. If you draw a little sketch it is clear that the equal phase pattern (1,1) must be the anti-bonding state. However, if the two radial functions belong to different main quantum numbers the radial functions can have inverted signs, since the sign of the radial part is defined by the behavior close to the nucleus and the additional nodes change the sign in the valence region. Hence, then the anti-phase (1,-1) gives the antibonding pattern!!!

Hotkeys in weight-tree-view:

F2/Enter/Space/Double-Click
open editor
DEL
delete item
Ctrl-Up/Ctrl-Down
move item

Band Weight Contrib Dialog

Edit the contribution of a single atom to the band weight definitions. If it is a molecular orbital only the name can be edited. Otherwise more information needs to be defined. If it is a single atom weight definition, the position is determined automatically. If it is a contrib to a molecular pattern, the absolute position has to be given. In order to facilitate this you can use the getAtom or getPosition buttons. In order for this to work a structure view of the corresponding compound has to be open. Note, that there is no cross check weither the structure belongs to the current data or not. If a valid +coeff exists site and orbital information is taken from this file and put into comboboxes. If the orbital information is absent, autocompletion in the orbital-lineedit is provided.

Valid orbitals can be all, allnlm, 3d,``3d-1``, 3d3/2 (relativistic) and 3d5/2/-1/2 (relativistic) if it is a single atom definition. If it is a contrib to a pattern only fully qualified orbitals (nlm or nlj\mu) are valid. The local axis are checked for orthogonality. If they are not orthogonal it will be adjusted. If they are coplanar an error is issued.

Important: In relativistic mode pseudo non-relativistic symmetries (nl and nlm) can be used. In this case the underlying colinear approximation of the full relativistic FPLO implementation requires that the resulting spin axis points along the quantization axis of the exchange field. That means that although this tool allows to select the local quantization axis for harmonics of the pseudo non relativistic orbitals, the spin projection always follows the field axis. Keep this in mind when interpreting the ”spin-up” and ”spin-down” LDOS/weights. Furtermore, beware that the pseudo non-relativistic projections are approximate!

The all orbital descriptor produces nlj\mu weights and allnlm produces nlm\sigma weights in full relativistic mode.

Unfold Editor

Here the unfolding information is edited. The right side is a text editor, in which the content can be freely edited. One can load and save the file.

The unfolding is explained in detail in FPLO../DOC/MANUAL/unfolddoc.pdf. The information here specifies, which super cell sites are considered translationally equivalent with respect to normal cell translations. The list contains lines. Each line contains an identifier, which best is chosen to be the site number in the normal cell, which is considered a representative of the translationally eqivalent super cell sites, followed by a list of all super cell sites, which are equivalent. The list of equivalent sites can by incomplete, which leads to partial unfolding.

Additionally, there is a possibility to define the relation between the normal and super cell by defining the transformation matrix from one to the other. If the combobox ”large cell in small cell units is choosen” the matrix should be integer. In the other case the matrix usually is rational. The ”change on units” checkbox influences the matrix on changing the combobox setting. Either the matrix is transformed/inverted such that the new matrix and the new combo setting define the same cell relation. Or the matrix is left alone, when the combo setting is changed. The tolerance determines if super cell atoms, which are slightly displaced from their ideal normal cell position are considered translational equivalent with respect to the translation vectors given by the matrix. The Apply button calculates the site lists according to the matrix and tolerance settings.

Note: that different elements can be considered as being translationally equivalent as long as their basis is equivalent. e.g. Fe and Ni. The automatic creation explaine in the last paragraph does not know about the basis and hence puts different elements into different unfolding definitions. If you know what you are doing you can reshuffle the unfolding definitions by hand. FPLO will abort with an error, if unfolding of different elements in the same site list is impossible.

Annotations

There are several kinds of objects, which can be shown in the scene.

Axes

Main axes sit at the origin of the first unit cell (by default), while frames site at a fixed screen position given in relative screen coordinates.

Display cells

Display cells are polygonal cells. The first (Main boundary) is special in that it defines the clipping volume for atoms and Fremi surfaces. The second and the third are the conventional and primitive cell respectively. The user can add more cells, which then have to be edited accordingly. The dialog does not allow to edit the conventional and primitive cell.

The main boundary is edited in the boundary dialog. That is so to emphasize it’s special purpose.

The visual properties can be set. The visibility can be toggled (not the special hotkeys for the first three cells.)

The add (CTRL+I, Ins)and delete (CTRL+D, del) buttons are active when in the focus is in the cells-section of the Annotations list view.

Fog Dialog

Fog can be added to the sceene. For perspective view linear fog is best. The other fogs can make the scene to appear totally white. The color is probably best set to white.

The fog is determined by parameter

Exponential/Gaussian
The clearness decays with an exponential or gaussian of decay rate density. In perspective view smaller densities are needed to avoid complete fogging.
Linear
The scene is clear at near and becomes foggier up to far, where the fog has the full fog color. far can be larger than one, which means that the fog will not reach maximum saturation at the object being furthest away. The closest object is at 0 and the furthest away one at 1;

Atom properties

Atoms can have colors and radii. The Tab Themes allows to define different themes, containing default properties for each element. The button Reset to app default resets the whole table of the current theme to some standard values. The Accept/Close buttons save the changes and make the current theme the default for all actions, which require atom properties, like adding Wyckoff positions to the Symmetry Dialog, or opening FPLO input files like =.in (which do not contain color/radius information). The button Save and Apply saves the settings and applies the current theme to the current Wyckoff positions and sites. Note, that the current (all) theme(s) is remembered persistently in the file $HOME/.xfplo/atomprops.ini.

In the symmetry menu the color/radii for each Wyckoff position can be Set individually. Additionally, there is the set Default button, which can be used to set the color/radii of all Wyckoff positions to the current theme’s values. If the file =.in is loaded the current theme (combobox theme) is used to define the atom properties. The properties are saved if the file =.xstr is saved. So, there are two sets of values. 1: in =.xstr 2: in the themes. The =.xstr settings supersede the theme settings on loading, unles new atoms are created.

Editing: in the table there is the radius type. To edit it, either type F2 or simply the letters (cimvc). The radius field is updated and can be edited. All radii are remembered, such that one can easily switch them. Radii are given in Angstroem. Note, that the displayed atom radii are half of the actiual radii. The ”Bond Dialog” contains a scale factor, which scales all atoms uniformly.

Specular color: the spot light color combines with the specular color of an objetc to create a highlighted spot.

Shine: the smaller the shine value the more diffuse the spot will be. Maximum value is 128. Imagine a metallic pollished object, in this case the spot will be very focused, while for a more diffuse surface the spot is smeared. This is why shininess produces a smaller spot for larger values.

Printing

Currently, printing is possible to jpg and bmp files only. The scene is printed by piecing together several enlarged shots of parts of the total scene. In this way you get a higher pixel density than depicted on screen. E.g. a magnification factor of 4 will glue together 16 pieces, resulting in a 4 times higher pixel density then on screen. Together with Antialiasing this gives high quality pictures.

_images/printing.png

While printing it may happen that the intermediate enlarged shots are displayed on screen. This is ugly but not a bug.

Printing can be interrupted using the stop button close to the progress bar in the status bar.

Preferences

Graphics

Resolution

Each display has different graphic capabilities. This might effect performance, especially while moving the scene. Several options are implemented to ease the pain.

Low resolution
Atoms and bonds can be drawn with less polygonal resolution.
Wireframe
Some graphics are faster with wireframes.
No antialiasing
Anitaliasing, when allowed, will remove some of the pixelation effects. It is however more expensive. With a jitter of 4, for example, the scene is drawn 4 times at every redraw request (moving). You can switch it of during moving. See Antialiasing for more control.
Inaccurate transparency
Transparency requires sorting of the polygons, which is slow. With inaccurate transparency this sorting is switched off while moving with the mouse.

Antialiasing

Anitaliasing removes the pixalation effects by jittering the scene, which basically redraws the scene by superposing several single paints with sub-pixel offsets.

Jitter
gives the number of redraws.
For printing only
uses antialiasing only when printing the scene and not on the display. This gives faster graphics on screen. You can find a compromise using the resolution option No antialiasing.

External

For some tools external editing is possible. Give the editor and check the run in terminal box, if needed (e.g. for vi).

Additionally the terminal program can be specified. Default is xterm. You could e.g. use konsole (KDE). The working directory is set implicitly (at least we try).

There is the option to set command line options to the terminal program and editor. Some placeholders can be used

%f absolute file path (directory/filename)

%d directory

%fn relative filename (no directory)

Depending on the user input, xfplo` will run the following commands. Note, that no ``%f is added to the editor if the user-defined editor contains %f. Similarily, if the user-defined terminal contains %d no working-directory options are added by xfplo. On the other hand if %d is missing xfplo adds --workdir %d if the terminal is konsole.

Editor Terminal run in terminal xfplo runs what happens
emacs     emacs %f a new emacs gets startet with the file which needs to be edited
emacs %f     emacs %f
emacsclient -n     emacsclient -n %f the file is send to an open emacs
emacsclient -n %f     emacsclient -n %f
vi xterm X xterm -e vi %f a terminal will open with an open vi
vi %f xterm X xterm -e vi %f
vi konsole X konsole –workdir %d -e vi %f
  konsole -some_option %d   konsole -some_option %d konsole is opened with the current working directory

OpenGL

On modern hardware, things should be standardized by now. However, …

The OpenGL settings found here, were at least one times critical on some older platform:

Vertex arrays
Vertex arrays are unlimited per OpenGL definition. Some platforms, however have limits, which on top of all this are not queryable. Hence, the only way out is to not use vertex arrays on such platforms (mostly old graphics cards or software emulators). You will find this out, if the Fermi surface is not ploted completely, when using more \boldsymbol{k}-points.

Manage executables

The fplo executables are selected by looking for filenames containing fplo in paths defined by environment variables (such as $PATH) or in selected directories or explicitly specified files. This dialog allows to compile a list of such search patterns.

The actual list of executables returned by the search algorithm in the run dialog puts the executables, matching the version of the current =.in file the best, at the top of the list. If there has been a previous run, the program remembers the executable used for this =.in and selects it. Otherwise the best match is selected.