Calculates magnetometry data: magnetic moment, static magnetic susceptibility, etc.
curry(Sys,Exp); curry(Sys,Exp,Opt); muBM = curry(...); [muBM,chimol] = curry(...); ... = curry(...);
See also the user guide on how to use curry
.
curry
calculates the magnetic moment, the static magnetic susceptibility and related quantities for the spin system Sys
for given magnetic fields and temperatures.
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
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
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.
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:
'SI'
returns all outputs in SI units (joule, tesla, m3, etc.). This is the default.
'CGS'
returns all outputs in old-style CGS-emu units (erg, gauss, cm3, etc.).
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:
'mu'
: single-center magnetic moment (SI unit: J T-1; CGS-emu unit: erg G-1)
'muBM'
: single-center magnetic moment in Bohr magnetons (unitless and numerically identical in SI and CGS-emu)
'mumol'
: molar magnetic moment (SI unit: J T-1 mol-1; CGS-emu unit: erg G-1 mol-1)
'chi'
: single-center magnetic susceptibility (SI unit: m3; CGS-emu unit: cm3)
'chimol'
: molar magnetic susceptibility (SI unit: m3 mol-1; CGS-emu unit: cm3 mol-1)
'chimolT'
: molar magnetic susceptibility times temperature (SI unit: K m3 mol-1; CGS-emu unit: K cm3 mol-1)
'mueff'
: effective Bohr magneton number, also called effective magnetic moment (unitless and numerically identical in both SI and CGS-emu)
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.
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.