magnopy.LSWT.diagonalize#

method

LSWT.diagonalize(k, relative=False, units='meV')[source]#

Diagonalizes the Hamiltonian for the given k point.

Parameters:
k(3,) array-like

Reciprocal vector.

relativebool, default False

If relative=True, then k is interpreted as given relative to the reciprocal unit cell. Otherwise it is interpreted as given in absolute coordinates.

unitsstr, default "meV"

Added in version 0.3.0.

Units of energy. See Magnon energies for the full list of supported units.

Returns:
omegas(M, ) numpy.ndarray

Array of omegas. Note, that data type is complex. If the ground state is correct, then the complex part should be zero.

deltafloat

Constant energy term that results from diagonalization. Note, that data type is complex. If the ground state is correct, then the complex part should be zero.

G(M, 2M) numpy.ndarray

Transformation matrix from the original boson operators.

\[\begin{split}\begin{pmatrix} b_1(\boldsymbol{k}) \\ \dots \\ b_M(\boldsymbol{k}) \\ \end{pmatrix} = \mathcal{G} \begin{pmatrix} a_1(\boldsymbol{k}) \\ \dots \\ a_M(\boldsymbol{k}) \\ a^{\dagger}_1(-\boldsymbol{k}) \\ \dots \\ a^{\dagger}_M(-\boldsymbol{k}) \\ \end{pmatrix}\end{split}\]

Examples

>>> import magnopy
>>> spinham = magnopy.examples.cubic_ferro_nn()
>>> lswt = magnopy.LSWT(spinham=spinham, spin_directions=[[0, 0, 1]])
>>> lswt.diagonalize(k=[0, 0, 0.5], relative=True)
(array([2.+0.j]), 0j, array([[1.+0.j, 0.+0.j]]))