Calculates magnetometry data: magnetic moment, static magnetic susceptibility.
curry(Sys,Exp); curry(Sys,Exp,Opt); muz = curry(...); [muz,chizz] = curry(...); [...] = curry(...);
See also the user guide on how to use
curry calculates the magnetic moment and the molar static magnetic susceptibility for given fields and temperatures.
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.
muzcontains 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
chizzcontains 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
chizzfrom SI units to CGS units (cm3 mol-1), use
chizz_cgs = chizz_SI/(4*pi*1e-6); % unit conversion from SI to CGS units
Opt.Outputis given the number of outputs depend on
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.
TIPto 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;
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.
Exp.Temperature = 298corresponds to room temperature, and
Exp.Temperature = 4:300specifies 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.
Fieldgives 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.
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:
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_cgs = m4chi*avogadro*bmagn*1e2./repmat(Exp.Field(:),1,numel(Exp.Temperature)); 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:
CrystalOrientationcontains 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
CrystalOrientationis 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
'Ia-3d'), or the symbol for the point subgroup of the space group (in either Schönflies or Hermann-Mauguin notation, such as
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
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.
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).
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.
curryshould provide in the given order. Keywords should be seperated by blanks. The following keywords are allowed:
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 unitsThe number of given output arguments have to match the number of keywords in
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);
curryreturn 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);
ywill 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);
y2will 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)].
OneColoumncan be at any position in the
Outputstring. 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';
curryis silent. 1 logs relevant information, 2 gives more details.
nKnotsgives the number of orientations between θ=0° and θ=90° for which data are calculated. Common values for
N1are between 10 (10° increments) and 91 (1° increments). The larger the anisotropy of the spin Hamiltonian, the higher
N1must be to yield accurate values.
Opt.nKnots = 91; % 1° increments Opt.nKnots = 31; % 3° increments
'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.
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.