Skip to content

New Desktop GUI, update to C++14

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 17 Mar 17:46
e82250d

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
grafik

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 poping 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