Page 1 of 1

Sys.J with Sys.dvec & Sys.eeD for more than two electrons

Posted: Wed Jul 17, 2019 1:13 am
by thanasis
In the ES documentation (http://easyspin.org/easyspin/documentat ... em.html#ee), Sys.J is defined as a 1xN array.
For 2-e systems, antisymmetric and dipolar interactions are entered into separate structures (Sys.dvec and Sys.eeD, respectively) as Nx3 arrays. This apparently causes no problems.
However, for 3 electrons and above, they have to be entered into the Sys.J structure. The problem is that Nx3 arrays need to be added (?) into a 1xN array.

Maybe I am missing something, but I believe it would be useful for the documentation to be more explicit regarding the coexistence of the symmetric, antisymmetric and dipolar parts within Sys.J for 3 electrons and above.

Thanks for considering!

Re: Sys.J with Sys.dvec & Sys.eeD for more than two electron

Posted: Wed Aug 07, 2019 10:53 pm
by Stefan Stoll
This is a typo in the documentation. For 3 and more electrons, the same syntax should work as for 2 electrons. I.e., you should be able to use J, dvec, and eeD.

Re: Sys.J with Sys.dvec & Sys.eeD for more than two electron

Posted: Thu Aug 08, 2019 5:14 am
by thanasis
Thanks Stefan, this clears it up.

Also another point: does dvec know to inverse the sign so that Si x Sj = -Sj x Si?

I.e. for a triangle:

Code: Select all

Sys.S = [1/2 1/2 1/2];
Sys.J = [J12 J13 J23];
Do we instruct:
Sys.dvec = [d12; d13; d23];
or
Sys.dvec = [d12; -d13; d23];

Re: Sys.J with Sys.dvec & Sys.eeD for more than two electron

Posted: Thu Aug 08, 2019 8:52 am
by Stefan Stoll
No, it doesn't do anything with the sign. The rows in Sys.dvec correspond to d12, d13, d14, d23, d24, d34, etc., and never d21, d31, d41, d32, etc.

Internally, EasySpin converts Sys.J, Sys.dvec, and Sys.eeD to Sys.ee, and then uses only the latter for simulations. Here is the code:

Code: Select all

    idx = 1:3;
    for iPair = 1:nPairs
      J = Sys.J(iPair);
      d = Sys.dvec(iPair,:);
      ee = J*eye(3) + ...
         [0 d(3) -d(2); -d(3) 0 d(1); d(2) -d(1) 0] + ...
         diag(Sys.eeD(iPair,:));
      Sys.ee(idx,:) = ee;
      idx = idx + 3;
    end