magnopy.SpinHamiltonian.add_dipole_dipole#

method

SpinHamiltonian.add_dipole_dipole(R_cut=None, E_cut=None, alphas=None)[source]#

Add magnetic dipole dipole interaction to the Hamiltonian.

Magnetic dipole dipole interaction is added in the form of two-spin & two-sites parameter

\[C_{2,2} \sum_{\mu,\nu,\alpha,\beta,i,j} J_{dd}(\boldsymbol{r}_{\nu,\alpha\beta})^{ij} S_{\mu,\alpha}^i S_{\mu+\nu,\beta}^j\]

where the parameter is defined as

\[J_{dd}(\boldsymbol{r}_{\nu,\alpha\beta})^{ij} = \dfrac{\mu_0\mu_B^2}{8\pi C_{2,2}} \dfrac{g_{\alpha}g_{\beta}}{\vert\boldsymbol{r}_{\nu,\alpha\beta}\vert^3} (\delta_{k,l} - 3\hat{r}_{\nu,\alpha\beta}^i\hat{r}_{\nu,\alpha\beta}^j)\]

if SpinHamiltonian.convention.multiple_counting is True and as

\[J_{dd}(\boldsymbol{r}_{\nu,\alpha\beta})^{ij} = \dfrac{\mu_0\mu_B^2}{4\pi C_{2,2}} \dfrac{g_{\alpha}g_{\beta}}{\vert\boldsymbol{r}_{\nu,\alpha\beta}\vert^3} (\delta_{k,l} - 3\hat{r}_{\nu,\alpha\beta}^i\hat{r}_{\nu,\alpha\beta}^j)\]

if SpinHamiltonian.convention.multiple_counting is False.

where \(g_{\alpha}\) is a g-factor, \(\boldsymbol{\hat{r}}_{\nu,\alpha\beta}\) is a unit vector.

Parameters:
R_cutfloat, optional

Cut off radius for the distance between a pair of atoms. \(R_{cut} \ge 0\).

E_cutfloat, optional

Cut off value for the maximum value of the parameter. \(E_{cut} > 0\).

alphaslist of int, optional

Indices of atoms, to which the magnetic field effect should be added.

Raises:
ValueError
  • If none of the R_cut or E_cut are provided.

  • If R_cut < 0

  • If E_cut <= 0

Notes

  • If only R_cut is given, then the dipole dipole term between the pair of spins \(S_{\mu,\alpha}^i\) and \(S_{\mu+\nu,\beta}^j\) is added if \(\vert\boldsymbol{r}_{\nu,\alpha\beta}\vert <= R_{cut}\).

  • If only E_cut is given, then the R_cut is estimated as

    \[R_{cut} = \left( 3\sqrt{2} \dfrac{\mu_0\mu_B^2g_{max}^2}{8\pi C_{2,2}E_{cut}} \right)^{\dfrac{1}{3}}\]

    if SpinHamiltonian.convention.multiple_counting is True and as

    \[R_{cut} = \left( 3\sqrt{2} \dfrac{\mu_0\mu_B^2g_{max}^2}{4\pi C_{2,2}E_{cut}} \right)^{\dfrac{1}{3}}\]

    if SpinHamiltonian.convention.multiple_counting is False.

    The dipole dipole term between the pair of spins \(S_{\mu,\alpha}^i\) and \(S_{\mu+\nu,\beta}^j\) is added if \(\vert\boldsymbol{r}_{\nu,\alpha\beta}\vert \le R_{cut}\) and \(\vert J_{dd}(\boldsymbol{r}_{\nu,\alpha\beta})^{ij}\vert\ge E_{cut}\) for some \(i, j\).

  • If both R_cut and E_cut are provided, then the dipole dipole term between the pair of spins \(S_{\mu,\alpha}^i\) and \(S_{\mu+\nu,\beta}^j\) is added if \(\vert\boldsymbol{r}_{\nu,\alpha\beta}\vert \le R_{cut}\) and \(\vert J_{dd}(\boldsymbol{r}_{\nu,\alpha\beta})^{ij}\vert \ge E_{cut}\) for some \(i, j\).

Magnetic dipole-dipole interaction is added either to magnetic atoms or to the list of the atoms provided by user.

  • If alphas is None, then parameters of the magnetic field added only to the magnetic atoms. In other words only to atoms that already have at least one other parameter (any) associated with it.

  • If alpha is not None, then parameters of magnetic field are added to the atoms with the provided indices (based on the order in SpinHamiltonian.atoms)