Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Micromagnetics #599

Draft
wants to merge 51 commits into
base: develop
Choose a base branch
from
Draft

Micromagnetics #599

wants to merge 51 commits into from

Conversation

MSallermann
Copy link
Member

@MSallermann MSallermann commented Jun 27, 2021

Implements the micromagnetic Hamiltonian.

Todo:

GPMueller and others added 30 commits September 19, 2019 13:28
The class does not have any real functionality yet.
A corresponding input parser has been added, but the kind and units of input parameters still need to be decided.
Added Constants_Micromagnetic namespace.
Also added Joule to other constants namespaces.
This will later be used to change it at runtime, especially enabling one to switch between atomistic and micromagnetic calculations.
Also potentially fixed a crashing bug in the copy constructors of Spin_System: the geometry shared pointer of the Hamiltonian was not set correctly on copy.
Also added the ability to switch between Hamiltonians from the GUI.
- the API now allows switching to Hamiltonian_Heisenberg
- the GUI was not updating the corresponding tab correctly, potentially leading to crashes
- the CUDA backend of Hamiltonian_Micromagnetic can now be compiled
Anisotropy, exchange and DMI.
The implementation of the energy calculation is tentative.
Also added some logging of  micromagnetic input parser.
-fixed anisotropy, exchange DMI - passing skyrmion convergence test now
- moved DDI_Method enum class to Hamiltonian.hpp
- added settings for dipolar interactions to micromagnetic Hamiltonian
- added some micromagnetic parameters to Hamiltonian API and made some minor improvements
- made external field consistent for micromagnetic Hamiltonian
…ian (to match mu_s in atomistic case).

Also added cell_volume to Geometry and changed definition of cell_size (from bounds_max - bounds_min to actual cell_size). Now these fields might also have some use in the atomistic case.
Moritz added 3 commits June 30, 2021 17:57
- Implemented E_DDI_Direct
- corrected periodic boundary conditions in Gradient_DDI_Direct
- fixed set_ddi API function
- Improved implementation of Gradient_Exchange
- Implemented Gradient_DMI
- Added both to unit test
Comment on lines +317 to +328
**Units:**

In the micromagnetic model, Spirit uses SI units:
- `m` (meter) for distances
- `J` (Joule) for energies
- `s` (second) for time

Therefore,
- `A [J/m]` for exchange stiffness
- `D [J/m^2]` for DMI
- `K [J/m^3]` for anisotropy
- `Ms [A/m]` for saturation magnetisation
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should add a section like this to the Heisenberg Hamiltonian documentation. IMO it it is quite useful to have this overview in the beginning

 - fix a small copy/paste bug and formatting in
   Demagnetization_Tensor.hpp
 - configparser formatting
 - specify units in comments of `mu_s` API
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants