Spirit

Latest version: v2.2.0

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

Scan your dependencies

Page 1 of 4

2.2.0

**Updated to C++14**
* [`63261d9c`](http://github.com/spirit-code/spirit/commit/63261d9c61bb3cae6c88421955c908f38f103343) - Updated C++ standard from C++11 to C++14.


Added features
===================================

* [`35e6ea48`](http://github.com/spirit-code/spirit/commit/35e6ea482401fb84cacbdb6910fbb4f7403d800f) - Added a 4th order anisotropy

Desktop GUI changes
===================================

**Added new immediate mode GUI using Dear ImGui**
![grafik](https://user-images.githubusercontent.com/20167491/225982658-43da211d-6b94-4564-a040-fd5eef162088.png)

Also,
* [`fc7735fe`](http://github.com/spirit-code/spirit/commit/fc7735fe6b2a9697531990f801cee61b8e638b78) - Ui-QT: Re-enabled Hopfion configuration and added new normal option.
* [`5b7f1954`](http://github.com/spirit-code/spirit/commit/5b7f195452ea9e571323fdec63191c9148a3238d) - Ui-CPP: Added two options to the plot widget 1) divide by nos and 2) renormalize Rx. Both are useful when observing moving_endpoints calculations
* [`5dee3d9d`](http://github.com/spirit-code/spirit/commit/5dee3d9dec787bf994567aac58bdfe2a2b8bf008) - Ui-QT: added moving endpoints to parameters widget


Interface changes
===================================

* [`1a5bb7ff`](http://github.com/spirit-code/spirit/commit/1a5bb7ffb2517c80fc7506b166080c8a418f83b5) - Core: implemented Hamiltonian getters for Exchange and DMI pairs. Note: there is still no getter for DMI pairs, only for the number of DMI pairs.
* [`b5351e57`](http://github.com/spirit-code/spirit/commit/b5351e570688cc5662156d249c965f3f147a9e20) - Python API: Added function `system.get_energy_contributions` - Returns a dictionary with strings as keys and floats as values. Can be used like `energy_ex = contribs["Exchange"]`, etc.
* [`d92ceb35`](http://github.com/spirit-code/spirit/commit/d92ceb35f1c668f097ec674e04efdbdbc65d3cc8) - Core: improve `Chain_Set_Length`. Now automatically copies the current image when an increase of the chain length is requested. Also fixed a bug in ui-imgui that caused a crash when reducing the chain length
* [`2dab6cfc`](http://github.com/spirit-code/spirit/commit/2dab6cfc95913929592695684c0261b28b47c9c7) - python_api: corrected hamiltonian.get_field and added it to unit tests
* [`ee7baf10`](http://github.com/spirit-code/spirit/commit/ee7baf10425dee49f26066931d59871afd7d5b4c) - Hamiltonian_API: Added a function that writes the embedding space Hessian to a file
* [`f87ec6ba`](http://github.com/spirit-code/spirit/commit/f87ec6badb9cbd63b5ac4a4604657e6182ccb1e6) - EMA: Can now control `sparse` parameter via API. Also added function to clear the modes.
* [`57486d7f`](http://github.com/spirit-code/spirit/commit/57486d7f2b8e9271695ac28481423d4eac5deb38) - API: Implemented an easy way to get basic information about a simulation run via the API.
* [`facb5601`](http://github.com/spirit-code/spirit/commit/facb560183f365ed76aa6ef9eee0a0ddc92c9f10) - Configurations: Added 'normal' parameter to Configuration_Hopfion.
* [`91de3514`](http://github.com/spirit-code/spirit/commit/91de35141cf6f22dea8c8c6f0aacd8d4ed9f655c) - Quantities: Implemented a new function Quantity_Get_Toplogical_Charge_Density
* [`7ec8ee46`](http://github.com/spirit-code/spirit/commit/7ec8ee469dec0069c9d557ff95c4e16023840ab3) - API: implemented force and energy history in Simulation_Run_Info
* [`c95766c4`](http://github.com/spirit-code/spirit/commit/c95766c4e0f34a2b3c66eac77c4e7cda29a95042) - C-API: Changed `NULL` to `nullptr` in `Simulation.h`
* [`a30dc841`](http://github.com/spirit-code/spirit/commit/a30dc84170699461086ef10565e6301b99daf8a8) - GNEB: Added get and set functions for moving endpoints to API
* [`c7e84313`](http://github.com/spirit-code/spirit/commit/c7e84313c24a13655f29677bb056ea011fa07fc7) - GNEB: equilibrium delta_Rx for moving endpoints can now be controlled via the API
* [`cfe8fd86`](http://github.com/spirit-code/spirit/commit/cfe8fd861fade14518ac6168d3abe569491c58b0) - GNEB: API getter for equilibrium_delta_Rx
* [`d6bd46a0`](http://github.com/spirit-code/spirit/commit/d6bd46a0ebc625509ee85f3072902abf9d8df9f2) - API for cubic anisotropy
* [`08ea0fc6`](http://github.com/spirit-code/spirit/commit/08ea0fc67319ba878ce9b45f68fef426a69be34b) - API: Implemented getters and setters for llg_beta


Bugfixes
===================================

* [`59db68d7`](http://github.com/spirit-code/spirit/commit/59db68d72330d81b33b61440444a8b950080b73d) - CUDA fix
* [`5b7f5479`](http://github.com/spirit-code/spirit/commit/5b7f54790926b6252c06213b969edc172eae2796) - Bugfixes for imgui webapp. - fixed OpenGL blending, which made transparent colours see-through to the gl canvas - fixed include orders for GLAD - also improved charcoal style accordingly - also moved ui-imgui/ui-web to ui-imgui/webapp - also removed unreachable code from main_web.cpp
* [`19a962fc`](http://github.com/spirit-code/spirit/commit/19a962fc0d69bd31e97939dcca839cd4970b7d9f) - GH-actions and CMake: fix ImGui builds. Also deactivated ImGui build for coverage builds etc.
* [`f45715e2`](http://github.com/spirit-code/spirit/commit/f45715e2005d7385901d50d47591cf2a748daedd) - Core: fix bug in `Data::Geometry::triangulation` and `tetrahedra`.
* [`fba2fb51`](http://github.com/spirit-code/spirit/commit/fba2fb515af9ddc3de083bc1fbf422abedd5e4bc) - Bugfix in Core: deadlock in `OrderedLock` class. If a second thread called `lock` and was waiting on `cvar.back()`, the referenced `std::condition_variable` could be destructed by the first locking thread calling `unlock`, causing the second thread to `wait` forever. This is fixed by `pop`ing the queue only after `wait` completed (i.e. within `lock`). Additionally, spurious wakeups could cause the `wait` to end prematurely, which is fixed by using the predicated overload. Also made some naming improvements and fixed formatting.
* [`2189dce2`](http://github.com/spirit-code/spirit/commit/2189dce26c41df147cadeba4d5aba1efc326b0e7) - Core: fix config parsing of RNG seeds.
* [`5c5c403f`](http://github.com/spirit-code/spirit/commit/5c5c403ffecc7b1e4e035c156dc13c123f29bfd7) - CMake: fix collision of options.
* [`3be348e6`](http://github.com/spirit-code/spirit/commit/3be348e62d713cb22bade0dc8db9ff88fc96ecc4) - Ui-QT: fixed an issue, where resizing of the geometry could lead to crashes. The cell filters needed to be reset after setting n_cell.
* [`11fe9381`](http://github.com/spirit-code/spirit/commit/11fe93816eb108aa83966c1495f092b2df93c4a5) - Ui-QT: fixed an issue, where resizing of the geometry could lead to crashes (Part 2). Updates of the cell filter slider ui-elements would emit events that could reset the m_cell_min/max_xxx values the old numbers. The SpinWidget::setCellFilter function now makes sure to only accept viable values.
* [`5b59ebec`](http://github.com/spirit-code/spirit/commit/5b59ebec52a1824716674448c771063591aa15a2) - Bugfix: check boundary conditions on quadruplets. This commit fixes only the CPU implementation.
* [`382cac3c`](http://github.com/spirit-code/spirit/commit/382cac3c7e9176db707512afbdbaa1e189b9384b) - Hamiltonian_Heisenberg: - Exchange/DMI: cu_idx_from_pair was erroneously given the cell index as first argument (it should be the spin index) - Zeeman: The index computation was missing a factor of n_cell_atoms
* [`e8991403`](http://github.com/spirit-code/spirit/commit/e8991403777829f3162a9f77360fcc09961b6b8d) - Fix potential bug due to initialization order fiasco.
* [`9b998cb6`](http://github.com/spirit-code/spirit/commit/9b998cb628e0bbb33b030bf8849974965a909786) - Fixed an issue when reading in eigenmodes from the GUI
* [`06d5bc64`](http://github.com/spirit-code/spirit/commit/06d5bc6499af83e7298588ceb1326534ad6484c8) - Quantities: Get_Magnetization now respects mu_s
* [`0706699e`](http://github.com/spirit-code/spirit/commit/0706699ecfb9830993e87b337aca912c8b5625ff) - Configparser: Fixed a small error where the log of individual pinned sites would just repeat the direction of the first fixed spin.
* [`41403b4e`](http://github.com/spirit-code/spirit/commit/41403b4e1148172bb642931ba585a912774a2dce) - Hamiltonian_Heisenberg: Fixed race condition in DDI
* [`4827222d`](http://github.com/spirit-code/spirit/commit/4827222ddc761307ef76cea6a417e241a54efc37) - Method_GNEB: fixed a bug in a lambda capture
* [`a4b45178`](http://github.com/spirit-code/spirit/commit/a4b451785dd30a4299a0f2bedbccf7669ca68e93) - Timing: Fixed issues in DurationFromString
* [`32ce288a`](http://github.com/spirit-code/spirit/commit/32ce288a6d10d0c8d8a6a3e8692e4adc5124905d) - Hamiltonian_Heisenberg: Fixed a bug in the OpenMP implementation of DDI. Some index variables were not thread private. Somehow this only caused issues on clang.


Other improvements and changes
===================================

* [`e1ba4599`](http://github.com/spirit-code/spirit/commit/e1ba4599cbb27a32420619a62cdd08361732e54c) - CI: added `sudo apt update` before two `sudo apt install` calls.
* [`474fa90f`](http://github.com/spirit-code/spirit/commit/474fa90ffd2a29cefcd9479f763c83821782dc7c) - CI and CMake: working towards deploying binary releases.
* [`8aba87dc`](http://github.com/spirit-code/spirit/commit/8aba87dc2df28bb1c3c1846a9dc4a748abd29984) - CI: restructured artifacts to add licenses to macOS package.
* [`e9cd19a9`](http://github.com/spirit-code/spirit/commit/e9cd19a9937d96e6127051140c7941c2dbe74c61) - CI: try to fix codecov upload.
* [`64fc4e34`](http://github.com/spirit-code/spirit/commit/64fc4e349525e11ead21e254949c6d8cdef52848) - CI: run also on pull requests. Note: do not deploy on pull request events.
* [`692bdd66`](http://github.com/spirit-code/spirit/commit/692bdd662ed5049ced29aee8a636f6fbd8121bb4) - CI: added build of mobile webapp and webapp artifacts.
* [`945e3d50`](http://github.com/spirit-code/spirit/commit/945e3d50e118735a76882e53474dfcc51f9c5052) - CI: add release drafting on tags.
* [`7e4f0f6e`](http://github.com/spirit-code/spirit/commit/7e4f0f6e99b214a6904ec4db7e8e022ef98a0e2d) - CI: add `lint` step for core and ui-imgui
* [`ccaa6bef`](http://github.com/spirit-code/spirit/commit/ccaa6beff068d16dfa3a4626dee4ab77726685b9) - CI: generate clang-tidy report to log

* [`0d6c7907`](http://github.com/spirit-code/spirit/commit/0d6c7907eda54cf86163e9b379f171f4c46651ff) - CMake: fix for bundling on Windows. Also minor improvement of `GlfwWindow`.
* [`7eecca95`](http://github.com/spirit-code/spirit/commit/7eecca9516c783c2e31fbe6b203be33a60cbb353) - CMake: fixed missing bin directory when bundling on Linux.
* [`c5d7d3a5`](http://github.com/spirit-code/spirit/commit/c5d7d3a593762a43a664f2ad248b075438d01819) - Added missing thirdparty licenses.
* [`c1ec74fe`](http://github.com/spirit-code/spirit/commit/c1ec74fe06357566e5b3083a22a40dc7d2a983d8) - CMake: improved installation folder structure and added licenses. Thirdparty licenses are now installed and added to bundles. Documentation folder now has a better structure.

* [`d2ebbc74`](http://github.com/spirit-code/spirit/commit/d2ebbc7451397c6d3a322af2286171a84146dd5a) - Handle_Signal: Sending interrupt signal, twice in 2s time interval, now properly exits the code. - std::chrono::duration was measured in wrong unit
* [`441529a5`](http://github.com/spirit-code/spirit/commit/441529a5a4e127dbf3d9b6eda4a9c0a2d047933e) - CMake: enable Ninja+Clang on Windows. Using `add_subdirectory( thirdparty/qhull )` instead of the complicated `ExternalProject_add` stuff. Had to make a minor change to thirdparty/qhull/CMakeLists to get the right include directories when compiling QHull.
* [`1742cd96`](http://github.com/spirit-code/spirit/commit/1742cd967f4030d28986652cb872e864864b1e7f) - Core: add ordered locking to `Spin_System_Chain`. - renamed `Ordered_Lock` to `OrderedLock`, added class description comment and placed into `Utility` namespace - applied renaming and clang-format to `Spin_System` - use `OrderedLock` in `Spin_System_Chain` and applied clang-format - improved copying of `Spin_System` by using `std::make_shared` (also fixed missing mmf parameter copy in copy assignment - improved some include guards and comments
* [`8e80d909`](http://github.com/spirit-code/spirit/commit/8e80d909b62d74b1cc47101ccf80107b5894f91a) - Core: amend input file docs with RNG seed info. Namely that the seeds will be random if unspecified.
* [`e545385f`](http://github.com/spirit-code/spirit/commit/e545385f522f5e1b3fbb929dd0df146c8cb88f76) - Sparse_HTST: Numerical improvements - Inverse_PowerMethod: Current estimated eigenvector now gets orthogonalized with all previous found eigenvectors after every iteration (this helps to solve problems where the vector would fall back onto previous eigenvectors) - also update the rayleigh quotient and refactor the LU decomposition periodically to improve evalue estimate during the iterations - small changes to log output
* [`1dd74ae4`](http://github.com/spirit-code/spirit/commit/1dd74ae46074418f43ea38ebfcaa70575b55ead9) - Sparse_HTST: Increased accuracy of zero-mode calculation. After the minimization of the rayleigh coefficient, a few iterations of the shift invert power method are performed to increase the accuracy of the computed eigenvalues. This is necessary to for an accurate calculation in the case zero-modes are present.
* [`a010ea0f`](http://github.com/spirit-code/spirit/commit/a010ea0f2a61a8afb5c65acdf01740240b872379) - Cuda: Write cuFFT errors to the Log
* [`7219381b`](http://github.com/spirit-code/spirit/commit/7219381b51897167b42ec2e017c4b425d2e74d82) - Added support for amortizing iterations by performing a small number of iterations without checks in between. In a CUDA build this can help to minimize memory transfers.
* [`be9bceac`](http://github.com/spirit-code/spirit/commit/be9bceac5ef909c65d866fa81fb8d27dece220b9) - Manifoldmath: Added a new function Geodesic_Tangent that computes the tangents more accurately. Use it to compute the tangents at the endpoints
* [`21eba6fc`](http://github.com/spirit-code/spirit/commit/21eba6fc82d39fe8826a71e04f45d691a9a2fbc9) - Sparse_HTST: Use sparse lanczos for computation of unstable mode and zero modes
* [`aca472f7`](http://github.com/spirit-code/spirit/commit/aca472f79a0ddd7e4ed67fdf9319c2e51ea9ee14) - Manifoldmath: more performant implementation of project_parallel
* [`2df3ae72`](http://github.com/spirit-code/spirit/commit/2df3ae7234433b7eb2b1a1e280bef718bb84caf7) - Vectormath: Implemented new function `jacobian` and added a unit test for it
* [`41d582c8`](http://github.com/spirit-code/spirit/commit/41d582c8fa3757c02127b29c494bef08058d1472) - Method_LLG: Use `Vectormath::jacobian` instead of `Vectormath::directional_gradient` for STT

* [`db34029c`](http://github.com/spirit-code/spirit/commit/db34029c7d45ab790bccbf316f98b75f7f168ae3) - CMake: Updated cmake_minimum_required to VERSION 3.12
* [`20b438de`](http://github.com/spirit-code/spirit/commit/20b438de768ac3369c9498cd1cd365bbfdfc3f18) - Add .clangd and .clang-tidy config files
* [`d2a78d16`](http://github.com/spirit-code/spirit/commit/d2a78d1605ae0087ecbca604ca05eb323e74ee72) - Update catch to v2.13.6

2.1.1

Fixed a bug, causing segfaults when using one of the single image methods on any image of the chain other than the first one.

2.1.0

New LBFGS Solvers (thanks to A. Ivanov)
-------------------
Added new solvers for energy minimization LBFGS_Atlas, LBFGS_OSO and VP_OSO.
These new solvers circumvent the explicit renormalization of the spins by working with norm-preserving maps - either stereographic atlases or matrix exponentials.

Sparse HTST
------------------
Implementad a sparse version of HTST, which can be used if no dipole-dipole interactions are present. If applicable, it is much faster and more memory-efficent than the dense implementation.

Other
-------------------
- added interpolated energy contributions
- internally, mutices are now FIFO, allowing to interact with the GUI even when there are many iterations per second
- minor fixes for HTST
- improved log legibility
- small improvements of ui-web
- more and improved documentation
- new CLI parser
- added simulation_n_shot to python API
- fixed unit tests for single precision
- optional skipping of zero padding, if periodic boundaries are used
- fixed memory leaks in CUDA backend
- fixed api functions energy_per_spins (thanks to P. Buhl)
- added circular domain wall skyrmions
- added visual filters, based on lattice cell to QT-GUI
- optimized LLG and GNEB energy calculations by deriving them from the gradient
- moved CI to github actions
- fixed Hessian for dipole-dipole interaction
- improved cmake code, especially cuda integration

2.0.1

- Fixed a bug in the HTST API
- Fixed incorrect names in the Python log API
- The CUDA backend now uses CUB for reductions, eliminating some error-prone self-written boilerplate code.
- Improved the documentation of CUDA limitations, noting the fact that the GUI cannot be used with the CUDA backend on Windows or OSX

2.0.0

Note that the paper about this code has been published and should be cited when using the code for scientific publications: [Phys. Rev. B 99, 224414 (2019)](https://link.aps.org/doi/10.1103/PhysRevB.99.224414) (arxiv version: [arXiv:1901.11350](https://arxiv.org/abs/1901.11350)).


Added Features
=====================

Minimum Mode Following (MMF)
------------------------------------

See the method paper, [Phys. Rev. Lett. 121, 197202 (2018)](https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.121.197202), for more details.

This method can be used to search out saddle points in the energy landscape.
See [the docs](https://spirit-docs.readthedocs.io/en/v2.0.0) for the available parameters.

Harmonic Transition State Theory (HTST)
------------------------------------

See the method paper, [Comp. Phys. Comm. 196, 335 (2015)](https://link.aps.org/doi/10.1103/PhysRevB.85.184409), for more details.

This method can be used to estimate the rate of thermally activated transitions in a spin system
from the critical points in the energy landscape corresponding to a given transition. It can
therefore be used to estimate lifetimes of (meta-) stable spin configurations.
See [the docs](https://spirit-docs.readthedocs.io/en/v2.0.0) for the available parameters.

Diplolar interactions
------------------------------------

Also referred to as dipole-dipole interaction (DDI), stray field or demagnetising field.
See [the docs](https://spirit-docs.readthedocs.io/en/v2.0.0) for the available parameters.

Impvroved spring forces for GNEB
------------------------------------

Spring force ratio

This is the ratio of weighting of the energy difference and the geodesic distance
between images in the calculation of the spring force. A ratio of `0.5` will cause the lengths
of the interpolated energy polynomials between image to take equal lengths.

Path shortening force

The path shortening force tries to reduce the geodesic length of the GNEB transition.
It can be used to pre-converge a path, avoiding the effect of zero energy modes, which
might otherwise hinder convergence.

If it is set to a large value, the path will tend to the homogeneous interpolation between
bounding images.

4th order Runge-Kutta solver
------------------------------------

This solver is more precise for dynamical simulations than the other solvers, such as
Heun's (2nd order RK), but requires more calculations of the energy gradient.

------------------------------------


Desktop GUI changes
=====================

- added configurations-like for setting atom types / defects
- added new "interactive mode" for setting atom types / defects
- improved InfoWidget
- improvements for multi-atom basis cells
- added colormap cardinal axis
- fixed some locale bugs


Interface Changes
=====================

Input File
------------------------------------

There are some breaking changes to the input file!

C API
------------------------------------

- Added APIs for MMF and HTST
- Made the function naming more consistent
- Split Simulation_Start API into one function per Method
- Added APIs for setting atom types / defects and pinning
- Added Chain_Set_Length
- Added APIs for GNEB image types and spring force parameters

Python API
------------------------------------

Renamed and/or recapitalised all APIs in order to adhere closer to
[PEP8](https://www.python.org/dev/peps/pep-0008).
The capitalisation should now consistent.

------------------------------------


Bugfixes
=====================

- fixed the OVF output writing (both header and binary endianness)
- fixed several build problems, such as
- the default build type
- passing CMake options from the top level to the Spirit core library
- building the CUDA backend on Windows
- several fixes for multi-atom basis cells
- corrected stochastic thermal field in LLG method
- minor fix to homogeneous transition function
- corrected calculation of topological charge
- minor fix of isosurfaces for multi-atom basis cells
- bugfix for geometry dimensionality calculation
- several fixes for resizing the geometry at runtime
- fixed spin spiral creation

------------------------------------


Other Improvements
=====================

- moved `mu_s` from Hamiltonian to Geometry
- improved logging of backtraces and unhandled exceptions
- added a Dockerfile
- updated and completed C API docs and setup autogenerating Python API docs
- added logos to docs

1.8.8

A missing function call caused a segfault on initialisation.

Page 1 of 4

© 2024 Safety CLI Cybersecurity Inc. All Rights Reserved.