Dipolar interaction symmetry and Sys.eeD, Sys.gFrame

General forum for EasySpin: questions, how to's, etc.
Post Reply
thanasis
Local Expert
Posts: 252
Joined: Thu Jan 21, 2016 6:28 am
Location: Strasbourg

Dipolar interaction symmetry and Sys.eeD, Sys.gFrame

Post by thanasis »

I am trying to simulate the dipolar interaction between two spins in an arbitrary configuration, i.e. with their g-tensors not parallel and their principal elements not necessarily equal.

The problem has been solved analytically a long time ago by Coffman, but it is cumbersome to code and visualize. Smith & Pilbrow have published a simpler model for parallel and similar g-tensors, but it is constrained to limited geometries.

I was wondering whether the same thing can be achieved with Sys.eeD in conjunction with Sys.gFrame. I have made the code below to compare: the eta (η) angle is the azimuthal (xy-plane) deviation of the 2nd spin in Pilbrow's model, and xi (ξ) is the elevation measured from the z-axis. The simple test case of xi = 45*pi/180 corresponds to the two g-tensors being rotated by [45 0 0]*pi/180.

The two should yield identical spectra, but apparently I am missing something, probably a g² factor in eeDframes. Is that multiplied internally by ES, or should I explicitly do it myself? If yes, how?

Code: Select all

gx = 2.05;
gy = 2.05;
gz = 2.25;
r12 = 4.5;

% Spin system
Sys1.S= [1/2 1/2];
Sys1.g=[gx gy gz; gx gy gz];
Sys1.lwpp=[0 5];
Exp.mwFreq=34; Exp.CenterSweep=[1150 400]; Exp.nPoints=1000;

% Dipolar exchange model according to T.D. Smith, J. R. Pilbrow, Coord.
% Chem. Rev., 1974, 13, 173-278
eta = 45*pi/180; % In xy-plane angle
xi = 0*pi/180; % Along z-angle
Jxx = gx^2*(1-3*sin(eta)^2*sin(xi)^2);
Jyy = gy^2*(1-3*cos(eta)^2*sin(xi)^2);
Jzz = gz^2*(1-3*cos(xi)^2);
Jxy = -3*gx*gy*sin(xi)^2*sin(eta)*cos(eta);
Jxz = -3*gx*gz*sin(xi)*cos(xi)*sin(eta);
Jyz = -3*gy*gz*sin(xi)*cos(xi)*cos(eta);
eeDexact = 12993*r12^-3*[Jxx Jxy Jxz; Jxy Jyy Jyz; Jxz Jyz Jzz]

Sys1.ee = eeDexact;
[B,spc_exact] = pepper(Sys1,Exp);
Sys1 = rmfield(Sys1,'ee'); % Remove Sys1.ee so that Sys1.eeD can be used

% Dipolar exchange with Easyspin frames
Sys1.gFrame = [45 0 0; 45 0 0]*pi/180;
eeDframes = 12993*r12^-3*[-1 -1 2]
Sys1.eeD = eeDframes;
[B,spc_frames] = pepper(Sys1,Exp);

plot(B,spc_exact,'b')
hold on
plot(B,spc_frames+1,'r')
thanasis
Local Expert
Posts: 252
Joined: Thu Jan 21, 2016 6:28 am
Location: Strasbourg

Re: Dipolar interaction symmetry and Sys.eeD, Sys.gFrame

Post by thanasis »

After some thought, I believe to have cracked it. The key was to use the Euler angles of the gFrames to transform the local g-tensors to the molecular frame:

Code: Select all

% -------------Describe local g-tensors in molecular frame-------------
% Euler angles for T->M (reverse-opposite of gFrame)
euler1 = -fliplr(Sys1.gFrame(1,:))
euler2 = -fliplr(Sys1.gFrame(2,:))
% Rotation matrices for T->M
R_T2M_1 = erot(euler1)
R_T2M_2 = erot(euler2)
% Express g-vectors as tensors in the T-frame
g1 = diag(Sys1.g(1,:))
g2 = diag(Sys1.g(2,:))
% Transform g-tensors from T to M-frame
g1M = R_T2M_1 * g1 * R_T2M_1.'
g2M = R_T2M_2 * g2 * R_T2M_2.'


% Stefan suggests (http://easyspin.org/easyspin/documentation/spinsystem.html#g)
% Rotation matrices for T->M
R_M2g_1 = erot(Sys1.gFrame(1,:))
R_M2g_2 = erot(Sys1.gFrame(2,:))
% Express g-vectors as tensors in the T-frame
g_g_1 = diag(Sys1.g(1,:))
g_g_2 = diag(Sys1.g(2,:))
% Transform g-tensors from T to M-frame
g_M1 = R_M2g_1.' * g_g_1 * R_M2g_1
g_M2 = R_M2g_2.' * g_g_2 * R_M2g_2
% THE TWO APPROACHES ARE IDENTICAL: g1M = g_M1, g2M = g_M2

% Dipolar exchange with Sys.ee and WITH Easyspin frames in the molecular
% frame
R12 = [0; 0; 1]; R12 = R12/norm(R12); % Directional vector between spins Mi-Mj is defined along z
D12 = transpose(g1M)*g2M - 3 * (transpose(g1M)*R12) * (transpose(R12)*g2M)
Sys1.ee = 12993 * r12^-3 * D12;
If I understand correctly the way ES works, even if I express the g-tensors in the molecular frame, the interaction matrices each have their own reference frames, with the z-axis typically along the spin-spin vectors.
So it will always hold that Rij = [0; 0; 1]. This makes sense since if I also want to include additional interactions (isotropic, DM etc) which are all expressed in the frame of the interaction and it is the only way I can correctly add their respective interaction matrices.
Stefan Stoll
EasySpin Creator
Posts: 1100
Joined: Mon Jul 21, 2014 10:11 pm
Location: University of Washington

Re: Dipolar interaction symmetry and Sys.eeD, Sys.gFrame

Post by Stefan Stoll »

This looks ok.
Post Reply