Spirit

Latest version: v2.2.0

Safety actively analyzes 638845 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 3 of 4

1.8.0

Refactored Geometry
========================
- `Geometry` is now more generic
- Supports different pre-defined bravais lattice types, such as `SC`, `BCC` or `Hex2D`
- `Geometry` now determines it's own type if bravais vectors are entered instead of lattice type


Input File Changes
========================
See the [docs](http://spirit-docs.readthedocs.io/en/latest/core/docs/INPUT.html):
- New geometry keywords: either `bravais_lattice` or `bravais_vectors`, `n_basis_cells`
- Added temperature gradient: `llg_temperature_gradient_direction` and `llg_temperature_gradient_inclination`
- Added optional output of spin positions: `save_positions_initial` and `save_positions_final`


IO Improvements
========================
- Added OVF file format support
- More API functions for data IO
- Unit tests


Improved Exception Handling
========================
- Exceptions now cause a backtrace through the source code to be logged, which allows mistakes to be found more easily (be it the user's fault or a bug)
- Added exception handling with corresponding backtrace to cuda errors
- Error messages are now printed red, Warnings yellow
- More exceptions are properly caught and processed with graceful termination instead of full-on crashing the code


UI-QT
========================
- Camera fields now automatically update when camera is changed and made save/load behaviour reasonable
- Improved default values for first startup of application
- Fixed bugs with updates of renderers (were sometimes updated too often, sometimes not enough)
- Improved statusbar formatting and introduced monospace fonts
- Added "info" widgets, which can be toggled with `i`
- Updated VFRendering to 0.11.0


Other
========================
- Screenshots are now saved as `.png` instead of `.bmp`
- Fixed critical bug in spatial gradient calculation
- Added temperature gradient feature (input, API and QT GUI)
- Added CUDA and OpenMP builds to Travis-CI
- Added pinning and defects builds to CIs
- Added Coverage checks to CMake and correspondingly to Travis-CI
- Bugfixes in Heisenberg Hamiltonians
- Bugfix in Neighbours calculation for nontrivial basis
- Improved usage of physical constants
- CMake: improved compile flags and set default build type to `Release`
- Finished "quiet" mode

1.7.0

Refactored Method/Solver
========================

The `Optimizer` class has been removed in favour of a more generic `Method`, from which now `Method_Solver` and `Method_MC` are derived.
`Method_LLG` and `Method_GNEB` are now derived from `Method_Solver` and therefore make use of it's abstract iteration scheme (e.g. termination on convergence of the force).

`Method_Solver`
-------------------

This new abstract class unifies the previous `Method` and `Optimizer` classes and is templated:
C++
template<Solver solver>
class Method_Solver : public Method

which allows for the abstraction from the actual Solver. The velocity projection (VP), semi-implicit b (SIB), Heun and Depondt solvers are implemented in their own header files for readability.
They now use the same force calculation function, so that the solver is now really independent of the applied method.

An added benefit is that the force naturally does not converge as long as a spin current or temperature keeps the system from reaching an equilibrium position.

The Solvers are tested in terms of Lamor precession, damping and convergence of a test problem, ensuring their equivalence and correctness.

`Method_MC`
----------------

This class is an initial implementation of metropolis monte carlo with an adaptive cone algotrithm. Due to the structure of the energy and gradient calculations it was not possible so far to make this method efficient and it has only been added as a proof of concept.


Pythonified the python bindings
========================

The API has been made safer and should now catch more errors and provide better info when a crash occurs.

The python package build is now tested in CIs and python packages are automatically uploaded to [PyPI](https://pypi.org/project/spirit) and [TestPyPI](https://test.pypi.org/project/spirit)

*Note*: `spirit.parameters_llg` etc. are now re-packaged as `spirit.parameters.llg` etc.

Other
========================
- fixed and improved OpenMP backend
- added remaining GNEB backend functions
- added gradient method for spin currents
- added test functionality for runtime-variable geometry (using this may currently fail, but it works for post-processing)
- added unit tests for finite difference functions in `Hamiltonian`s
- tidied up `Utilities` and moved `IO` functionality to it's own folder
- using *fmtlib* instead of manual formatting of strings
- merged `ui-console` and `ui-qt` into a single `ui-cpp`
- ui-cpp: can now read multiple images at a time, similar to a chain

Some bugfixes, some improvements...

1.6.2

Performance improvements
- ~1.5x speedup of LLG
- Optional OpenMP acceleration of C++ backend
- More FPS & better stability on systems without a graphics card
- Reduced CPU drain of OpenGL visualisation when the image doesn't need a redraw

Atom Types
- a few changes to input...

More Optimizers
- Added Depondt Solver
- Improved Nonlinear Conjugate Gradients, few parts remain missing

A few bugfixes

1.6.1

Bugfixes
----------
- minor (likely irrelevant) fix in `Optimizer_VP`
- fixed a crash that could appear in PlotWidget
- fixed reading chains from file

Pinning
---------
- `pin_na`, `pin_nb`, `pin_nc` to pin a number of cell rows on both sides in respective translation directions
- `pin_na_left` and `pin_na_right` and equivalents to pin only one side in the respective direction
- `pinning_cell` followed in the next lines by 3 numbers (i.e. one vector) per line representing the orientation of a spin in the basis cells

Other
--------
- UI-QT: added button for homogeneous transition over entire chain
- One can now completely re-use the logged input file without adjustments (external field, anisotropy, pairs and quadruplets may now be contained in the same file)

1.6.0

General
-----------
- Added Travis and AppVeyor **CIs to build and test master and develop**
- Extended and improved the Documentation
- **Renamed Hamiltonians**: Heisenberg_Pairs and Heisenberg_Neighbours
- **Updated input files** with more granularity and improved Hamiltonians
- Updated CUDA backend for Hamiltonians (now both have a backend)
- Cleaner python package building
- Added correct spin spiral creation with reciprocal q-vector and 2 q-vectors
- Added some stubs for Monte Carlo Method
- Significantly improved build_spins and neighbours/pairs calculations

Input File
-----------
- Added `output_tag_time` (switch time-tag in front of output names on/off)
- `hamiltonian` can now be `gaussian` or `heisenberg_pairs` or `heisenberg_neighbours`
- Improved granularity of output (energies and configurations/chains)
- `log_input_save` is superceded by `log_input_save_initial` and `log_input_save_final`
- Log levels are now specified as `log_console_level` and `log_file_level` and can be switched on/off with `log_to_console` and `log_to_file`
- Added monte carlo parameters
- Added maximum walltime for methods
- Added external_field_from_file

Bug fixes
-----------
Quite a few bugs were found due to new unit tests!
- static fields in CUDA backend
- Lots of bugs related to mutex locks (sometimes due to different compiler implementations)
- Shadows on multiple isosurfaces
- fixed nan/inf warning in UI-QT

Output
-----------
- Improved file naming (unique, yet readable names which are longer than before)

Logging
-----------
- Added timing info to State and made timing info prettier
- Improved input logging
- Added logging of pairs and quadruplets

Unit Tests
-----------
- Python chain API
- More unit tests for Vectormath

API
-----------
- updated Simulation API to revolve more around the data structures of the State
- added automatic setter for GNEB image types
- added 2-q spin spiral C API function

UI-Web
-----------
- updated to new Hamiltonians, making **startup with the default config ~15x faster**

UI-QT
-----------
Especially the visualization settings are now much easier to use!
- Bugfixes
- Improved split-up of different Tabs in SettingsWidget by creating new Widgets, immensely improving code readability
- Started using `QToolBox`es
- Removed Transitions Tab and placed into Configurations
- Added "copy&paste" to "drag" mode, drag radius can now be changed
- **With the new Hamiltonians, interactions can be specified shell-wise for both Heisenbergs**
- Chart now gives indicators for climbing/falling

Documentation
-----------
- Added **input file reference**
- Added API references for C and Python
- Added UI-QT reference including keybindings

1.5.0

Bugfixes
-------------------------
- negative translations in interaction pairs are now correctly taken into account
- damping cannot be set negative in desktop user interface anymore
- vector input is now correctly normalized
- stt and temperature now block convergence even if the hamiltonian's "force" is zero
- reading an image chain now correctly appends images if too few are in the chain
- fixed and improved mutex locks to prevent memory errors - the desktop user interface should not crash anymore when changing parameters or the Hamiltonian, copying inserting or deleting images
- fixed bad behaviour of position and direction filter sliders in desktop user interface

Input
-------------------------
- rng seed is now random unless explicitly given in input
- improved configuration of method output (added finer control of energy and spin configuration output)

Core
-------------------------
- **performance improvements** in regular and cuda versions
- added **python package** build capability
- improved logging of timings (made time spent on a simulation step more readable and added some log messages)

Desktop User Interface
-------------------------
- added **Drag mode** (F5) in which one can move a cylindrical domain of the system with the mouse - this feature is still under development
- added ability to **draw only every n'th spin** (this also affects the isosurface - as there are less data points it is rougher but calculated quicker)
- added ability to **show multiple isosurfaces** at once (including e.g. m_x=0 and m_z=0 at the same time
- improved keybindings to be a bit more intuitive and improved visualisation modes
- added some status bar informational messages
- added and improved menu bar actions
- SpinWidget can now be suspended when the visualisation is not needed

Page 3 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.