magnopy.converter22.to_dmi#

magnopy.converter22.to_dmi(parameter, matrix_form=False)[source]#

Extracts antisymmetric part (DMI) of the full matrix parameter.

\[C_{2,2} \boldsymbol{S}_{\mu} \boldsymbol{J} \boldsymbol{S}_{\nu} = C_{2,2} J_{iso} \boldsymbol{S}_{\mu} \cdot \boldsymbol{S}_{\nu} + C_{2,2} \boldsymbol{S}_{\mu} \boldsymbol{J}_S \boldsymbol{S}_{\nu} + C_{2,2} \boldsymbol{D} \cdot \left( \boldsymbol{S}_{\mu} \times \boldsymbol{S}_{\nu} \right)\]

where vector \(\boldsymbol{D}\) is defined as

\[\begin{split}\begin{pmatrix} 0 & D^z & -D^y \\ -D^z & 0 & D^x \\ D^y & -D^x & 0 \\ \end{pmatrix} = \dfrac{\boldsymbol{J} - \boldsymbol{J}^T}{2} = \boldsymbol{J}_A\end{split}\]
Parameters:
parameter(3, 3) array-like

Full matrix of the exchange parameter (\(\boldsymbol{J}\)).

matrix_formbool, default False

Whether to return dmi in a matrix form instead of a vector.

Returns:
dmi(3,) or (3, 3) numpy.ndarray

Antisymmetric exchange (DMI).

  • If matrix_form == False, then returns a vector \(\boldsymbol{D}\).

  • If matrix_form == True, then returns a matrix \(\boldsymbol{J}_A\).

Examples

>>> from magnopy import converter22
>>> parameter = [[1, 3, 0], [-1, -2, 3], [0, 3, 9]]
>>> converter22.to_dmi(parameter)
array([0., 0., 2.])
>>> converter22.to_dmi(parameter, matrix_form = True)
array([[ 0.,  2.,  0.],
       [-2.,  0.,  0.],
       [ 0.,  0.,  0.]])