magnopy.LSWT.diagonalize#

method

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

Diagonalize the Hamiltonian for the given k point and return all possible quantities at once.

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