Simulating slow-motion cw EPR spectra

This tutorial explains how to simulate slow-motion cw EPR spectra of S=1/2 systems using EasySpin's function chili. For full information, see the reference page on chili.

It contains the following topics: There are the following advanced topics:
Invoking the simulation function chili

Slow-motion cw EPR spectra of S=1/2 systems are computed by the EasySpin function chili.

chili(Sys,Dyn,Exp)

It is called with three arguments. The first argument Sys tells chili all about the static parameters of the spin system, and the second argument Dyn contains parameters of the dynamics of the system. The third argument Exp gives the experimental parameters.

If no output argument is given, chili plots the computed spectrum. But it can also return one or two outputs. (Don't forget the semicolon at the end of the line to suppress output to the command window.)

Spec = chili(Sys,Dyn,Exp);
[Field,Spec] = chili(Sys,Dyn,Exp);

The outputs Field and Spec are vectors containing the magnetic field axis and the spectrum, respectively. If these are requested, chili does not plot the spectrum.

Doing a simulation only requires a few lines of code. A simple example is

Sys = struct('g',[2.008,2.006,2.003],'Nucs','14N','A',[20,20,85]);
Dyn = struct('lw',0.3,'tcorr',4e-8);
Exp = struct('mwFreq',9.5);
chili(Sys,Dyn,Exp);

The first line defines the spin system, a nitroxide radical with anisotropic g and A tensors. The second line gives the dynamic parameters of the radical (a residual linewidth and the rotational correlation time). The third line specifies experimental parameters, here only the microwave frequency (The magnetic field range is chosen automatically). The fourth line calls the simulation function, which plots the result. Copy and paste the code above to your Matlab command window to see the graph.

Of course, the names of the input and output variables don't have to be Sys, Dyn, Exp, Field and Spec. You can give them any name you like, as long as it is a valid Matlab variable name, e.g., FremySaltSolution or QbandExperiment. For convenience, thoughout this tutorial, we will use short names like Sys and Exp.

Specifying the static parameters

The first input argument specifies the static parameters of the paramagnetic molecule. It is a Matlab structure with various fields giving values for the spin system parameters.

Sys.g = [2.008,2.006,2.003];
Sys.Nucs = '14N';
Sys.A = [20,20,80];  % MHz

The first line defined the g tensor of the spin system via its three principal values. chili always assumes a single unpaired electron spin S=1/2.

The field Sys.Nucs contains a string giving all the magnetic nuclei in the spin system, a nitrogen-14 in the above example. Use a comma-separated list of isotope labels to give more than one nucleus. E.g., Sys.Nucs = '14N,1H,1H' specifies one nitrogen and two different protons. See the section on multinuclear systems about details of the slow-motion simulation in that case.

Sys.A gives the hyperfine couplings in MHz (Megahertz), with three principal values on a row for each of the nuclei listed in Sys.Nucs. The following defines a hydrogen atom with a 10 MHz coupling to the unpaired electron and a 13C atom with a 12 MHz coupling.

Sys.Nucs = '1H,13C';
Sys.A = [10 12]; % MHz

Remember that chili (and other EasySpin functions, too), take the hyperfine coupling values to be in MHz. Often, values for hyperfine couplings are given in G (Gauss) or mT (Milltesla), so you have to convert these values. For g = 2.00232, 1 G corresponds to 2.8025 MHz, and 1 mT corresponds to 28.025 MHz. The simplest way to convert coupling constants from magnetic field units to MHz is to use the EasySpin function mt2mhz:

A_MHz = mt2mhz(A_mT);    % mT -> MHz conversion
A_MHz = mt2mhz(A_G/10);  %  G -> MHz conversion (1 G = 0.1 mT)

The orientations of the tensors relative to the molecular frame are defined in terms of Euler angles in 3-element array (see the function erot.

Sys.gpa = [0 0 0];    % Euler angles for g tensor
Sys.Apa = [0 pi/4 0]; % Euler angles for A tensor

For more details, see the documentation on spin systems.

Dynamic parameters

The second input structure collects parameters relating to the dynamics of the paramagnetic molecules.

There are two possibilies to specify the rate of isotropic rotational diffusion: either by specifying tcorr, the rotational correlation time in seconds

Dyn.tcorr = 1e-7;   % 100 ns

or by specifying the principal value of the rotational diffusion tensor (in Hertz)

Dyn.Diff = 1e9;  % 1 GHz
The two are related via
Diff = 1/6/tcorr;
The input field Diff can be used to specify an axial rotational diffusion tensor, by giving a 2-element vector with first the perpendicular and the the parallel principal value:
Dyn.Diff = [1 2]*1e8;  % in Hertz

For the reliability of the simulation algorithm it is strongly recommended to always use a residual line width to be given in Dyn.lw

Dyn.lw = 10;   % MHz

Note that the unit of this residual line width is MHz and not mT, like in the functions garlic and pepper.

chili is also capable of simulating spectra including Heisenberg spin exchange. The effective exchange frequency (in Hertz) is specified in Dyn.Exchange, e.g.
Dyn.Exchange = 1e8;     % 100 MHz

A short example of an nitroxide radical EPR spectrum with exchange narrowing is

Nx = struct('g',[2.0088, 2.0061, 2.0027],'Nucs','14N','A',[16 16 86]);
Par = struct('mwFreq',9.5,'CenterSweep',[338, 10]);
Dyn = struct('tcorr',1e-7,'lw',0.3,'Exchange',1e8);
chili(Nx,Dyn,Par);
Experimental settings

All experimental settings are given in the second input argument Exp, again a Matlab structure. There are five possible fields:

Exp.mwFreq = 9.5;              % GHz, mandatory

Exp.CenterSweep = [330 20];    % mT, optional, default: automatic
Exp.Range = [320 340];         % mT, optional, default: automatic

Exp.Harmonic = 1;              % optional, default: 1
Exp.nPoints = 1024;            % optional, default: 1024

Exp.mwFreq gives the spectrometer frequency in GHz. It is the only field that has to be specified, all others are optional.

There are two ways to specify the magnetic field sweep range. Either the center and the sweep width (in mT) are given in Exp.CenterSweep, or the lower and upper limit of the sweep range (again in mT) are given in Exp.Range. In many cw EPR spectrometers, the field range is specified using a center field and a sweep width, so Exp.CenterSweep is usually the more natural choice.

Exp.CenterSweep and Exp.Range are only optional. If both are omitted, chili automatically chooses a field range large enough to accomodate the full spectrum. If both are given, chili takes the values given in Exp.CenterSweep and ignores those in Exp.Range.

The optional field Exp.Harmonic specifies the detection harmonic. It has three possible settings:

Exp.Harmonic = 0;  % absorption spectrum
Exp.Harmonic = 1;  % first-derivative spectrum (default)
Exp.Harmonic = 2;  % second-derivative spectrum

The default value for Exp.Harmonic is 1. Note that Exp.Harmonic>0 only computes the appropriate derivative of the absorption spectrum. Broadening effects due to strong field modulation have to be added separately, see below.

Yet another optional field is Exp.nPoints, giving the number of points in the simulated spectrum. If it is not given, the default 1024 is assumed. You can set any value, unlike EPR spectrometers, where usually only powers of 2 are available (1024, 2048, 4096, 8192).

Simulation parameters

The third input structure, Opt, collects parameters related to the simulation algorithm.

The field Verbosity specifies whether chili should print information about its computation into the Matlab command window. By default, its value is set to 0, so that chili is silent. It can be switched on by giving

Opt.Verbosity = 1;     % log information

Another important option is LLKM. It specifies the number of orientational basis functions used in the simulation. For spectra in the fast and intermediate motion regime, the preset values don't have to be changed. However, close to the rigid limit, the default settings give too small a number. LLKM has to be increased:

Opt.LLKM  = [24 20 10 10];

To see the values of LLKM that chili is using, set Opt.Verbosity=1, as described above.

Systems with more than one nucleus

chili is not capable of simulating a slow-motional cw EPR spectrum of systems with more than one nucleus.

However, if the hyperfine coupling of one nucleus is significantly larger than those of the other nuclei, chili uses an approximate procedure: The slow-motional spectrum simulated using only the electron spin and the nucleus with the dominant hyperfine coupling is convoluted by the isotropic splitting pattern due to all other nuclei. This post-convolution technique gives resonable results.

A simple example is

CuPc = struct('g',[2.0525 2.0525 2.1994],'Nucs','63Cu,14N','n',[1 4]);
CuPc.A = [-54 -54 -608; 52.4 41.2 41.8];
Dynamics = struct('tcorr',10^-7.35,'lw',3);
Exp = struct('mwFreq',9.878,'CenterSweep',[330 120],'nPoints',5e3);
Opt.LLKM = [36 30 8 8];
chili(CuPc,Dynamics,Exp,Opt);