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.]])