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.
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 |
Action | Key |
---|---|
Show boundary popup | b |
toggle main boundary | b-b |
toggle conentional | b-c |
toggle primitive | b-p |
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 | … |
Action | Key |
---|---|
Picking | p |
Pick points | p-p |
Pick lines | p-l |
Pick planes | p-a |
Pick general points | p-g |
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 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 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
. 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
where
Hence is the matrix which transforms a vector
like
which makes the columns of the new
-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 screw axis there is no simple
tetragonal spacegroup with a
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 ,
and
three factors
. 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
:
are the reciprocal vectors of
:
. The cell’s diagonal goes from
to
.
If the center around origin
checkbox is checked, the cell’s center is
at . Additionally an origin shift vector
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. would
be the vector from the box’s corner to it’s center.
In case of a slab geometry, the underlying
-direction/”third lattice vector” is
so
that e.g.
in conventional basis gives the
vector
. For conventional/primitive basis the factors
and
represent two lattice planes at the atoms
with smallest and largest
-component respectively, such that the
default box encloses all atoms in
-direction. For cartesian basis,
all factors are in cartesian basis. The
-component of the origin
follows the same logic. Conventional/Primitive: map
, Cartesian:
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
.
The vector
is expressed in a certain basis
(see
Reference basis
combobox in the dialog):
. Hence, what we really give as
input are the three numbers
. Now , if we want to scale
we need
to do understand this:
Scaling works like: ,
.
Example: ,
gives a plane which
is perpendicular to the
-direction in the choosen
basis. For an orthogonal basis this would be the a plane going through
the point
.
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, or
in the
-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+1
…Ctrl+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).
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 -point is related to
similar points via translations (and inversion and fourfold
rotations). The same holds for the
-point. However if we
apply the threefold rotation
and
become the same
point class. In other words if we look at the fcc lattice from the
-axis,
and
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,
and
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 , which forms a
straight line, where
is in the first BZ and
in the adjacent BZ. There is an equivalent line segment
in the first BZ, with another
point,
which is equivalent to the first
point. The path now reads
. In
the bandplot this is translated into
. In other words the
segment
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 | ![]() ![]() |
---|---|
Cartesian (units 2pi) | ![]() |
Cartesian | ![]() |
FPLO (untis ![]() |
![]() |
Conventional | ![]() |
Primitive | ![]() |
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 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 and that the remaining two axis
fulfill
. This means that similar looking BZ shapes have the
same special points irregardless of the actual orientation of the
cell. E.g. the
-point is the center of the “hexagonal” lid. The
default path will jump in space if the critical point
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 -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
,
reciprocal lattice constants
(for the two axis perpendicular to the monoclinic axis) and a
monoclinic angle
. At the same time the angle
between
and
and between
and
can be made non-accute
. This is a Delaunay reduced lattice. If we
furtermore require
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
and one of the other two
(
,
). 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
and
) have
the usual meaning for instance in the following setting
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 -axis is always in the
-direction
[not the reciprocal
-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 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
-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
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
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 ( or
) 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
( and
) 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 weights and
allnlm
produces 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 tofar
, 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.
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
-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.