resfields, resfields_perturb, resfreqs_matrix, resfreqs_perturb

Compute cw EPR resonance line positions (fields or frequencies), line amplitudes and line widths.

Syntax
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.

Description

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.

Input: Spin system

Sys is a spin system structure containing all parameters of the spin system.

Input: Parameters

Params is a structure containing the following experimental parameters.

mwFreq
Gives the spectrometer's operating frequency in GHz. (resfields and resfields_perturb only.)
Field
Gives the spectrometer's static field, in mT. (resfreqs and resfreqs_perturb only.)
CenterSweep
Defines the center and width [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.
The range can be specified either in CenterSweep or in Range. If both are given, CenterSweep has precedence.
Range
Defines the start and end [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.
The range can be specified either in 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
Specifies the symmetry of the crystal. You can give either the number of the space group (between 1 and 230), the symbol of the space group, or the symbol for the point group of the space group (in either Schönflies or Hermann-Mauguin notation).
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

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).

Input: Options

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
Determines whether the frequency-to-field conversion factor is included in the line intensities of field-swept spectra. 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
mx2 vector of integer, or 'all'
Determines the transitions (state pairs) which are used in the resonance field calculation. If given, 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.
If 'all' is given, all transitions are included.
Threshold
Specifies the threshold for transition pre-selection. Only transitions with an estimated relative average intensity larger than this number are included. The relative average intensity of the strongest transition is set to 1. The default value for the threshold is 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
In crystal simulations, this gives a list of crystal sites to include in the simulation. If 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
0 or 1. Determines whether to use sparse or full matrices for the calculations. Sparse matrices reduce memory demands for large spin systems.
Verbosity
Determines how much information is printed to the command window. If 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
Determines the perturbation theory order. Can be 1 or 2.
Verbosity
Determines how much information is printed to the command window. If Opt.Verbosity=0, nothing is shown. 1 logs relevant information, 2 gives more details.
FuzzLevel
The amount of random noise to add to non-zero Hamiltonian matrix elements to break degeneracies. This is needed, since EasySpin cannot handle systems with degeneracies in an exact fashion. The default value is 1e-10. This means each non-zero Hamiltonian matrix element is multiplied by a random number between (1-1e-10) and (1+1e-10). This field is only used when matrix diagonalization is used.
Outputs

There are up to five outputs from resfields, resfields_perturb, resfreqs_matrix, and resfreqs_perturb.

Examples

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.

See also

resfields_eig, garlic, levels, levelsplot, pepper