Units of exchange coupling and DMI/anisotropic J

How do I use this algorithm? What does that parameter do?
Post Reply
DiracString
Posts: 7
Joined: 28 Jun 2023, 23:37

Units of exchange coupling and DMI/anisotropic J

Post by DiracString »

Hi,

1) In VAMPIRE, exchange coupling strengths are given in units of Joules/link (which end up being on the order of 10^-22). In the TenPy documentation, the values used in the documentation are numbers on the order of 1 (e.g., for add_coupling()). Do the units matter? Can I just use values in meV? Apologies if I missed this in the documentation

2) If I specify anisotropic exchange \(J.S_i.S_j\) (Jxx,Jxy,Jxz,Jyx,Jyy,Jyz,Jzx,Jzy,Jzz) via add_coupling(), and my system has DMI too, will I need to specify DMI D separately (using \(D. S_i \times S_j\)) ? Or will the DMI be automatically treated from the anisotropic J values in TenPy, since they are related by: Dz = (Jxy - Jyx)/2, etc (since components of the DMI vector are related to the antisymmetric part of J)?

Thanks in advance!
User avatar
Johannes
Site Admin
Posts: 456
Joined: 21 Jul 2018, 12:52
Location: TU Munich

Re: Units of exchange coupling and DMI/anisotropic J

Post by Johannes »

1.) Hmm, good question. I never tried, but I'm afraid it wouldn't go well, and strongly advise against it.

In theory, I agree that you can choose arbitary units and scale all terms in the hamiltonian accordingly. In practice, we have several points where we discard everything on the order of machine precision (or often even a bit higher, I think up to 1.e-12) to avoid issues with floating point precision - e.g. when you add the same term multiple times, and the prefactors add up to 1.e-14, this is usually due to round-off errors, so we implicitly assume that this should be zero and drop such terms. Accordingly, when your prefactors of h are all on the order of 10-22, the model generated by tenpy will be trivial without term, as it dropped them all.
Even if we would allow such small terms in the Hamiltonian, I think it might also lead to issue with DMRG itself - each time we truncate, we explicitly drop every singular value smaller than an absolute threshold. Also, the Mixer/subspace expansion assume that the terms are of O(1) to work correctly.

To conclude, I highly recommend to choose one of the couplings as unit and set it to 1 (or at least order 1) and have all other coupling be defined in strength relative to that. (some) Terms of 1e.-3 to 1e3 or so are fine, but in general, one wants to avoid situations with too extreme numbers in numerical algorithms (keyword condition number).

2.) Duplicate question with this topic where I tried to answer this already.
Post Reply