Spirit Qt desktop UI
====================

The cross-platform QT desktop user interface provides a productive tool for Spin simulations,
providing powerful real-time visualisations and access to simulation parameters,
as well as other very useful features.
See the build instructions for [Unix/OSX](Build_Unix_OSX.md) and [Windows](Build_Windows.md)
for information on how to build the graphical user interface on your machine.
Physics features
----------------
Insert Configurations:
- White noise
- (Anti-) Skyrmions
- Domains
- Spin Spirals
You can manipulate the Hamiltonian as well as simulation parameters and your
output file configuration.
You can start and stop simulation and directly interact with a running simulation.
- LLG Simulation: Dynamics and Minimization
- GNEB: create transitions and calculate minimum energy paths
By copying and inserting spin systems and manipulating them you may create
arbitrary transitions between different spin states to use them in GNEB calculations.
Furthermore you can choose different images to be climbing or falling images during
your calculation.
Real-time visualisation
-----------------------
This feature is most powerful for 3D systems but shows great use for the analysis
of dynamical processes and understanding what is happening in your system during
a simulation instead of post-processing your data.
- Arrows, Surface (2D/3D), Isosurfaces
- Spins or eff. field
- Every n'th arrow
- Spin sphere
- Directional & position filters
- Various colourmaps
You can also create quite complicate visualisations by combining these different features
in order to visualise complex states in 3D systems:

Additional features
-------------------
- Drag mode: drag, copy, insert, change radius
- Screenshot
- Read configuration or chain
- Save configuration or chain
- Take a screenshot
How to perform an energy minimisation
--------------------------------------------
The most straightforward way of minimising the energy of a
spin configuration is to use the LLG method and the velocity
projection (VP) solver:

By pressing "start" or the space bar, the calculation is started.
How to perform an LLG dynamics calculation
--------------------------------------------
To perform a dynamics simulation, use for example the Depondt
solver. In this case, parameters such as temperature or spin
current will have an effect and the passed time has physical
meaning:

How to perform a GNEB calculation
--------------------------------------------
Select the GNEB method and the VP solver.
In order to perform a geodesic nudged elastic band (GNEB)
calculation, you need to first create a chain of spin systems,
in this context called "images".
You can set the chain length directly in the field nex to the start/stop button.
You can also manipulate the chain by copying the current image using `ctrl+c`
(on mac replace `ctrl` with `cmd`) and then `ctrl+rightarrow`/`ctrl+leftarrow`
to insert the copy into the chain and `ctrl+v` to overwrite the current image.
See the help menu for all keybindings.
The GUI will show the length of the chain:

You can use the buttons or the right and left arrow keys to
switch between images.
A data plot is available to visualise your chain of spin systems.
The interpolated energies become available when you run a GNEB
calculation.

Key bindings
------------
Note that some of the keybindings may only work correctly on US keyboard layout.
### UI Controls
| Effect | Keystroke |
| ----------------------------------------------------------------- | :--------------------------------------------------: |
| Show this | F1 |
| Toggle Settings | F2 |
| Toggle Plots | F3 |
| Toggle Debug | F4 |
| Toggle \"Dragging\" mode | F5 |
| Toggle large visualization | F10 / Ctrl+F |
| Toggle full-screen window | F11 / Ctrl+Shift+F |
| Screenshot of Visualization region | F12 / Home |
| Toggle OpenGL Visualization | Ctrl+Shift+V |
| Try to return focus to main UI | Esc |
### Camera Controls
| Effect | Keystroke |
| --------------------------------------- | :---------------------------------------------------------------------------------------------------------: |
| Rotate the camera around | Left mouse / W A S D ( Shift to go slow) |
| Move the camera around | Left mouse / T F G H ( Shift to go slow) |
| Zoom in on focus point | Scroll mouse ( Shift to go slow) |
| Set the camera in X, Y or Z direction | X Y Z ( shift to invert) |
### Control Simulations
| Effect | Keystroke |
| -------------------------------------- | :---------------------------------: |
| Play/Pause | Space |
| Cycle Method | Ctrl+M |
| Cycle Solver | Ctrl+S |
### Manipulate the current image
| Effect | Keystroke |
| -------------------------------------- | :---------------------------------: |
| Random configuration | Ctrl+R |
| Add tempered noise | Ctrl+N |
| Insert last used configuration | Enter |
### Manipulate the chain of images
| Effect | Keystroke |
| ------------------------------------------------ | :-----------------------------------------: |
| Switch between images and chains | ← ↑ → ↓ |
| Cut image | Ctrl+X |
| Copy image | Ctrl+C |
| Paste image at current index | Ctrl+V |
| Insert left/right of current index | Ctrl+← / → |
| Delete image | Del |
---
[Home](Readme.md)