- EasySpin
- Documentation
- Publications
- Website
- Forum

To simulate EPR spectra, EasySpin needs to know about the relative orientations of the various tensors within a paramagnetic molecule or center, of the molecule within a crystal, and of the crystal within the spectrometer in the lab. For this purpose, EasySpin defines a set of standard cartesian coordinate frames. As a user, you specify the relative orientation between these frames in order to describe the geometry of your sample and your experiment.

The figure below summarizes EasySpin's frames. There are four frame types: the lab frame, the crystal frame, the molecular frame, and a set of tensor frames (one for each tensor). The orientation of the crystal in the lab frame is given in `Exp.CrystalOrientation`

, the orientation of the molecule in the crystal frame is given in `Exp.MolFrame`

, and the orientations of the various tensors in the molecular frame are given in `Sys.gFrame`

, `Sys.AFrame`

, `Sys.DFrame`

, `Sys.QFrame`

, `Sys.eeFrame`

, and `Sys.DiffFrame`

.

In the following, we explain at how these frames are defined in EasySpin and show how you can specify the relative orientations between them. All frames are right-handed cartesian with orthonormal axes.

- Lab frame
- Crystal frame
- Molecular frame
- Tensor frames
- Tensor orientations within the molecule
- Molecule orientation within the crystal
- Crystal orientation within the spectrometer

The *lab frame* L is fixed in the laboratory. Its three unit vectors are denoted xL, yL, zL. By universal convention, zL is along the static magnetic field. The directions of xL and yL depend on the microwave excitation mode:

- For a standard perpendicular-mode EPR resonator setup, xL is along the linearly oscillating microwave magnetic field. yL is perpendicular to both zL and xL.
- In the special case of a parallel-mode EPR resonator setup, you are free to choose how yL and xL are related to your spectrometer - as long as they are perpendicular to zL.
- In the unusual case of a resonator-free beam transmission setup, yL is in the plane of the microwave propagation vector k and perpendicular to zL. xL is perpendicular to both yL and zL.

The *crystal frame* C is a crystal-fixed frame with orthonormal unit vectors xC, yC, zC. For the crystal frame, EasySpin follows the conventions prevalent in X-ray crystallography where the axis convention depends on the space group of the crystal:

- 1-2 (triclinic; point groups C1, Ci=S2): xC, yC and zC are arbitrary.
- 3-15 (monoclinic; point groups C2, Cs=C1h, C2h): For short Hermann-Mauguin symbols (like P2, Cm, P21/m, etc), yC is along the unique axis. For full Hermann-Mauguin symbols (like P211, P121, P112, etc), the space group symbol defines the unique axis (P211: xC, P121: yC, P112: zC, etc). In all cases, the other two axes are arbitrary.
- 16-74 (orthorhombic; point groups D2, C2v, D2h): xC, yC and zC are along the three two-fold axes. The assignment is arbitrary.
- 75-88 (tetragonal; point groups C4, S4, C4h): zC is along the four-fold axis. xC and yC are arbitrary.
- 89-142 (tetragonal; point groups D4, C4v, D2d, D4h): zC is along the four-fold axis. xC is along one of the two-fold axes.
- 143-148 (tetragonal; point groups C3, C3i=S6): zC is along the three-fold axis. xC and yC are arbitrary.
- 149-167 (trigonal; point groups D3, C3v, D3d): zC is along the three-fold axis. xC is along one of the two-fold axes.
- 168-176 (hexagonal; point groups C6, C3h, C6h): zC is along the six-fold axis. xC and yC are arbitrary.
- 177-194 (hexagonal; point groups D6, C6v, D3h, D6h): zC is along the six-fold axis, and xC is along one of the two-fold axes.
- 195-206 (cubic; point groups T, Th): xC, yC and zC are along the three two-fold axes. The assignment is arbitrary.
- 207-230 (cubic; point groups O, Td, Oh): xC, yC and zC are along the three four-fold axes. The assignment is arbitrary.

The *molecular frame* M is a reference frame that is fixed in the molecule or paramagnetic center. Its three unit axes are denoted xM, yM, and zM. You are free to choose the orientation of the molecular frame, but it's best to align it with the local symmetry of the molecule or paramagnetic center. For example, put the zM axis along the plane normal of an aromatic radical or a planar transition metal complex. If you import data from quantum chemistry programs like ORCA, then you can take the frame from those calculations as the molecular frame. All imported atom coordinates and calculated tensors will be defined in this frame. EasySpin can import ORCA calculation results.

Last, there are the *tensor frames* T, with unit vectors xT, yT, zT. There is one frame for each tensor in the spin Hamiltonian, such as g, A, D, Q and tensors, as well as the rotational diffusion tensor. The tensor frame for a given tensor is its eigenframe. Its axes are aligned with the principal axes of the tensor. The particular order of principal values, and therefore their assignment to xT, yT, and zT, is arbitrary and up to you.

Next, let's look at how you can tell EasySpin about the relative orientations between these frames.

In paramagnetic centers, there often exists some local symmetry. An aromatic molecule has a unique plane normal axis, and square-planar transition metal complex has a four-fold symmetry axis perpendicular to the plane. For such a center, atomic coordinates and tensor orientations are best expressed in a coordinate reference frame that aligns with these local symmetry elements. However, any molecule-fixed frame can be chosen as a reference frame. This coordinate frame is the *molecular reference frame*, or *molecular frame* for short. The corresponding axes are labeled xM, yM, and zM.

The orientation of every tensor you specify in EasySpin is related to the molecular reference frame. If the tensor is fully aligned with the molecular frame, then it is enough to simply give the three principal values of the tensor

Sys.g = [2.0 2.1 2.2];

For EasySpin, this means that the tensor axes - let's call them xT, yT, and zT - align with the molecular frame. The first g principal axis xT, with the principal value 2.0, is along xM, the second (2.1, yT) is along yM, and the third (2.2, zT) is along zM.

If the tensor is tilted with respect to the molecular frame, you can specify the tilt in terms of three Euler angles that describe the transformation from the *molecular frame to the tensor frame* (M→T). For a g tensor, specify this in the field `Sys.gFrame`

. Here is an example:

Sys.g = [2.0 2.1 2.2]; Sys.gFrame = [30 27 81]*pi/180; % Euler angles, molecular frame -> g frame

This means that to transform the molecular frame (M) to the g tensor frame (T), you first rotate the molecular frame by 30 degrees around zM, then by 27 degrees around the resulting y axis, and then by 81 degrees around the resulting z axis. It's important to realize that you rotate the *frame*, and not the tensor. The tensor stays untouched.

To convert this M→T transformation to the associated T→M transformation (as used in old EasySpin versions prior to 5.0 by the obsolete `Sys.gpa`

), just invert the order and the sign of the three Euler angles.

a_M2T = [30 27 81]*pi/180; % Euler angles for M->T transformation a_T2M = [-81 -27 -30]*pi/180; % Euler angles for corresponding T->M transformation Sys.gFrame = a_M2T; % EasySpin 5 % Sys.gpa = a_T2M; % Obsolete! (valid prior to EasySpin 5)

This works similarly for the other tensors. For hyperfine tensors, use `Sys.AFrame`

, for zero-field tensors `Sys.DFrame`

, for quadrupole tensors `Sys.QFrame`

, and for electron-electron interaction tensors `Sys.eeFrame`

.

If you want to get the coordinates of the tensor principal axes in molecular frame coordinates, use the following:

Sys.gFrame = [30 27 81]*pi/180; % Euler angles for M->T transformation R_M2T = erot(Sys.gFrame) % corresponding M->T transformation matrix

R_M2T = -0.3731 0.9251 -0.0710 -0.8404 -0.3045 0.4484 0.3932 0.2270 0.8910

The first *row* is xT, the second one is yT, and the third one is zT, all expressed in molecular frame coordinates:

% tensor axes in molecular coordinates xT_M = R_M2T(1,:).'; yT_M = R_M2T(2,:).'; zT_M = R_M2T(3,:).';

Vice versa, the first *column* is xM, the second column is yM, and the third column is zM, all expressed in tensor frame coordinates.

% molecular axes in tensor coordinates xM_T = R_M2T(:,1); yM_T = R_M2T(:,2); zM_T = R_M2T(:,3);

Prior to version 5, EasySpin used `Sys.gpa`

, `Sys.Apa`

etc. instead of `Sys.gFrame`

, `Sys.AFrame`

etc. To update old scripts, invert the signs of all the angles, and reverse the order. So the old `Sys.gpa = [10 -20 34]*pi/180;`

is now
`Sys.gFrame = [-34 20 -10]*pi/180;`

.

In crystals, the paramagnetic centers rarely align with the crystal axes. Therefore, it is often necessary to specify a tilt between the crystal frame (C) and the molecular frame (M). In EasySpin, you can do this with `Exp.MolFrame`

. This field takes a set of three values that specify the Euler angles (in radians) for the transformation of the *crystal frame to the molecular frame* (C→M).

Exp.MolFrame = [33 12 -76]*pi/180; % Euler angles for C->M transformation

This means that to transform the crystal frame (C) to the molecular frame (M), you first rotate by 33 degrees around zC, then by 12 degrees around the resulting y axis, and then by -76 degrees around the resulting z axis. Again, this transforms the *frames*, but leaves the physical objects (crystal and molecule) untouched.

To get the vectors xM, yM, zM in crystal coordinates (we'll denote these as xM_C, yM_C, zM_C), use erot to calculate the corresponding transformation matrix:

a_C2M = [33 12 -76]*pi/180; % Euler angles for C->M transformation R_C2M = erot(a_C2M) % corresponding transformation matrix

R_C2M = 0.7269 -0.6849 -0.0503 0.6642 0.7198 -0.2017 0.1744 0.1132 0.9781

The three *columns* give the crystal axes as vectors expressed in molecular frame coordinates.

% crystal axes in molecular coordinates xC_M = R_C2M(:,1); yC_M = R_C2M(:,2); zC_M = R_C2M(:,3);

The three *rows* give the molecular axes vectors expressed in crystal frame coordinates.

% molecular axes in crystal coordinates xM_C = R_C2M(1,:).'; yM_C = R_C2M(2,:).'; zM_C = R_C2M(3,:).';

To describe the alignment of a crystal in the spectrometer, you need to give the relative orientation between the crystal frame (C) and the lab frame (L). In EasySpin, you can do this using the field `Exp.CrystalOrientation`

. This field takes a set of three values that specify the Euler angles (in radians) for the transformation of the *crystal frame to the lab frame* (C→L).
Here is a simple example.

Exp.CrystalOrientation = [30 45 10]*pi/180; % Euler angles for C->L transformation

This indicates that the crystal frame (xC,yC,zC) has to be rotated by 30 degrees around its zC axis, followed by a rotation by 45 degrees around the resulting new y axis, followed by a 10 degree rotation around the resulting z axis, to bring it into overlap with the lab frame (xL,yL,zL).

`Exp.CrystalOrientation`

describes the crystal-to-lab frame transformation (C→L). In order to find the transformation that works in reverse, from the crystal to the lab frame (L→C), use the following: First, determine the Euler angles for the C→L transformation. Then, to get the corresponding L→C transformation, invert the order and the signs of the angles. Here is an example:

a_C2L = [72 15 -108]*pi/180; % angles for lab -> crystal transformation a_L2C = [+108 -15 -72]*pi/180; % angles for corresponding crystal -> lab transformation Exp.CrystalOrientation = a_C2L; % EasySpin expects a lab -> crystal transformation

In order to find out how the crystal axes lie in the spectrometer, or how the lab axes lie relative to the crystal frame, use EasySpin's erot to get the associated transformation matrix. Here is an example:

a_C2L = [10 45 0]*pi/180; % Euler angles for C->L transformation Exp.CrystalOrientation = a_C2L; R_C2L = erot(Exp.CrystalOrientation) % corresponding transformation matrix

R_C2L = 0.6964 0.1228 -0.7071 -0.1736 0.9848 0 0.6964 0.1228 0.7071In this matrix, the three columns are the three crystal axis vectors xC, yC, zC, represented in lab coordinates. Conversely, the three rows are the lab axis vectors xL, yL, zL, represented in crystal coordinates.

% crystal axes in lab coordinates xC = R_C2L(:,1); yC = R_C2L(:,2); zC = R_C2L(:,3); % lab axes in crystal coordinates xL = R_C2L(1,:).'; yL = R_C2L(2,:).'; zL = R_C2L(3,:).';