DmiTensor#

class DmiTensor#

Bases: object

Contains the DMI parameters of a ferromagnet.

In mumax⁺, the Dzyaloshinskii-Moriya interaction is defined by the energy density

\[\varepsilon_{\text{DMI}} = \frac{1}{2} D_{ijk} \left[ m_j \partial_i m_k - m_k \partial_i m_j \right]\]

with summation indices running over \(x\), \(y\), and \(z\). The DMI strengths and chiral properties are contained in the dmi tensor \(D_{ijk}\). This tensor is antisymmetric in it’s magnetic indices (\(D_{ijk} = - D_{ikj}\)) and hence can be fully described by only 9 elements.

DmiTensor() has 9 Parameter properties: xxy, xxz, xyz, yxy, yxz, yyz, zxy, zxz, and zyz. These 9 parameters fully define the dmi tensor of a ferromagnet. The parameters can be set separately, or can be set through one of the following methods:

Neumann boundary conditions are determined by

\[2 A \, n_i\partial_i\mathbf{m} = \mathbf{\Gamma} ,\]

where \(A\) is the exchange constant and

\[\Gamma_k = m_j n_i D_{ijk}\]

with \(n_i\) being the component of the surface normal in the \(i\) th direction.

Examples

>>> world = World(cellsize=(1e-9,1e-9,1e-9))
>>> magnet = Ferromagnet(world, Grid((64,64,1)))
>>> magnet.dmi_tensor.xxz = 3e-3
>>> magnet.dmi_tensor.yyz = 3e-3
>>> world = World(cellsize=(1e-9,1e-9,1e-9))
>>> magnet = Ferromagnet(world, Grid((64,64,1)))
>>> magnet.dmi_tensor.set_interfacial_dmi(3e-3)
__init__(impl)#

Create a DmiTensor from a cpp DmiTensor instance.

Warning

The end user should not create DmiTensor instances. Each Ferromagnet already has a DmiTensor as an attribute which can be used to set the DMI parameters. See Ferromagnet.dmi_tensor.

Parameters:

impl (_mumaxpluscpp.DmiTensor)

make_zero()#

Set all DMI parameters to zero.

set_interfacial_dmi(value)#

Set interfacial DMI parameters for an interface in the xy-plane.

Using this function is equivalent to:

>>> dmi_tensor.make_zero()
>>> dmi_tensor.xxz = value
>>> dmi_tensor.yyz = value
Parameters:

value – The interfacial DMI strength. This value is used to set individual DMI parameters of the DMI tensor. The value can be anything which can be used in Parameter.set().

set_bulk_dmi(value)#

Set bulk DMI parameters.

Using this method is equivalent to:

>>> dmi_tensor.make_zero()
>>> dmi_tensor.xyz = value
>>> dmi_tensor.yxz = -value
>>> dmi_tensor.zxy = value
Parameters:

value – The bulk DMI strength. This value is used to set individual DMI parameters of the DMI tensor. The value can be anything which can be used in Parameter.set().

property xxy: Parameter#

Dzyaloshinskii-Moriya interaction strength parameter D_xxy (J/m²).

Returns:

DMI strength parameter D_xxy

Return type:

Parameter

property xyz: Parameter#

Dzyaloshinskii-Moriya interaction strength parameter D_xyz (J/m²).

Returns:

DMI strength parameter D_xyz

Return type:

Parameter

property xxz: Parameter#

Dzyaloshinskii-Moriya interaction strength parameter D_xxz (J/m²).

Return type:

Parameter

property yxy: Parameter#

Dzyaloshinskii-Moriya interaction strength parameter D_yxy (J/m²).

Return type:

Parameter

property yyz: Parameter#

Dzyaloshinskii-Moriya interaction strength parameter D_yyz (J/m²).

Return type:

Parameter

property yxz: Parameter#

Dzyaloshinskii-Moriya interaction strength parameter D_yxz (J/m²).

Return type:

Parameter

property zxy: Parameter#

Dzyaloshinskii-Moriya interaction strength parameter D_zxy (J/m²).

Return type:

Parameter

property zyz: Parameter#

Dzyaloshinskii-Moriya interaction strength parameter D_zyz (J/m²).

Return type:

Parameter

property zxz: Parameter#

Dzyaloshinskii-Moriya interaction strength parameter D_zxz (J/m²).

Return type:

Parameter