magnopy.LSWT.GDM#

method

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

Computes grand dynamical matrix.

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 Energy for the full list of supported units.

Returns:
gdm(2M, 2M) numpy.ndarray

Gran dynamical matrix.

See also

LSWT.A
LSWT.B

Notes

Before the diagonalization, the magnon Hamiltonian has the form

\[\begin{split}\mathcal{H} = \dots + \sum_{\boldsymbol{k}, \alpha} \boldsymbol{\mathcal{A}}(\boldsymbol{k})^{\dagger} \begin{pmatrix} \boldsymbol{A}(\boldsymbol{k}) & \boldsymbol{B}^{\dagger}(\boldsymbol{k}) \\ \boldsymbol{B}(\boldsymbol{k}) & \overline{\boldsymbol{A}(-\boldsymbol{k})} \end{pmatrix} \boldsymbol{\mathcal{A}}(\boldsymbol{k})\end{split}\]

where

\[\boldsymbol{\mathcal{A}}(\boldsymbol{k}) = \begin{pmatrix} a_1(\boldsymbol{k}), \dots, a_M(\boldsymbol{k}), a^{\dagger}_1(-\boldsymbol{k}), \dots, a^{\dagger}_M(-\boldsymbol{k}), \end{pmatrix}\]

This function computes the grand dynamical matrix \(\boldsymbol{D}(\boldsymbol{k})\)

\[\begin{split}\boldsymbol{D}(\boldsymbol{k}) = \begin{pmatrix} \boldsymbol{A}(\boldsymbol{k}) & \boldsymbol{B}^{\dagger}(\boldsymbol{k}) \\ \boldsymbol{B}(\boldsymbol{k}) & \overline{\boldsymbol{A}(-\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.GDM(k=[0,0,0.5], relative=True)
array([[1.+0.j, 0.-0.j],
       [0.+0.j, 1.-0.j]])