spirit-code/spirit: New Desktop GUI, update to C++14
Creators
- 1. Peter Grünberg Institut and Institute for Advanced Simulation, Forschungszentrum Jülich and JARA, Germany and Science Institute and Faculty of Physical Sciences, University of Iceland, Iceland, NVIDIA
- 2. Peter Grünberg Institut and Institute for Advanced Simulation, Forschungszentrum Jülich and JARA, Germany and Science Institute and Faculty of Physical Sciences, University of Iceland, Iceland
- 3. Peter Grünberg Institut and Institute for Advanced Simulation, Forschungszentrum Jülich and JARA, Germany
- 4. NTT Data
- 5. Science Institute and Faculty of Physical Sciences, University of Iceland, Iceland
Description
The Spirit framework is designed for atomic scale spin simulations of magnetic systems of arbitrary geometry and magnetic structure, providing a graphical user interface with powerful visualizations and an easy to use scripting interface. An extended Heisenberg type spin-lattice Hamiltonian including competing exchange interactions between neighbors at arbitrary distance, higher-order exchange, Dzyaloshinskii-Moriya and dipole-dipole interactions is used to describe the energetics of a system of classical spins localised at atom positions. A variety of common simulations methods are implemented including Monte Carlo and various time evolution algorithms based on the Landau-Lifshitz-Gilbert equation of motion, which can be used to determine static ground state and metastable spin configurations, sample equilibrium and finite temperature thermodynamical properties of magnetic materials and nanostructures or calculate dynamical trajectories including spin torques induced by stochastic temperature or electric current. Methods for finding the mechanism and rate of thermally assisted transitions include the geodesic nudged elastic band method, which can be applied when both initial and final states are specified, and the minimum mode following method when only the initial state is given. The lifetime of magnetic states and rate of transitions can be evaluated within the harmonic approximation of transition-state theory. The framework offers performant CPU and GPU parallelizations.
Updated to C++14
63261d9c- Updated C++ standard from C++11 to C++14.
Added features
35e6ea48- Added a 4th order anisotropy
Desktop GUI changes
Added new immediate mode GUI using Dear ImGui
Also,
fc7735fe- Ui-QT: Re-enabled Hopfion configuration and added new normal option.5b7f1954- Ui-CPP: Added two options to the plot widget 1) divide by nos and 2) renormalize Rx. Both are useful when observing moving_endpoints calculations5dee3d9d- Ui-QT: added moving endpoints to parameters widget
Interface changes
1a5bb7ff- 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- Python API: Added functionsystem.get_energy_contributions- Returns a dictionary with strings as keys and floats as values. Can be used likeenergy_ex = contribs["Exchange"], etc.d92ceb35- Core: improveChain_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 length2dab6cfc- python_api: corrected hamiltonian.get_field and added it to unit testsee7baf10- Hamiltonian_API: Added a function that writes the embedding space Hessian to a filef87ec6ba- EMA: Can now controlsparseparameter via API. Also added function to clear the modes.57486d7f- API: Implemented an easy way to get basic information about a simulation run via the API.facb5601- Configurations: Added 'normal' parameter to Configuration_Hopfion.91de3514- Quantities: Implemented a new function Quantity_Get_Toplogical_Charge_Density7ec8ee46- API: implemented force and energy history in Simulation_Run_Infoc95766c4- C-API: ChangedNULLtonullptrinSimulation.ha30dc841- GNEB: Added get and set functions for moving endpoints to APIc7e84313- GNEB: equilibrium delta_Rx for moving endpoints can now be controlled via the APIcfe8fd86- GNEB: API getter for equilibrium_delta_Rxd6bd46a0- API for cubic anisotropy08ea0fc6- API: Implemented getters and setters for llg_beta
Bugfixes
59db68d7- CUDA fix5b7f5479- 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.cpp19a962fc- GH-actions and CMake: fix ImGui builds. Also deactivated ImGui build for coverage builds etc.f45715e2- Core: fix bug inData::Geometry::triangulationandtetrahedra.fba2fb51- Bugfix in Core: deadlock inOrderedLockclass. If a second thread calledlockand was waiting oncvar.back(), the referencedstd::condition_variablecould be destructed by the first locking thread callingunlock, causing the second thread towaitforever. This is fixed bypoping the queue only afterwaitcompleted (i.e. withinlock). Additionally, spurious wakeups could cause thewaitto end prematurely, which is fixed by using the predicated overload. Also made some naming improvements and fixed formatting.2189dce2- Core: fix config parsing of RNG seeds.5c5c403f- CMake: fix collision of options.3be348e6- 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- 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- Bugfix: check boundary conditions on quadruplets. This commit fixes only the CPU implementation.382cac3c- 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_atomse8991403- Fix potential bug due to initialization order fiasco.9b998cb6- Fixed an issue when reading in eigenmodes from the GUI06d5bc64- Quantities: Get_Magnetization now respects mu_s0706699e- Configparser: Fixed a small error where the log of individual pinned sites would just repeat the direction of the first fixed spin.41403b4e- Hamiltonian_Heisenberg: Fixed race condition in DDI4827222d- Method_GNEB: fixed a bug in a lambda capturea4b45178- Timing: Fixed issues in DurationFromString32ce288a- 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- CI: addedsudo apt updatebefore twosudo apt installcalls.474fa90f- CI and CMake: working towards deploying binary releases.8aba87dc- CI: restructured artifacts to add licenses to macOS package.e9cd19a9- CI: try to fix codecov upload.64fc4e34- CI: run also on pull requests. Note: do not deploy on pull request events.692bdd66- CI: added build of mobile webapp and webapp artifacts.945e3d50- CI: add release drafting on tags.7e4f0f6e- CI: addlintstep for core and ui-imgui-
ccaa6bef- CI: generate clang-tidy report to log -
0d6c7907- CMake: fix for bundling on Windows. Also minor improvement ofGlfwWindow. 7eecca95- CMake: fixed missing bin directory when bundling on Linux.c5d7d3a5- Added missing thirdparty licenses.-
c1ec74fe- 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- Handle_Signal: Sending interrupt signal, twice in 2s time interval, now properly exits the code. - std::chrono::duration was measured in wrong unit 441529a5- CMake: enable Ninja+Clang on Windows. Usingadd_subdirectory( thirdparty/qhull )instead of the complicatedExternalProject_addstuff. Had to make a minor change to thirdparty/qhull/CMakeLists to get the right include directories when compiling QHull.1742cd96- Core: add ordered locking toSpin_System_Chain. - renamedOrdered_LocktoOrderedLock, added class description comment and placed intoUtilitynamespace - applied renaming and clang-format toSpin_System- useOrderedLockinSpin_System_Chainand applied clang-format - improved copying ofSpin_Systemby usingstd::make_shared(also fixed missing mmf parameter copy in copy assignment - improved some include guards and comments8e80d909- Core: amend input file docs with RNG seed info. Namely that the seeds will be random if unspecified.e545385f- 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 output1dd74ae4- 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- Cuda: Write cuFFT errors to the Log7219381b- 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- Manifoldmath: Added a new function Geodesic_Tangent that computes the tangents more accurately. Use it to compute the tangents at the endpoints21eba6fc- Sparse_HTST: Use sparse lanczos for computation of unstable mode and zero modesaca472f7- Manifoldmath: more performant implementation of project_parallel2df3ae72- Vectormath: Implemented new functionjacobianand added a unit test for it-
41d582c8- Method_LLG: UseVectormath::jacobianinstead ofVectormath::directional_gradientfor STT -
db34029c- CMake: Updated cmake_minimum_required to VERSION 3.12 20b438de- Add .clangd and .clang-tidy config filesd2a78d16- Update catch to v2.13.6
Files
spirit-code/spirit-v2.2.0.zip
Files
(12.1 MB)
| Name | Size | Download all |
|---|---|---|
|
md5:b2768d470741c3e80c3acf07c114fe49
|
12.1 MB | Preview Download |
Additional details
Related works
- Is supplement to
- https://github.com/spirit-code/spirit/tree/v2.2.0 (URL)