magnopy.LSWT.diagonalize#
method
- LSWT.diagonalize(k, relative=False)[source]#
Diagonalize the Hamiltonian for the given
kpoint and return all possible quantities at once.- Parameters:
- k(3,) array-like
Reciprocal vector
- relativebool, default False
If
relative=True, thenkis 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_inv(M, 2M) numpy.ndarray
Transformation matrix from the original boson operators. Note that this function returns \((\mathcal{G})^{-1}\) for convenience.
\[ \begin{align}\begin{aligned}\begin{pmatrix} b_1(\boldsymbol{k}), \dots, b_M(\boldsymbol{k}), \end{pmatrix} = (\mathcal{G})^{-1}\\\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{aligned}\end{align} \]
See also
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]]))