curry

Calculates magnetometry data: magnetic moment, static magnetic susceptibility.

Syntax
curry(Sys,Exp);
curry(Sys,Exp,Opt);
muz = curry(...);
[muz,chizz] = curry(...);
[...] = curry(...);

See also the user guide on how to use curry.

Description

curry calculates the magnetic moment and the molar static magnetic susceptibility for given fields and temperatures.

Outputs

There are up to two standard output arguments (here standard refer to empty Opt.Output). If no output argument is requested, curry plots the calculated curves.

muz
muz contains the values of the longitudinal magnetic moment, i.e. along the direction of the applied magnetic field (zL), for the fields and temperatures requested.

The units are either Bohr magnetons μB if the value is understood as single-molecule magnetic moment μz, or NAμB if the value is understood as molar magnetic moment μm,z. NA is the Avogadro constant. For example, muz = 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

muz_SI = muz*avogadro*bmagn;   % unit conversion from NA*muB to J T^-1 mol^-1
chizz
chizz 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. The values are in SI units (m3 mol-1). To convert chizz from SI units to CGS units (cm3 mol-1), use
chizz_cgs = chizz_SI/(4*pi*1e-6);   % unit conversion from SI to CGS units

If Opt.Output is given the number of outputs depend on Opt.Output (see Output).
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. In addition to the parameters used by all EasySpin functions, TIP can be introduced.

TIP
Temerature-independent paramagnetism added to the magnetic susceptibility. EasySpin understand TIP to be in SI units.
TIP_cgs = 7e-4;                 % TIP in cm^3 mol^-1
TIP_SI = (4*pi*1e-6) * TIP_cgs; % TIP in SI units
Sys.TIP = TIP_SI;

Input: Experimental parameters

Exp contains experimental parameters such as the magnetic field range and temperature. Compared to EasySpin's EPR simulation functions, curry needs only very few parameters.

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.

Magnetic moment is often measured as a function of field and for a few temperatures, while molar static magnetic susceptibility is measured as function of temperature for a few fields. This can be done also in simulations:

chiTemperature
Temperature or list of Temperatures, for which magnetic susceptibility should be calculated, in Kelvin.
chiField
Magnetic field strength, in mT, for which magnetic susceptibility should be calculated. If an array of values is given, data are calculated for each field value in the array.
mTemperature
Temperature or list of Temperatures, for which magnetic moment should be calculated, in Kelvin.
mField
Magnetic field strength, in mT, for which magnetic moment should be calculated. If an array of values is given, data are calculated for each field value in the array.

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
chisim_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:

CrystalOrientation
An Nx3 or Nx2 array that specifies single-crystal orientations for which the magnetic moment and the susceptibility should be computed. Each row of CrystalOrientation contains the three Euler rotation angles that transform the crystal frame (C) to the lab frame (L). If only two Euler angles are given, the third is set to zero. If CrystalOrientation is empty or not specified, the full powder is computed.
Exp.CrystalOrientation = [0 0 0];              % single crystal, crystal z axis aligned with B0
Exp.CrystalOrientation = [0 pi/2 0];           % single crystal, crystal z axis perpendicular to B0
Exp.CrystalOrientation = [0 0 0; 0 pi/2 0];    % two crystals
Exp.CrystalOrientation = [];                   % powder
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 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 crystal frame (xC,yC,zC).

Input: Calculation options

The structure Opt collects computational parameters. Opt need not be specified, in which case default values for all fields are used. The field names and their possible values are as follows.

Output
String to specify the output curry should provide in the given order. Keywords should be seperated by blanks. The following keywords are allowed:

MvsB
Magnetic moment in CGS units
MvsBCGS
Magnetic moment in CGS units
MvsBSI
Magnetic moment in SI units
Chi
Magnetic susceptibility in SI units
ChiCGS
Magnetic susceptibility in CGS units
ChiSI
Magnetic susceptibility in SI units
1overChi
1 / magnetic susceptibility in SI units
1overChiCGS
1 / magnetic susceptibility in CGS units
1overChiSI
1 / magnetic susceptibility in SI units
ChiT
Product of magnetic susceptibility and Temperature in SI units
ChiTCGS
Product of magnetic susceptibility and Temperature in CGS units
ChiTSI
Product of magnetic susceptibility and Temperature in SI units
mueff
Effective magnetic moment in SI units
mueffCGS
Effective magnetic moment in CGS units
mueffSI
Effective magnetic moment in SI units

Examples:

Opt.Output = 'MvsB ChiTCGS 1overChi';
% three outputs, first: magnetic moment in CGS units,
% second: product of magnetic susceptibility and Temperature in CGS units,
% third: 1 / magnetic susceptibility in SI units
Opt.Output = 'ChiTCGS MvsB 1overChi';
% first output will be now product of magnetic susceptibility and Temperature in CGS units,
% second magnetic moment in CGS units, and third 1 / magnetic susceptibility in SI units
Opt.Output = 'mueff'; % single output: effective magnetic moment in SI units
The number of given output arguments have to match the number of keywords in Output.
Opt.Output = 'MvsB ChiTCGS MvsBSI';
[MvsB, ChiTCGS, MvsBSI] = curry(Sys,Exp,Opt);

The order of keywords in Opt.Output determine the order of the outputs!

%two outputs, first magnetic moment in CGS units
% second: product of magnetic susceptibility and Temperature in CGS units
Opt.Output = 'MvsB ChiTCGS';
[MvsB, ChiTCGS]= curry(Sys,Exp,Opt);

%the same two outputs, reversed order
Opt.Output = 'ChiTCGS MvsB';
[ChiTCGS, MvsB]= curry(Sys,Exp,Opt);

OneColoumn
curry return all calculated data in one coloumn. Example:

Sys = struct('S',1,'D',5000);
Exp = struct('Temperature', 1:20, 'Field', 100:100:1000);
Opt.Output = 'MvsB OneColoumn ChiTCGS';
y = curry(Sys,Exp,Opt);
y will then contain

[MvsB(B = 100 mT, T = 1 K), MvsB(B = 200 mT, T = 1 K), ..., MvsB(B = 1000 mT, T = 1 K), MvsB(B = 100 mT, T = 2 K), ..., MvsB(B = 1000 mT, T = 20 K), ChiTCGS(B = 100 mT, T = 1 K), ..., ChiTCGS(B = 1000 mT, T = 20 K)].

The order is given by the order of keywords in Output. Using the same example as above but with reversed order:

Opt.Output = 'ChiTCGS OneColoumn MvsB';
y2 = curry(Sys,Exp,Opt);
y2 will then contain

[ChiTCGS(B = 100 mT, T = 1 K), ChiTCGS(B = 200 mT, T = 1 K), ... ChiTCGS(B = 1000 mT, T = 1 K), ChiTCGS(B = 100 mT, T = 2 K), ..., ChiTCGS (B = 1000 mT, T = 20 K), MvsB(B = 100 mT, T = 1 K), ..., MvsB(B = 1000 mT, T = 20 K)].

OneColoumn can be at any position in the Output string. So the following will all lead to the same output
Opt.Output = 'ChiTCGS OneColoumn MvsB';
Opt.Output = 'OneColoumn ChiTCGS MvsB';
Opt.Output = 'ChiTCGS MvsB OneColoumn';
Verbosity
Determines how much information is printed to the command window. If Opt.Verbosity=0, curry is silent. 1 logs relevant information, 2 gives more details.
nKnots
Determines the number of orientations (knots) in a powder for which moment and susceptibility are calculated. nKnots gives the number of orientations between θ=0° and θ=90° for which data are calculated. Common values for N1 are between 10 (10° increments) and 91 (1° increments). The larger the anisotropy of the spin Hamiltonian, the higher N1 must be to yield accurate values.
Opt.nKnots = 91;       % 1° increments
Opt.nKnots = 31;       % 3° increments
Methods
Calculation method used by curry. 'operator' is the default and the method described in Algorithm is used. 'energies' is slightly faster for large spin systems, but far more approximatively. Magnetization and susceptibility are obtained as first and second numerical derivative of the thermodynamic free energy. The susceptibility can only be calculated for zero field.
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
• T. Quickenden, R. C. Marshall, J. Chem. Edu, 1972, 49(2), 114-116.
• S. Hatscher, H. Schilder, H. Lueken, W. Urland, Pure Appl. Chem., 2005, 77(2), 497-511.
• R. Boča, Theoretical Foundations of Molecular Magnetism, Elsevier, 1999.
• N. F. Chilton, R. P. Anderson, L. D. Turner, A. Soncini, K. S. Murray, J. Comp. Chem. 2013, 34, 1164-1175.