SunnySuite / Sunny.jl

Spin dynamics and generalization to SU(N) coherent states
Other
86 stars 19 forks source link

Unify specification of single-ion anisotropy #37

Closed kbarros closed 1 year ago

kbarros commented 2 years ago

In SU(N) mode, Sunny currently supports arbitrary anisotropy operators, and this is integrated into the symmetry analysis. See SUN_anisotropy defined here.

In dipole-only mode, Sunny currently supports quadratic_anisotropy (defined here) and to a more limited extent quartic_anisotropy (here).

Note, however, existing limitations (1) quartic anisotropies are not integrated into the symmetry analysis, (2) 6th order anisotropies are missing from dipole mode, (3) there are two distinct interfaces for the anisotropy, depending on the mode (see here).

We should unify the user-interface to specify anisotropies. That is, the same anisotropy objects should be usable regardless of mode. Specifically, I propose:

This refactor will make it easier for the user to switch between modes, and allows a uniform symmetry analysis regardless of mode. Also, the user will retain the freedom to specify anisotropy either as a polynomial of spin operators, or as a linear combination of Stevens operators.

This will be a breaking change. Simultaneously, I suggest we rename gen_spin_ops() to spin_operators() which is a nicer name for a function that will be exposed to users.

kbarros commented 1 year ago

This has been implemented for a while using polynomials of symbolic operators. In the future, we may want to switch the interface from symbolic operators to matrices.