magnopy.LSWT.B#

method

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

Part of the 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:
B(M, M) numpy.ndarray

\(B_{\alpha\beta}(\boldsymbol{k})\).

See also

LSWT.A
LSWT.GDM

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 matrix \(\boldsymbol{B}(\boldsymbol{k})\).

Examples

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