curry

Calculates magnetometry data: magnetic moment, static magnetic susceptibility, etc.

Syntax
curry(Sys,Exp);
curry(Sys,Exp,Opt);
muBM = curry(...);
[muBM,chimol] = curry(...);
... = curry(...);

See also the user guide on how to use curry.

Description

curry calculates the magnetic moment, the static magnetic susceptibility and related quantities for the spin system Sys for given magnetic fields and temperatures.

Outputs

There are up to two default output arguments (in the absence of Opt.Output - see below), muBM and chimol. If Opt.Output is given, the number and types of outputs depends on the entries in Opt.Output. If no output argument is requested, curry plots the calculated curves.

muBM

muBM contains the values of the longitudinal magnetic moment μz, i.e. the component of the magnetic moment along the direction of the applied magnetic field (zL), for the fields and temperatures requested. It is given as a multiple of the Bohr magneton μB. Alternatively, it can be understood as the value of the molar magnetic moment μm,z in units of NAμB where NA is the Avogadro constant. For example, muBM = 0.53 means the single-molecule magnetic moment μz is 0.53 μB and the molar magnetic moment μm,z is 0.53 NAμB.

To convert the molar magnetic moment to SI units (J T-1 mol-1), use

mumol_SI = muBM*bmagn*avogadro;   % Bohr magnetons -> J T^-1 mol^-1
chimol

chimol contains the molar static magnetic susceptibility. This is not the full 3x3 susceptibility tensor χm, but its component along the applied magnetic field direction zL, χm,zz. By default, the values are in SI units (m3 mol-1), but this can be changed using Opt.Units.

To convert chimol from SI units to CGS units (cm3 mol-1), use

chimol_CGS = chimol_SI/(4*pi*1e-6);   % SI unit -> CGS unit
Input: Spin system

There are three inputs to the function, the last one is optional.

Sys is a spin system structure containing the spin quantum numbers and the spin Hamiltonian parameters. It can be used to define a spin Hamiltonian with an arbitrary number of spins and pair-wise interactions between all of them.

In addition, there is one field that is specific to curry:

TIP

Temperature-independent paramagnetism that is added to the magnetic susceptibility. EasySpin takes TIP to be a molar susceptibility in SI units (m3 mol-1).

TIP_CGS = 7e-4;                 % TIP in CGS-emu units (cm^3 mol^-1)
TIP_SI = (4*pi*1e-6) * TIP_CGS; % TIP in SI units (m^3 mol^-1)
Sys.TIP = TIP_SI;               % required in SI units
Input: Experimental parameters

Exp contains the experimental parameters of the measurement. The two most important ones are the temperature and the magnetic field, either of which can be a range.

Temperature

This gives the temperature, or list of temperatures, for which magnetization data should be calculated, in kelvin. For example, Exp.Temperature = 298 corresponds to room temperature, and Exp.Temperature = 4:300 specifies a temperature range. If an array of values is given, data are calculated for each temperature in the array.

Populations are computed for all energy levels assuming thermal (Boltzmann) equilibrium and are included in the calculation of the magnetic moment and the magnetic susceptibility.

Temperature has to be provided.

Field

Field gives the magnetic field strength, in mT, for which magnetization data should be calculated. If an array of values is given, data are calculated for each field value in the array.

If Field is missing, EasySpin assumes that no field is applied (equivalent to Exp.Field = 0).

curry calculates magnetic susceptibility as numeric derivative of the magnetic moment at the given field value. However, the experimental data is often obtained by measuring the magnetization at a given field value and divide it by the field strength. For sufficiently small field strength this correspond to the derivative at zero field. In cases the field strength is not small, experimental results might be better reproduced by:

m4chi =  curry(Sys,Exp,Opt);   % magnetic moment at the field used in the experiment
% divide magnetic moment by magnetic field and unit conversion
chi_cgs = m4chi*avogadro*bmagn*1e2./Exp.Field(:);
chi_si = (4*pi*1e-6) *chisim_cgs ;  % convert to SI units

curry not only supports powder samples, but also single crystals. The following fields are needed for single-crystal calculations:

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 (such as 'P212121' or 'Ia-3d'), or the symbol for the point subgroup of the space group (in either Schönflies or Hermann-Mauguin notation, such as 'D2h' or 'mmm').

Exp.CrystalSymmetry = 11;       % space group number (between 1 and 230)
Exp.CrystalSymmetry = 'P21/c';  % space group symbol
Exp.CrystalSymmetry = 'C2h';    % point group, Schönflies notation
Exp.CrystalSymmetry = '2/m';    % point group, Hermann-Mauguin notation

When CrystalSymmetry is given, all symmetry-related sites in the crystal are generated and 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 sample/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. Exp.MolFrame=[0,pi/4,0] tilts the x and z axis of the spin system's molecular frame relative to those of the crystal frame while keeping the y axes aligned.

Input: Calculation options

The structure Opt collects computational parameters. Opt is optional. If not given, default values for all fields are used. The field names and their possible values are as follows.

Units

Specifies the system of units in which the results are returned. Two values are possible:

Opt.Units = 'SI';       % use SI system of units
Opt.Units = 'CGS';      % use CGS-emu system of units
Output

Contains a list of keywords that specify the output curry should provide. Keywords should be separated by blanks. The number and order of the outputs corresponds to the number and order of the keywords in Opt.Output. The following keywords are available:

Here are a few examples:

Opt.Output = 'chimolT';               % one output
chimolT = curry(Sys,Exp,Opt);

chimolT = curry(Sys,Exp,Opt);

Opt.Output = 'mumol chimol';          % two outputs
[mumol,chimol] = curry(Sys,Exp,Opt);

Opt.Output = 'chimolT muBM mueff';    % three outputs
[chimolT,muBM,mueff] = curry(Sys,Exp,Opt);
deltaB

Determines the field increment (in mT) used for calculating numerical derivatives when calculating the susceptibility. Its default value is 1 mT. Lower it if a strong field dependence is present.

Verbosity

Determines how much information is printed to the command window. If set to 0, curry is silent. 1 logs relevant information, 2 gives more details.

GridSize

Determines the number of orientations in a powder for which moment and susceptibility are calculated.

GridSize gives the number of orientations between θ=0° and θ=90° for which data are calculated. Common values for GridSize are between 10 (10° increments) and 91 (1° increments). The larger the anisotropy of the spin Hamiltonian, the higher GridSize must be to yield accurate values.

Opt.GridSize = 19;       % 5° increments
Opt.GridSize = 31;       % 3° increments
Opt.GridSize = 91;       % 1° increments
Method

Specifies the calculation method used by curry, either 'operator' or 'partitionfunction'.

The two methods give essentially the same results within numerical accuracy. 'operator' is the default and the method described in the Algorithm section below is used. 'partitionfunction' is slightly faster for large spin systems, but can be slower for smaller spin systems. In this method, magnetic moments and susceptibilities are obtained as first and second numerical derivative of the thermodynamic free energy (via the natural logarithm of the partition function).

Spins

List of indices of the electron spins to include in the calculation. For example, for a spin system with two electron spins (two entries in Sys.S), Opt.Spins = 1 requests spin-specific magnetic moments and susceptibilities for the first spin, Opt.Spins = 2 the same for the second spin. If this field is omitted, all spins are included in the calculation by default.

Algorithm

curry calculates the magnetic moment as follows: For each of the given values of the applied magnetic field, the spin Hamiltonian matrix is set up and diagonalized to obtain all eigenvalues and eigenstate vectors. Then, the operator matrix for the projection of the magnetic dipole moment onto the field axis (zL, z axis in the laboratory frame) is set up. Next, its expectation value for each eigenstate is calculated. Lastly, these expectation values are summed using thermal Boltzmann population factors corresponding to the given temperature as weights.

To obtain the zz-component of the magnetic susceptibility tensor, the numerical derivative of the zL-component of the magnetic moment with respect to the applied magnetic field along zL is calculated.

References
See also

ham