Defining a spin system

EasySpin uses mainly two data types that are available in MATLAB: arrays and structures. In EasySpin, a spin system is represented by a MATLAB structure (the spin system structure) containing certain fields.

The spin system structure contains all information about the spin system and its spin Hamiltonian. Its fields specify spin quantum numbers, interaction parameters, matrices and tensors, relative orientation angles for these matrices and tensors as well as details about broadenings.

The spin Hamiltonian is set up in frequency units (MHz, not angular frequencies), so all the energy parameters of the Hamiltonian have to be given in MHz as well. Hence, for example, the field A represents in fact the diagonal of the hyperfine coupling tensor divided by the Planck constant, A/h, and not of A. Remember that all angles are in radians, not in degrees.

Spin system structures are used by many EasySpin functions, among them the simulation functions chili (slow-motion EPR), garlic (isotropic EPR), pepper (solid-state EPR), salt (ENDOR), and saffron (pulse EPR).

A few examples

Before we give a full list of possible fields, here are a couple of examples of spin system definitions. There are two equivalent ways.

Sys.S = 1/2;
Sys.g = [1.9 2.0 2.1];
Sys.lw = 0.7;  % mT
Sys = struct('S',1/2,'g',[1.9 2.0 2.1],'lw',0.7);

Nuclei can be added to a spin system either using a set of fields (Nucs, A) or using the function nucspinadd, which is more convenient in many situations.

Sys.S = 1/2;
Sys.g = [2 2.1 2.2];
Sys.Nucs = '63Cu';
Sys.A = [50 50 460];
Sys = struct('S',1/2,'g',[2 2.1 2.2]);
Sys = nucspinadd(Sys,'63Cu',[50 50 460]);

A high-spin Mn2+ system with zero-field splitting is

Sys = struct('S',5/2,'g',2,'Nucs','55Mn');
Sys.A = -240; 
Sys.D = 120;
Parameter reference

The following groups of parameters can be specified in the spin system structure:

All interaction matrices and tensors can have arbitrary orientations with respect to a molecule-fixed frame of reference (the so-called molecular frame).

Below we list and describe all possible spin system structure fields containing spin Hamiltonian parameters.

The spins

The two fields S and Nucs are used to specify the electron and nuclear spins constituting the spin system. Both are optional. If S is not given, S=1/2 is assumed. If Nucs is not specified, Nucs='' is used.

S

Gives the electron spin quantum number(s). An arbitrary number of electron spins can be specified. Examples:

Sys.S = 1/2;            % one electron spin with S=1/2
Sys.S = 5/2;            % an S=5/2 spin
Sys.S = [1/2, 1/2];     % two S=1/2 spins
Sys.S = [1, 1, 1/2];    % two S=1 spins and one S=1/2 spin

If S is not given, it is automatically set to 1/2.

Nucs

A string containing a comma-separated list of nuclear isotopes specifying the nuclear spins in the spin system. An arbitrary number of nuclei can be specified.

Sys.Nucs = '1H';              % one hydrogen
Sys.Nucs = '63Cu';            % a 63Cu nucleus
Sys.Nucs = '59Co,14N,14N';    % a 59Co and two 14N nuclei

If there are no nuclear spins in the system, don't specify this field or set it to '' (an empty string). Nuclei can be added and removed one at a time using nucspinadd and nucspinrmv.

If not a single isotope, but a natural-abundance mixture of isotopes is needed, just omit the mass number. You can also freely mix single isotopes and natural-abundance mixtures in one spin system.

Sys.Nucs = 'Cu';          % natural-abundance mixture of 69% 63Cu and 31% 65Cu
Sys.Nucs = 'Cu,14N';      % same as above, plus a pure 14N
Sys.Nucs = 'F,C';         % 100% 19F, plus a mixture of 99% 12C and 1% 13C

EasySpin will automatically simulate the spectra of all possible isotopologues (isotopes combinations) and combine them with the appropriate weights. Hyperfine constants and quadrupole couplings are automatically converted between isotopes. The values given by you in the spin system are taken to apply for the most abundant isotope with an appropriate spin (e.g. 63Cu in the case of Cu, 1H for H, 14N of N, 119Sn for Sn).

It is also possible to give custom/enriched isotope mixtures by explicitly giving a list of the mass numbers of all isotopes in parentheses in Nucs. Additionally, the abundances should be given in Abund. In the simplest case of one atom, this would be

Sys.Nucs = '(12,13)C';     % for a mixture of 12C and 13C
Sys.Abund = [0.3 0.7];     % 30% of 12C, the rest 13C

Sys.Nucs = '(1,2)H';       % for a mixture of protons and deuterons
Sys.Abund = [0.05 0.95];   % 95% deuterium

In the case of multiple atoms, Abund should be a cell array with a list of abundances for each atom. For example

Sys.Nucs = '63Cu,(32,33)S';    % 63Cu with enriched 33S
Sys.Abund = {1,[0.1,0.9]];     % 100% 63Cu, 10% 32S and 90% 33S

Custom and natural abundance mixtures and single isotopes can be all used at the same time. Any entry for a natural-abundance atom or for a single isotope in Abund is ignored.

Sys.Nucs = 'Cu,(32,33)S,1H'; % natural Cu with enriched 33S and a pure 1H
Sys.Abund = {1,[0.1,0.9],1}; % one way
Sys.Abund = {[],[0.1,0.9],[]}; % another way, yieldig the same result
Abund Specify abundances for custom isotope mixtures. See Nucs above.
n Vector of number of equivalent nuclei, e.g.
Sys.Nucs = '1H,13C';  % one class of 1H and one class of 13C
Sys.n = [2 3];        % 2 protons and 3 carbon-13 spins
Sys.n can be omitted if all nuclei in Sys.Nucs occur only once.
The g values

The g matrices/tensors for all electron spins in the system are supplied in two fields:

See also the reference page on the Electron Zeeman interaction.

g

Depending on whether the g tensors are rhombic, axial or isotropic, different ways of input are possible:

  • Rhombic: Each row contains the three principal values of the g tensor of one electron spin.

    Sys.g = [2 2.05 2.3];                % rhombic g, for one electron spin
    Sys.g = [2 2.1 2.3; 1.9 1.95 2.01];  % rhombic g, for two electron spins
    
  • Axial: For axial g tensors, only two values are needed. The first value is the one perpendicular to the easy axis, and the second is the one parallel to it.

    Sys.g = [2.25 2.03];                % axial g, for one electron spin
                                        % = [2.25 2.25 2.03]
    Sys.g = [2.25 2.03; 1.99 1.98];     % axial g, for two electron spins
                                        % = [2.25 2.25 2.03; 1.99 1.99 1.98]
    
  • Isotropic: If g is isotropic, it is sufficient to give its isotropic value once.

    Sys.g = 2.005;                      % isotropic g, for one electron spin
    Sys.g = [2.0023; 2.0025];           % isotropic g, for two electron spins
    
  • No value: If no values are given, EasySpin assumes isotropic g values of 2.0023... (see gfree) for all electron spins.

When the principal values of g are given in g, the orientation of the g tensor can be specified by Euler angles in gpa, see below.

As an alternative, it is also possible to give the full g tensor in g, e.g.

Sys.g =[ 2.0033971   -0.0004307   -0.0000036;...
        -0.0004145    2.0030324   -0.0000063;...
        -0.0000144    0.0000129    2.0022372];

In this case, the Euler angles in gpa are ignored.

gpa

Each row of this array contains the three Euler angles (in radians) for the passive rotation which transforms the g matrix of the associated electron spin from its eigenframe to the molecular frame (see also the function erot). If not specified, gpa is assumed to be all-zero, that is, all tensors are aligned with the molecular frame.

Sys.gpa = [0 10 0]*pi/180;                % one electron spin
Sys.gpa = [0 0 0; 0 pi/4 0; 0 -pi/4 0];   % three electron spins

With these angles, EasySpin can transform a g tensor from its diagonal eigenframe representation to the molecular frame representation. Here is an explicit example how this is done internally:

gpa = [10 34 -2]*pi/180;  % Euler angles, in radians
g = [2.1 1.97 2.04];      % principal values

R = erot(gpa);        % rotation matrix
gdiag = diag(g)       % g in eigenframe
gM = R*gdiag*R.'      % g in molecular frame

which gives the following output

gdiag =
    2.1000         0         0
         0    1.9700         0
         0         0    2.0400
gM =
    2.0797   -0.0147    0.0264
   -0.0147    1.9728   -0.0115
    0.0264   -0.0115    2.0575
 
Hyperfine couplings

For each electron-nucleus pair, a hyperfine coupling tensor can be specified. The following fields are used.

A

Principal values of the hyperfine interaction matrices A/h, in MHz. Each row contains the principal values of the A tensors of one nucleus. A(k,:) refers to nuclear spin k. Orientations of the A matrices are given in Apa.

Sys.A = [-6 12 23];            % 1 electron and 1 nucleus
Sys.A = [10 10 -20; 30 40 50]; % 1 electron and 2 nuclei

For axial and isotropic hyperfine tensors, the notation can be shortened, just as in the case of the g tensor.

Sys.A = [4 10];       % = [4 4 10]  (axial, 1 electron and 1 nucleus)
Sys.A = 34;           % = [34 34 34] (isotropic, 1 electron and 1 nucleus)
Sys.A = [4 10; 1 2];  % = [4 4 10; 1 1 2]  (axial, 1 electron and 2 nucleui)
Sys.A = [7; 3];        % = [7 7 7; 3 3 3] (isotropic, 1 electron and 2 nuclei)

If the system contains more than one electron spin, each row contains the principal values of the hyperfine couplings to all electron spins, listed one after the other.

Sys.A = [10 10 -20 30 40 50];                % 2 electrons and 1 nucleus
Sys.A = [10 10 -20 30 40 50; 1 1 -2 3 4 5];  % 2 electrons and 2 nuclei

It is possible to specify full A matrices in A. The 3x3 matrices have to be combined like the 1x3 vectors used when only principal values are defined: For different electrons, put the 3x3 matrices side by side, for different nuclei, on top of each other. If full matrices are given in A, Apa is ignored.

Sys.A = [5 0 0; 0 5 0; 0 0 5]                          % 1 electron and 1 nucleus
Sys.A = [[5 0 0; 0 5 0; 0 0 5]; [10 0 0; 0 10 0; 0 0 10]]     % 1 electron and 2 nuclei
Sys.A = [[5 0 0; 0 5 0; 0 0 5], [10 0 0; 0 10 0; 0 0 10]]     % 2 electrons and 1 nucleus
A_

Spherical form of the hyperfine matrix, in terms of its isotropic, axial and rhombic components. The units are MHz. A and A_ cannot be used at the same time.

Sys.A_ = 2;         % isotropic component only
Sys.A_ = [2 3]      % isotropic and axial component
Sys.A_ = [2 3 0.4]  % isotropic, axial and rhombic component
The cartesian form (as used in A) and the spherical form (as used in A_) are related by
A = A_(1) + [-1,-1,2]*A_(2) + [-1,+1,0]*A_(3);
For more than one nucleus and more than one electron spin, the array structure is analagous to A.
Apa

Array of Euler angles giving the orientations of the various A matrices in the molecular frame, as described above for gpa. If Apa is not specified, it is assumed to be all-zero, that is, all tensors are aligned with the molecular frame. See also erot. Apa has a layout analogous to A. Each row contains the three Euler angles for one nucleus.

Sys.Apa = [0 20 0]*pi/180;  % one electron spin, one nucleus
Sys.Apa = [0 0 0; 0 10 90; 12 -30 34]*pi/180 % one electron spin, three nuclei
If there are two or more electron spins, each nucleus has two or more hyperfine tensors, and consequently each row should contain two or more sets of Euler angles.
Sys.Apa = [0 20 0, 13 -30 80]*pi/180;               % 2 electrons, 1 nucleus
Sys.Apa = [0 20 0, 0 0 0; 0 10 0, 0 30 50]*pi/180;  % 2 electrons, 2 nuclei
 
Nuclear quadrupole couplings

For each nucleus spin, a nuclear quadrupole coupling tensor Q can be given, using the fields Q (for e2qQ/h and eta, the principal values, or the full matrix) and Qpa (for the orientation).

Q

Array containing the quadrupole tensors Q/h for all nuclei, in MHz. There are several possible ways to specify the tensors.

  • For axial Q tensors: Specify e2Qq/h for each nucleus
    Sys.Q = 0.7            % one nucleus, eeQq/h = 0.7 MHz
    Sys.Q = [0.7, 1.2]     % same for two nuclei
    
  • For rhombic Q tensors: Specify e2Qq/h and eta for each nucleus, two numbers per row.
    Sys.Q = [1.2 0.29]         % one nucleus, eeQq/h = 1.2 MHz and eta = 0.29
    Sys.Q = [1.2 0.29; 0.1 0]  % same with a second nucleus
    
  • For all Q tensors: specify three principal values of the Q tensor, for one nucleus per row.
    Sys.Q = [-1 -1 2]                % one nucleus, Qxx = -1, Qyy = -1, Qzz = +2 MHz
    Sys.Q = [-1 -1 2; 0.2 0.3 -0.5]  % same for two nuclei
    
  • You can also give the full 3x3 Q tensor for each nucleus.
    Sys.Q = [-1 0 0; 0 -1 0; 0 0 2]*0.1;   % for one nucleus, diagonal
    Sys.Q = [0.125 -0.6495 -1.299; -0.6495 -0.625 0.75; -1.299 0.75 0.5]; % general, one nucleus
    Q1 = [-0.9 0 0; 0 -1.1 0; 0 0 2]*0.15;
    Q2 = [-0.7 0 0; 0 -1.3 0; 0 0 2]*0.31;
    Sys.Q = [Q1; Q2]; % for two nuclei
    
Here is an example of how to convert from e2Qq/h and eta to the three principal Q values:
eeQq = 1; eta = 0.2;
I = 1;         % nuclear spin must be known!
Q = eeQq/(4*I*(2*I-1)) * [-1+eta, -1-eta, 2]

See also the reference page on the nuclear quadrupole interaction.

Qpa

Euler angles alpha, beta and gamma, describing the orientation of the Q tensors in the molecular frame, analogous to gpa and Apa. There must be one row of three angles for each nucleus. The angles are in units of radians, not degrees.

Sys.Qpa = [0 pi/4 0];                    % one nucleus
Sys.Qpa = [30 45 0; 10 -30 0]*pi/180;    % two nuclei

For axial Q tensors, the first value (for the angle alpha) is irrelevant.

Here is how principal values and angles can be converted to a full matrix:
Qpv = [-0.9 -1.1 2]*0.125; % principal values
Qpa = [10 45 -30]*pi/180;  % Euler angles
R = erot(Qpa);             % rotation matrix
Q = R*diag(Qpv)*R';        % full matrix

 
Zero-field splittings

For each electron spin, a zero-field splitting can be specified in the fields D and Dpa. See also the reference page on the zero-field interaction.

D

D gives the zero-field splitting tensors for the electron spins in the spin system. It should be in units of MHz (1 cm-1 = 29979 MHz). It can be specified in several different ways.

  • Axial: If the zero-field splitting tensor is axial, give the D value for each electron spin. The orientation of the tensor can be specified in the field Dpa (see below).

    Sys.D = [200];            % 1 electron spin, D = 200 MHz
    Sys.D = [200 -340];       % 2 electron spins, 	D value each, in MHz
    Sys.D = [200 -340 1100];  % 3 electron spins, D value each, in MHz
    
  • Rhombic: For a zero-field splitting tensor with rhombic asymmetry, give both the D and the E value for each electron spin. The orientation of the tensor can be specified in the field Dpa (see below).

    Sys.D = [200 10];            % 1 electron spin, D = 200 MHz and E = 10 MHz
    Sys.D = [200 10; 340 90];    % 2 electron spins, D and E value for each spin
    
  • Principal values: For both axial and rhombic symmetry, you can give the three principal values of the D tensor. The orientation of the tensor can be specified in the field Dpa (see below).

    Sys.D = [-100 -100 200];               % 1 electron spin, Dx = Dy = -100 MHz, Dz = 200 MHz
    Sys.D = [-150 -50 200; 450 350 -800];  % 2 electron spins
    
    Here is how the principal values can be computed from D and E
    D = 120; E = 15;                     % D and E parameters, in MHz
    Sys.D = [-1,-1,2]/3*D + [1,-1,0]*E     % conversion to D principal values
    

    It is possible to provide a non-traceless D tensor.

  • Full matrix: You can also specify the full D matrix for each electron spin. E.g. for one electron spin

    Sys.D =  [-33.8  -24.1 -122.1; -24.1 -91.2 44.4; -122.1 44.4 125];
    

    It is possible to provide a non-traceless D tensor.

Include zeros for any electron spin with S = 1/2.

 
Dpa

nx3 matrix of real

Euler angles describing the orientation of the D tensors, completely analogous to gpa and Qpa. If absent, it is assumed to be all zeros.

Internally, EasySpin uses the following procedure to compute the full D tensor in the molecular frame from the given principal values and the Euler angles

Dpv = [-25 -55 80];      % sample principal values
Dpa = [10 20 0]*pi/180;  % sample tilt angles

R = erot(Dpa)            % rotation matrix
D = R*diag(Dpv)*R.'      % computation of the full D tensor
 
 
High-order zero-field splittings

EasySpin supports a series of high-order electron spin operators in the spin Hamiltonian. These, howevere, are available only for the first electron spin in a spin system.

aF

1x2 array of real

Values, in MHz, of the fourth-order parameters a and F. For their definition, see the reference page on high-order operators.

Sys.aF = [10 -3];   % in MHz

Both a and F are defined in terms the molecular reference frame, which is assumed to coincide the four-fold symmetry axes of the cubic part. For other orientations (e.g. along the trigonal axes), the high-order parameters B40 and B44 can be used.

B20, B21, B22, B40, B41, ..., B44, B60, ..., B66

real or 1x2 array

The coefficients for the extended Stevens operators of the electron spin (see also the function stev). B20, B40 and B60 are scalars. The other fields specify two [eqn] parameters each. E.g. B43 represents [eqn]. If only one element is given, it is taken as [eqn].

Currently, it is not possible to include tilt angles for the principal frames of these high-order interactions. All of them are assumed to be collinear with the molecular frame. By changing the molecular frame, i.e. by tilting all other tensors (g, A, etc), this limitation can be circumvented to some degree. Still, all the high-order interactions are collinear.

Electron-electron couplings

For each electron spin pair, a bilinear coupling tensor (combining isotropic, anisotropic, and antisymmetric exchange) as well as an isotropic biquadratic exchange coupling can be given. See also the reference page on the electron-electron interaction.

ee

1xN or Nx3 or 3Nx3 array of real

Principal value of the electron-electron interaction matrices. Each row corresponds to the diagonal of an interaction matrix (in its eigenframe). They are lexicographically ordered according to the indices of the electrons involved. If n is the number of electrons, there are N = n(n-1)/2 rows. E.g. for four electrons there have to be six rows with the principal values for the interaction of electrons 1-2, 1-3, 1-4, 2-3, 2-4, and 3-4, in this order. For two electrons, ee contains one row only.

E.g. for two S=1/2, the electron-electron interaction with isotropic and dipolar coupling is Sys.ee = Jiso + Jdip*[1 1 -2].

Sys.S = [1/2 1/2];     % two electrons
Sys.ee = [50 50 100];  % one coupling matrix

Sys.S = [1/2 1/2 1/2];                   % three electrons
Sys.ee = [50 50 100; 10 10 -30; 0 0 0];  % three coupling matrices

If only isotropic couplings are needed, one number per coupling is sufficient.

Sys.S = [5/2 5/2];      % two electron spins
Sys.ee = 10*30e3;       % one coupling (1-2)

Sys.S = [1/2 1/2 1/2];         % three electron spins
Sys.ee = [980 10 10];          % three coupling (1-2,1-3,2-3)

Sys.S = [1/2 1/2 1/2 1/2];     % four electron spins
Sys.ee = [10 0 0 5 -10 20];    % six couplings (1-2,1-3,1-4,2-3,2-4,3-4)

For accomodating antisymmetric exchange, the full 3x3 interaction matrices (instead of the 3 principal values and 3 Euler angles) can be specified. For a 2-electron system, ee is then a 3x3 array. For more electrons, the 3x3 matrices are stacked on top of each other.

Sys.S = [1/2 1/2];                   % two electrons
Sys.ee = [50 0 0;0 50 0; 0 0 100];   % one coupling matrix

Sys.S = [1/2 1/2 1/2];                   % three electrons
ee12 = [50 0 0; 0 50 0; 0 0 100];
ee13 = diag([10 10 -30]);
ee23 = zeros(3);
Sys.ee = [ee12;ee13;ee23];               % three coupling matrices
eepa

Nx3 array of real

Euler angles describing the orientation of the electron-electron interaction matrices specified in ee. Each row contains the Euler angles for the corresponding row in ee.

ee2

Contains the isotropic biquadratic exchange coupling, in MHz, for each pair of electron spins, The spin pairs are ordered as in ee.

Sys.S = [3/2 3/2];     % two electron spins
Sys.ee2 = 130;         % one biquadratic coupling 1-2

Sys.S = [3/2 3/2 3/2];   % three electron spins
Sys.ee = [130 150 190];  % couplings 1-2, 1-3, 2-3

Sys.S = [1 1 1 1];          % four electron spins
Sys.ee = [130 0 130 130 0 130]; % couplings 1-2, 1-3, 1-4, 2-3, 2-4, 3-4
EasySpin defines the biquadratic exchange term in the spin Hamiltonian as +j(S1.S2)2, with a plus sign. Sometimes, it is defined with a negative sign, so be careful when using literature values.
 
Line broadenings and strains

There is a number of fields by which line broadenings can be specified. lw and lwEndor are line widths (FWHM) which are used for convolution of the simulated spectrum. All others are so-called strains and describe Gaussian distributions in the associated spin Hamiltonian parameters.

For a full documentation of the line broadening fields in the spin system structure, see the page on line broadenings.