% IMPORTANT: The following is UTF-8 encoded. This means that in the presence
% of non-ASCII characters, it will not work with BibTeX 0.99 or older.
% Instead, you should use an up-to-date BibTeX implementation like “bibtex8” or
% “biber”.
@MISC{Mller:1008544,
author = {Müller, Gideon P. and Sallermann, Moritz and Mavros,
Stefanos and Rhiem, Florian and Schürhoff, Daniel and
Hoffmann, Markus and Meyer, Ingo and Disselkamp, Constantin
and Redies, Matthias and Buhl, Patrick and Suckert, Jens
Rene and Ivanov, Aleksei V. and Kiselev, Nikolai S. and
Jónsson, Hannes and Blügel, Stefan},
title = {spirit-code/spirit: {N}ew {D}esktop {GUI}, update to
{C}++14},
reportid = {FZJ-2023-02381},
year = {2023},
abstract = {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$ calculations
5dee3d9d - 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 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 - 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 - $python_api:$
corrected $hamiltonian.get_field$ and added it to unit tests
ee7baf10 - $Hamiltonian_API:$ Added a function that writes
the embedding space Hessian to a file f87ec6ba - EMA: Can
now control sparse parameter 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_Density$
7ec8ee46 - API: implemented force and energy history in
$Simulation_Run_Info$ c95766c4 - C-API: Changed NULL to
nullptr in Simulation.h a30dc841 - GNEB: Added get and set
functions for moving endpoints to API c7e84313 - GNEB:
equilibrium $delta_Rx$ for moving endpoints can now be
controlled via the API cfe8fd86 - GNEB: API getter for
$equilibrium_delta_Rx$ d6bd46a0 - API for cubic anisotropy
08ea0fc6 - API: Implemented getters and setters for
$llg_beta$ Bugfixes 59db68d7 - CUDA fix 5b7f5479 - 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
- GH-actions and CMake: fix ImGui builds. Also deactivated
ImGui build for coverage builds etc. f45715e2 - Core: fix
bug in Data::Geometry::triangulation and tetrahedra .
fba2fb51 - 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 - 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_atoms$ e8991403 - Fix
potential bug due to initialization order fiasco. 9b998cb6 -
Fixed an issue when reading in eigenmodes from the GUI
06d5bc64 - Quantities: $Get_Magnetization$ now respects
$mu_s$ 0706699e - 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 DDI
4827222d - $Method_GNEB:$ fixed a bug in a lambda capture
a4b45178 - Timing: Fixed issues in DurationFromString
32ce288a - $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: added sudo apt
update before two sudo apt install calls. 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: add lint step for core and ui-imgui
ccaa6bef - CI: generate clang-tidy report to log 0d6c7907 -
CMake: fix for bundling on Windows. Also minor improvement
of GlfwWindow . 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.
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 - 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 - 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 output 1dd74ae4 -
$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 Log 7219381b - 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
endpoints 21eba6fc - $Sparse_HTST:$ Use sparse lanczos for
computation of unstable mode and zero modes aca472f7 -
Manifoldmath: more performant implementation of
$project_parallel$ 2df3ae72 - Vectormath: Implemented new
function jacobian and added a unit test for it 41d582c8 -
$Method_LLG:$ Use Vectormath::jacobian instead of
$Vectormath::directional_gradient$ for STT db34029c - CMake:
Updated $cmake_minimum_required$ to VERSION 3.12 20b438de -
Add .clangd and .clang-tidy config files d2a78d16 - Update
catch to v2.13.6},
cin = {IAS-1 / PGI-1 / JARA-HPC / JARA-FIT},
cid = {I:(DE-Juel1)IAS-1-20090406 / I:(DE-Juel1)PGI-1-20110106 /
$I:(DE-82)080012_20140620$ / $I:(DE-82)080009_20140620$},
pnm = {5211 - Topological Matter (POF4-521)},
pid = {G:(DE-HGF)POF4-5211},
typ = {PUB:(DE-HGF)33},
doi = {10.5281/ZENODO.7746552},
url = {https://juser.fz-juelich.de/record/1008544},
}