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, thenkis 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 Units of energy for the full list of supported units.
- Returns:
- gdm(2M, 2M) numpy.ndarray
Gran dynamical matrix.
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]])