Compute cw EPR resonance line positions (fields or frequencies), line amplitudes and line widths.
Pos = resfields(Sys,Param) Pos = resfields(Sys,Param,Opt) [Pos,Amp] = resfields(...) [Pos,Amp,Wid] = resfields(...) [Pos,Amp,Wid,Trans] = resfields(...) [Pos,Amp,Wid,Trans,Grad] = resfields(...)
The usage of resfields_perturb
, resfreqs_matrix
, and resfreqs_perturb
is identical.
resfields
and resfields_perturb
compute resonance fields, line intensities and line widths for field-swept cw EPR spectra. resfields
using matrix diagonalization and energy level diagram modelling, and resfields_perturb
uses perturbation theory.
resfreqs_matrix
and resfreqs_perturb
compute resonance frequencies, line intensities and line widths for frequency-swept cw EPR spectra. resfreqs_matrix
using matrix diagonalization, and resfreqs_perturb
uses perturbation theory.
Sys
is a spin system structure containing all parameters of the spin system.
Params
is a structure containing the following experimental parameters.
mwFreq
resfields
and resfields_perturb
only.)
Field
resfreqs
and resfreqs_perturb
only.)
CenterSweep
[center sweep]
of the range which is searched for resonances. For field sweeps, the units are mT. For frequency sweeps, the units are GHz. Only resonances within this range are computed.
CenterSweep
or in Range
. If both are given, CenterSweep
has precedence.
Range
[sweepmin sweepmax]
of the range which is searched for resonances. For field sweeps, the units are mT. For frequency sweeps, the units are GHz. Only resonances within this range are computed.
CenterSweep
or in Range
. If both are given, CenterSweep
has precedence.
Temperature
This field specifies the temperature of the spin system in the EPR experiment, in kelvin. E.g., Exp.Temperature = 298
corresponds to room temperature. If given, populations are computed for all energy levels assuming thermal (Boltzmann) equilibrium, and the population differences between two levels are included in the line intensities of the corresponding EPR transition. If not given (or set to NaN
), the populations are not calculated, and all transitions are assumed to have equal population difference of 1.
To specify non-equilibrium populations, use the spin system field Sys.initState
. See the user guide on spin polarization.
SampleFrame
An Nx3 array that specifies the sample orientations for which the EPR spectrum should be computed. Each row of SampleFrame
contains the three Euler rotation angles that transform the lab frame to the sample/crystal frame.
Exp.SampleFrame = [0 0 0]; % sample/crystal frame aligned with lab frame Exp.SampleFrame = [0 pi/2 0]; % sample/crystal frame tilted relative to lab frame Exp.SampleFrame = [0 pi/2 pi/4]; % sample/crystal frame tilted relative to lab frame Exp.SampleFrame = [0 0 0; 0 pi/2 pi/4]; % two samples/crystals
CrystalSymmetry
Param.CrystalSymmetry = 'P21/c'; % space group symbol Param.CrystalSymmetry = 11; % space group number (between 1 and 230) Param.CrystalSymmetry = 'C2h'; % point group, Schönflies notation Param.CrystalSymmetry = '2/m'; % point group, Hermann-Mauguin notation
When CrystalSymmetry
is given, all symmetry-related sites in the crystal are included in the calculation. If CrystalSymmetry
is not given, space group 1 (P1, point group C1, one site per unit cell) is assumed.
MolFrame
The three Euler angles, in radians, for the transformation of the crystal frame to the molecular frame. Use this field when specifying a crystal containing spin systems that are tilted with respect to the crystal frame. E.g. Param.MolFrame=[0,pi/4,0]
tilts the x and z axis of the spin system's molecular frame (xM, zM), relative to the sample frame (xS,yS,zS).
mwMode
Specifies the microwave excitation mode. Possible settings are
Exp.mwMode = 'perpendicular'; % default Exp.mwMode = 'parallel'; Exp.mwMode = {k pol};
Resonator experiments:
For conventional experiments with linearly polarized microwave in a resonator, use 'perpendicular'
(default) or 'parallel'
. In the perpendicular mode, the microwave magnetic field B1 is oscillating along the laboratory x axis (xL), perpendicular to the external static magnetic field B0. In the parallel mode, it is oscillating along the laboratory z axis (zL), parallel to B0. The perpendicular mode is by far the most common.
Beam experiments:
For experiments with a microwave (or THz) beam, use Exp.mwMode = {k pol}
. k
specifies the propagation direction, in one of three possible ways: (i) a letter code for the direction, e.g. 'y'
, 'z'
, 'xy'
; (ii) a 3-element cartesian vector, e.g. [0;1;0]
specifies the lab y axis; (iii) two polar angles [phi_k theta_k]
that specify the orientation. theta_k
is the angle between the microwave propagation direction and the lab z axis, and phi_k
is the angle between the lab x axis and the projection of the propagation vector onto the lab xy plane. For example, [pi/2 pi/2]
gives the lab y axis.
For linearly polarized mw irradiation, additionally provide pol
, the polarization angle of the radiation, in radians. To calculate the microwave propagation direction nk
and the B1 direction nB1
from k
and pol
, use
k = 'y'; % propagation along y lab axis pol = -pi/2; % B1 along x lab axis [phi,theta] = vec2ang(k); % convert to angles [nB1,~,nk] = erot([phi,theta,pol],'rows')
For unpolarized excitation, set pol='unpolarized'
. For circularly polarized radiation, set pol='circular+'
or pol='circular-'
, depending on the sense of rotation.
lightBeam
Specifies mode of photoexcitation. If photoexcitation is present, photoselection weights will be calculated and included into the spectral line intensities. For this, the transition dipole moment direction must be provided in Sys.tdm
(see here).
Possible settings for lightBeam
are
Exp.lightBeam = ''
- no photoexcitation (default)
Exp.lightBeam = 'perpendicular'
- polarized light incident along the lab y direction (perpendicular to B0) with E-field along the lab x direction (also perpendicular to B0)
Exp.lightBeam = 'parallel'
- polarized light incident along the lab y direction (perpendicular to B0) with E-field along the lab z direction (parallel to B0)
Exp.lightBeam = 'unpolarized'
- unpolarized light incident along the lab y direction (perpendicular to B0) with E-field uniformly distributed in the lab xz plane
Exp.lightBeam = {k alpha}
- light incident along propagation direction k
with polarization given by alpha
. There are three ways to specify k
: (i) a letter code for the direction, e.g. 'y'
, 'z'
, 'xy'
; (ii) a 3-element cartesian vector, e.g. [0;1;0]
specifies the lab y axis; (iii) two angles [phi_k theta_k]
that specify the orientation. theta_k
is the angle between the propagation direction and the lab z axis, and phi_k
is the angle between the lab x axis and the projection of the propagation vector onto the lab xy plane. For example, [pi/2 pi/2]
gives the lab y axis. alpha
is the polarization angle, in radians. To represent an unpolarized beam, set alpha=NaN
.
lightScatter
Contribution of isotropically scattered light to photoexcitation (see lightBeam
), as a value between 0 and 1. 0 means no isotropic contribution (only direct excitation by polarized or unpolarized beam), 1 indicates 100 percent isotropic contribution (essentially beam direction and polarization have no effect).
The structure Opt
contains computational options. The separate fields as well as the structure as a whole are optional. If a field or the structure are missing, the function defaults to standard settings.
The fields are different for resfields
/resfreqs_matrix
(matrix diagonalization function) and resfields_perturb
/resfreqs_perturb
(perturbation theory function).
For resfields
and resfreqs_matrix
, the option fields are
Freq2Field
, 1
(default) or 0
1
indicates yes, 0
indicates no. The factor is the generalized 1/g Aasa-Vänngård factor. This setting is ignored for frequency-swept spectra.
Transitions
'all'
resfields
uses them and skips its
automatic transition selection scheme. State pairs are specified in Transitions(k,:)
by the level numbers which start with 1 for the
lowest-energy level. E.g., Opt.Transitions=[1 3; 2 6; 4 6];
specifies three transitions, where the third is between levels 4 and 6.
'all'
is given, all transitions are included.
Threshold
1e-4
. The pre-selection is an approximate procedure, and it might miss transitions for complicated spin systems. In these cases, setting it to zero will include all transitions in the simulation. After the intensities of all included transitions are computed, the transition are screened again against this threshold in a post-selection step. If transitions are specified manually in Opt.Transitions
, Opt.Threshold
is ignored.
Sites
Opt.Sites
is empty or not given, all sites are included. If given, it must be a list of site numbers. The number of sites depends on the space group given in Exp.CrystalSymmetry
. E.g. the following set limits the simulation to sites 1 and 3 of the 4 magnetically distinct sites in crystal of space group no. 47.
Exp.CrystalSymmetry = 47; % space group Pmmm Opt.Sites = [1 3];In powder simulations,
Opt.Sites
is ignored.
Sparse
Verbosity
Opt.Verbosity=0
, nothing is shown. 1 logs relevant information, 2 gives more details.
For resfields_perturb
and resfreqs_perturb
, the option fields are
PerturbOrder
Verbosity
Opt.Verbosity=0
, nothing is shown. 1 logs relevant information, 2 gives more details.
FuzzLevel
There are up to five outputs from resfields
, resfields_perturb
, resfreqs_matrix
, and resfreqs_perturb
.
Pos
, in units of mT. The various transitions are along columns, each column corresponding to a separate orientation.
Int
output contains the intensities, with the same layout as Pos
.
Wid
, again in mT. They are Gaussian FWHM (full widths at half maximum).
Trans
is the list of computed transitions. This list has the same format as the Transitions
option in Opt
.
A comparison between the resonance field position obtained from resfields
(spline modelling approach) and resfields_eig
(exact solution) shows that differences are negligible.
First we compute the resonance fields for an axial spin system one electron and one proton.
clear Sys.g = [2.05 2.05 2.2]; Sys.Nucs = '1H'; Sys.A = [10 10 500]; Exp.mwFreq = 9.5; Exp.Range = [200 400]; grid = sphgrid('Dinfh',201); angles = [grid.phi; grid.theta].'; Exp.SampleFrame = angles; B = resfields(Sys,Exp);
Next we compute line positions using resfields_eig
, which is much slower.
Br = resfields_eig(Sys,Exp); Br = cell2mat(Br);
After plotting the result
theta_deg = grid.theta*180/pi; plot(Br,theta_deg,'k.',B,theta_deg,'r'); xlabel('field (mT)'); ylabel('theta (deg)');
we see that the resonances obtained by the two methods are practically identical.
resfields_eig, garlic, levels, levelsplot, pepper