% 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},
}