MagnonDispersion#

For the full reference see MagnonDispersion.

MagnonDispersion is a class for calculating magnon dispersion. See the article in library for more information about the method behind the calculations.

Import#

>>> # Exact import
>>> from radtools.magnons.dispersion import MagnonDispersion
>>> # Explicit import
>>> from radtools.magnons import MagnonDispersion
>>> # Recommended import
>>> from radtools import MagnonDispersion

For the examples in this page we need additional import and some predefined variables:

>>> from radtools import SpinHamiltonian
>>> # Ferromagnetic cubic chain
>>> hamiltonian = SpinHamiltonian(notation="SpinW")
>>> hamiltonian.add_atom("Fe", position=(0, 0, 0), spin=[0, 0, 1])
>>> hamiltonian.add_bond("Fe", "Fe", (1, 0, 0), iso=-1)
>>> hamiltonian.add_bond("Fe", "Fe", (0, 1, 0), iso=-1)
>>> hamiltonian.add_bond("Fe", "Fe", (0, 0, 1), iso=-1)
>>> kp = hamiltonian.kpoints
>>> kp.n = 0

Creation#

Magnon dispersion is build from some Spin Hamiltonian.

Note

Atom's of the spin Hamiltonian have to have Atom.spin_vector attribute defined.

>>> dispersion = MagnonDispersion(hamiltonian)

Calculation#

To compute the dispersion simply call the dispersion object with the desired k-points. K-points are an instance of Kpoints class or list of k-points, where each k-point is a list of three numbers.

>>> kp.path_string
'G-X-M-G-R-X|M-R'
>>> dispersion(kp)
array([[ 0.,  8.,  8., 16., 16.,  0.,  0., 24., 24.,  8., 16., 24.]])