Calculate dipolar tensors.
T = diptensor(g1,g2,rvec) T = diptensor(g,nuc,rvec) T = diptensor(nuc,g,rvec) T = diptensor(nuc1,nuc2,rvec)
diptensor
calculates the dipolar coupling tensor T
(in MHz) between two spins, using the inter-spin distance vector rvec
(in nm). It works for dipolar couplings between two electrons, for dipolar couplings between two magnetic nuclei, and for dipolar hyperfine couplings between an electron and a magnetic nucleus. See the corresponding interactions in the spin Hamiltonian.
g1
, g2
and g
specify the g tensor for an electron. For an isotropic g value, provide a single number. For an anisotropic g tensor, provide either the full 3x3 matrix or the principal values and the Euler angles
g = 2.005; % isotropic g g = diag([2.0085 2.0065 2.0023]); % full g matrix (here diagonal) g = {[2 2.05 2.13],[30 68 0]*pi/180}; % principal values and Euler angles
The Euler angles define the transformation between the molecular frame (in which rvec
is assumed to be defined) and the g tensor eigenframe. This is identical to the gFrame
field in the spin system structure.
nuc1
, nuc2
and nuc
specify the nuclear isotope, for example '1H'
, '2H'
, '13C'
, '15N'
, etc.
rvec
is the 3-element vector originating from the first spin and pointing to the second spin, in units of nm.
The tensor T
is a 3x3 matrix, in units of MHz. It is for the Hamiltonian H = S1*T*S2, where S1 and S2 are the spin vector operators for the first and second spin, respectively.
The dipolar coupling tensor between two electrons spaced 1 nm apart along the molecular z direction is
rvec = [0; 0; 1]; % nm T = diptensor(gfree,gfree,rvec)
T = 52.0410 0 0 0 52.0410 0 0 0 -104.0820
The hyperfine coupling tensor between an electron and a proton located 0.3 nm away along the molecular x axis is
rvec = [0.3; 0; 0]; % nm A = diptensor(gfree,'1H',rvec)
A = 5.8566 0 0 0 -2.9283 0 0 0 -2.92830
The dipolar coupling tensor between two electrons 1.5 nm apart in the direction given by polar angles theta = pi/4 and phi = pi/3 is
phi = pi/3; % rad theta = pi/4; % rad r = 1.5; % nm rvec = ang2vec(phi,theta)*r; T = diptensor(gfree,gfree,rvec)
T = 9.6372 -10.0153 -11.5647 -10.0153 -1.9274 -20.0306 -11.5647 -20.0306 -7.7098
The eigenvalues of this matrix give the principal values of the tensor
eig(T)
ans = -30.8391 15.4196 15.4196
The associated principal directions are the columns of the eigenvector matrix
[Tpd,Tpv] = eig(T); Tpd % eigenvector matrix
Tpd = 0.3536 0.8660 0.3536 0.6124 -0.5000 0.6124 0.7071 0 -0.7071
To calculate the dipolar coupling tensor between two spin centers with anisotropic g, there are two input options. Either provide the full g tensors
g1 = [2.0723 -0.0439 0.0378 -0.0439 2.0428 0.0238 0.0378 0.0238 2.1549]; g2 = [1.9052 0 0.0244 0 1.9500 0 0.0244 0 2.0148]; rvec = [0;0.3;1]; T = diptensor(g1,g2,rvec)
T = 45.0248 -1.4288 -0.1124 -1.4350 33.7441 -39.7333 -0.2349 -39.1764 -87.2182
Or provide the principal values of the tensor and the Euler angles describing the transformation from the molecular frame to the tensor frame
g1pv = [2 2.1 2.17]; g1Frame = [10 20 40]*pi/180; g2pv = [1.9 1.95 2.02]; g2Frame = [0 12 0]*pi/180; rvec = [0;0.3;1]; T = diptensor({g1pv,g1Frame},{g2pv,g2Frame},rvec)
T = 45.0238 -1.4284 -0.1130 -1.4346 33.7445 -39.7319 -0.2350 -39.1778 -87.2200
Note that in either case, as a result of the anisotropic g tensors involved, the output tensor is not symmetric. To decompose it into its isotropic, symmetric and antisymmetric parts, use
T0 = trace(T)*eye(3) % isotropic component Ts = (T+T.')/2 - T0 % traceless symmetric component Ta = (T-T.')/2 % antisymmetric component
T0 = -8.4518 0 0 0 -8.4518 0 0 0 -8.4518 Ts = 53.4755 -1.4315 -0.1740 -1.4315 42.1963 -39.4549 -0.1740 -39.4549 -78.7683 Ta = 0 0.0031 0.0610 -0.0031 0 -0.2771 -0.0610 0.2771 0
The function implements the expression
where and are for an electron and for a nuclear spin. is the g tensor. is the unit vector pointing from spin 1 to spin 2 (or vice versa) and is the inter-spin distance.
ang2vec, angstrom, bmagn, ham_ee, gfree, ham_hf, isotopes, mu0, nmagn, nucgval