Simulating isotropic and fast-motion cw EPR spectra

This tutorial explains how to simulate isotropic and fast-motion cw EPR spectra of radicals using EasySpin's function garlic. It is assumed that you have a working knowledge of Matlab.

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

Solution cw EPR spectra of radicals are computed by the EasySpin function garlic.

garlic(Sys,Exp)

It is called with two arguments. The first argument Sys tells garlic all about the spin system, and the second argument Exp gives the experimental parameters.

If no output argument is given, garlic 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 = garlic(Sys,Exp);
[Field,Spec] = garlic(Sys,Exp);

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

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

Sys = struct('g',2,'Nucs','1H','n',2,'A',15,'lw',0.05);
Exp = struct('mwFreq',9.5);
garlic(Sys,Exp);

The first two lines define the spin system (a radical with an unpaired electron spin and two equivalent 1H) and the experimental parameters (X band spectrometer frequency). The details will be explained below. The third 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, 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 the short names Sys and Exp.

Specifying the spin parameters

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

Sys.g = 2.006;
Sys.Nucs = '1H';
Sys.A = 15;  % MHz
Sys.n = 2;
Sys.lw = 0.05;  % mT

The first line defines the isotropic g value of the spin system, in this case 2.006. garlic 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 proton in the above example. Use a comma-separated list of isotope labels to give more than one nucleus. E.g., Sys.Nucs = '1H,1H,14N' specifies two different protons and one nitrogen.

Sys.A gives the hyperfine coupling in MHz (Megahertz), 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 garlic (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)

Sys.n gives the number of equivalent nuclei. So

Sys.Nucs = '1H';
Sys.n = 1;
Sys.A = 5.3;

indicates a single proton, whereas

Sys.Nucs = '1H';
Sys.n = 2;
Sys.A = 5.3;

specifies two equivalent protons, i.e. protons with identical hyperfine coupling constants. The statements

Sys.Nucs = '1H,1H';
Sys.n = [4 4];
Sys.A = [-14 -5];

specify two groups of protons with 4 equivalent nuclei in each (as in a naphthalene radical anion or cation).

Sys.lw is discussed below in the section about line broadenings.

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, garlic automatically chooses a field range large enough to accomodate the full spectrum. If both are given, garlic 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).

Line broadenings

Lines in an isotropic cw EPR spectrum are not infinitely narrow, the have a certain linewidth. This linewidth can be supplied to garlic in the lw field of the spin system structure, in mT.

Sys.lw = 0.05; % mT
This defines the FWHM (full width at half height) of the absorption Lorentzian line shape of the lines in the spectrum. Note that this is NOT the peak-to-peak line width. To specify the peak-to-peak width, use the conversion
% conversion for Lorentzian line widths
lw_FWHM = lw_pp * sqrt(3);  % sqrt(3) = 1.732...

Lorentzian lines that are broadened by a Gaussian contribution (so-called Voigtian line shapes) are also available. In such a case, use a 2-element vector

Sys.lw = [0.05 0.01]; % mT

The first element is the Lorentzian FWHM, the second is the Gaussian FWHM. To convert between FWHM and peak-to-peak Gaussian line widths, use

% conversion for Gaussian line widths
lw_FWHM = lw_pp * sqrt(2*log(2));  % sqrt(2*log(2)) = 1.177...

For ways to model line widths when the anisotropies of the magnetic interactions don't average out completely, see the next section.

Simulating spectra in the fast-motional regime

If the tumbling of paramagnetic molecules in solution is fast compared to the EPR time scale, but not orders of magnitude faster, dynamic effects appear in the spectrum: Different lines will have different line widths, all of them broader than in the isotropic spectrum. This is the so-called fast-motional regime.

If the tumbling is assumed isotropic and governed by Brownian movement, the only parameter necessary to characterize the speed of tumbling is the rotational correlation time. It can be given in the spin system structure, in units of seconds.

Sys.tcorr = 1e-10;   % rotational correlation time, in seconds.

The origin of the line broadenings lies in the anisotropy of the magnetic interactions, so garlic has to be supplied with full g and A tensor information. This includes the principal values and the orientation of the tensors.

Sys.g = [2.005 2.003 2.007];
Sys.Nucs = '14N';
Sys.A = [17 17 84];

Sys.g contains the three principal values of the g tensor. Sys.A contains the three principal values of the hyperfine tensor. If more than one nucleus is present, one 3-element row per nucleus has to be given. E.g.

Sys.Nucs = '14N,1H';        % two nuclei
Sys.A = [17 17 84; 5 5 2];  % 2x3 array

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

All-zero values can of course be omitted.

Remember that for fast-motion simulations of systems with more than one nucleus, Sys.n cannot be used. Equivalent nuclei have to be specified one at a time.

garlic doesn't compute the fast-motion linewidths: It calls fastmotion. After the spectrum with the fast-motion linewidths is constucted, garlic convolutes it using the Lorentzian (and possibly Gaussian) FWHM from Sys.lw. This way, residual broadenings are easily included.

In conclusion, an illustrative example of a nitroxide radical in the fast-motion regime

A = mt2mhz([5.8 5.8 30.8]/10);
Sys = struct('g',[2.0088 2.0061 2.0027],'Nucs','14N','A',A);
Sys.tcorr = 5e-9;
Exp = struct('mwFreq',9.5);
garlic(Sys,Exp);
Adding the effect of the field modulation amplitude

In cw EPR experiments, the static magnetic field is modulated with a modulation amplitude given by the operator. If it is chosen too large, the spectral line shapes are distorted. To add this effect ot the simulated spectrum, the EasySpin function pseumod can be used.

For this, the absorption spectrum has to be simulated, by setting Exp.Harmonic=0. A subsequent call of pseumod generates the first-harmonic spectrum. Here an example with strong overmodulation:

Sys = struct('g',2,'Nucs','14N','A',[30],'lw',0.05);
Exp = struct('mwFreq',9.7,'Harmonic',0);
[B,spc] = garlic(Sys,Exp);

ModAmp_pp = 0.25;   % peak-to-peak modulation amplitude, in mT
spc_mod = pseumod(B,spc,ModAmp_pp);

plot(B,spc_mod);

The input arguments to pseumod are the magnetic field axis B and the absorption spectrum spc (both returned by garlic), as well as the peak-to-peak modulation amplitude in mT.