magnopy.LSWT.GDM#

method

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

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.

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