Simulation of crystal spectra

EasySpin can simulate powder spectra as well as single-crystal spectra. For powder spectra, it is only necessary to specify the spin system, incl. the orientations of all the tensors within the molecule or paramagnetic center, and basic experimental parameters such as microwave frequency and magnetic field sweep range. For crystal spectra, EasySpin needs some additional information: (a) the symmetry of the crystal, (b) the orientation of the molecule or paramagnetic center within the crystal, (c) the orientation of the crystal relative to the spectrometer.

In the following, we show how to simulate a crystal spectrum, and how to simulate a series of spectra obtained by rotating a crystal in the spectrometer.

To understand the following, make sure you have read the documentation on the various frames that are used by EasySpin: the lab frame, the crystal frame, the molecular frame, and the tensor frames. This understanding is very important.

Everything below is applicable to all solid-state simulation functions: pepper (for cw EPR), salt (for ENDOR), saffron (pulse EPR). It also is applicable to functions that compute resonance frequencies and fields, such as resfields etc.

Single-crystal spectrum

Let's start with a simple spin system and a simple cw-EPR experiment. The following simulates the powder spectrum

clear
Sys.g = [2.0 2.1 2.2];
Sys.lw = 1;
Exp.mwFreq = 9.5;
Exp.Range = [300 350];
pepper(Sys,Exp);

In order to simulate a crystal spectrum, you need to include three additional pieces of information: (1) the symmetry of the crystal, (2) the orientation of the molecule or paramagnetic center within the crystal, (3) the orientation of the crystal in the spectrometer.

  1. Use Exp.CrystalSymmetry to give the crystal symmetry. It can be the symbol for the space group (such as 'P212121'), the number of the space group (between 1 to 230), or the symbol of the point sub-group of the space group (such 'mmm' or 'C2h'). If you omit Exp.CrystalSymmetry, it is assumed to be the simplest space group 'P1', with one center per unit cell.
  2. Use Exp.MolFrame to specify the orientation of the molecule (paramagnetic center) within the crystal. If there are multiple symmetry-related sites, pick one of them. Exp.MolFramegives the Euler angles for the transformation from the crystal frame to the molecular frame. Check out the documentation on frames for details on this. If you omit Exp.MolFrame, then it is assumed to be [0 0 0]. This means that the molecular frame is assumed to be collinear with the crystal frame.
  3. Use Exp.CrystalOrientation to give the orientation of the crystal in the spectrometer. This field gives the three Euler angles for the transformation from the crystal frame to the laboratory frame. See the page on frames for details.
So, here is a full example:
Exp.CrystalSymmetry = 'P21/c';        % space group #14
Exp.MolFrame = [0 0 0];               % molecular frame aligned with crystal frame
Exp.CrystalOrientation = [0 pi/4 0];  % crystal frame tilted against lab frame
pepper(Sys,Exp);

In space group P21/c, there are four sites per unit cell. Two each are magnetically equivalent, so one expects a maximum of two lines in the spectrum. With the settings as above, you will always see only a single line in the spectrum, no matter how you align the crystal in the lab. The reason is that the g tensor frame is collinear with the crystal frame, so all four sites have the same EPR spectrum.

In order to see two lines, you need to have a tilt between the g tensor frame and the crystal frame. This can be set either in Exp.MolFrame or in Sys.gFrame. The first will tilt the molecular frame of the spin center, and thereby tilt all tensors of the molecule, relative to the crystal. The second will only tilt the g tensor frame (and not other tensors of the spin center) relative to the molecular frame. (Refer to the reference page on frames for details.)

Exp.MolFrame = [20 40 10]*pi/180;
pepper(Sys,Exp);
Crystal rotations

In order to simulate a series of spectra that result from the rotation of a crystal in the spectrometer, you can make use of the function rotatecrystal, which implements the crystal rotation.

Let's start with a spin system and an initial crystal orientation

clear
Sys.g = [2.0 2.1 2.2];
Sys.lw = 1;
Exp.mwFreq = 9.5;
Exp.Range = [300 350];
Exp.CrystalSymmetry = 130;
Exp.MolFrame = [10 60 -34]*pi/180;    % molecular frame tilted within crystal
cori0 = [0 40 0]*pi/180;              % initial crystal orientation in lab frame
Exp.CrystalOrientation = cori0;
pepper(Sys,Exp);

This will give the spectrum for the initial crystal orientation. Now use rotatecrystal to calculate new Euler angles of the rotated crystal. You need to supply the rotation axis (in lab coordinates) and the rotation angle. Then, use the results in Exp.CrystalOrientation

nRot_L = [1;0;0];                         % rotation axis = x axis of lab frame
rho = 10*pi/180;                          % rotation angle
cori = rotatecrystal(cori0,nRot_L,rho);   % rotate crystal by rho around nRot
Exp.CrystalOrientation = cori;
pepper(Sys,Exp);

This will give the spectrum of the crystal rotated by rho around the rotation axis nL starting from its initial orientation given in cori0.

You can simulate a series of crystal spectra that result from successive small-step rotations around the same rotation axis in one go. Just start with an array of rho angles and generate a series of Euler angle sets using rotatecrystal.

cori0 = [0 40 0];          % initial crystal orientation
nL = [1;0;0];              % rotation axis along lab x axis
rho = (0:15:180)*pi/180;   % 15 degree increments
cori = rotatecrystal(cori0,nL,rho);
cori now contains one row of Euler angles for each crystal orientation. Next, set Exp.CrystalOrientation and simulate all spectra in one go. Make sure to ask EasySpin to return them separately, via Opt.Output. You can plot them using stackplot.
Exp.CrystalOrientation = cori;   % setting a series of crystal orientations
Opt.Output = 'separate';         % request each crystal spectrum separately
[x,y] = pepper(Sys,Exp,Opt);
stackplot(x,y);

Remember, the key in using this functionality successfully is a clear understanding of the frames used by EasySpin, and how to specify their relative orientations using Euler angles.

Site-selective simulations

In a crystal simulation, EasySpin will first determine the number of magnetically equivalent sites in the crystal from the symmetry given in Exp.CrystalSymmetry. Then, it will simulate the EPR spectra of all sites and sum them up to obtain the overall crystal spectrum.

Occasionally, it is useful to look at the EPR spectra of the single sites separately. You can tell EasySpin to simulate only a specific subset of sites (e.g. just one) by specifying the site index in Opt.Sites. This field should contain a list of site indices. The number of sites depends on the space group given in Exp.CrystalSymmetry. E.g. the following set limits a crystal simulation to site 3 of the 4 magnetically distinct sites in crystal of space group no. 47.

Exp.CrystalSymmetry = 47;  % space group Pmmm
Opt.Sites = [1 3];         % simulate only site 3
If Opt.Sites is empty or not given, all sites are included. In powder simulations, Opt.Sites is ignored.