Theoretical background
grogupy is based on the Relativistic magnetic interactions from non-orthogonal basis sets paper (see the bibliography) and uses the same convention for the generalized classical Heisenberg model
where \(\boldsymbol{e}_{i} = 1 / (\hbar S_i) \boldsymbol{S}_{i}\)
is a unit vector from the angular momentum vector and \(J_{ij}\),
and \(K_{i}\) are the exchange and on-site anisotropy tensor
respectively. Importantly they are renormalized to the unit vector
\(\boldsymbol{e}_{i}\). Internally they are stored as a
np.array, even if it is an ‘isotropic-only’ calculation, but
then the expected matrix elements are zero.
grogupy uses the following defnition for the on-site anisotropy tensor
which have five independent elements. The isotropic exchange tensor can be split into a symmetric and antisymmetric part
where the site inidices have been omitted for clarity. It is also possible to define the isotropic exchange \(J^{iso} = \text{Tr} J^s/3\) and the symmetric exchange \(J^S = J^s - J^{iso} I_3\), where \(I_3\) is the identity matrix. With these new defnitions we can expand the above classical Hamiltonian to the following form
Furthermore grogupy returns the energy variations upon infinitesimal rotations based on the Liechtenstein-Katsnelson-Antropov-Gubanov torque formalism. The most general Hamiltonian implemented in grogupy is the above example, but in principle any classical Hamiltonian can be fitted based on these energies. For examples see the works in the bibliography.