EasySpin can calculate magnetic moments and magnetic susceptibilities for arbitrary spin systems. Experimentally, these are obtained using a SQUID magnetometer. This user guide explains how to calculate these quantities.
The following topics are covered:
To calculate magnetic moments and magnetic susceptibilities, you need to provide information on the sample (spin system) and the fields and temperatures used in the SQUID measurement. With these, you then call the function curry. Depending on what quantity you want to calculate, you ask for a different number of outputs from curry:
muz = curry(Sys,Exp); [muz,chizz] = curry(Sys,Exp);
Sys contains the spin system, and
Exp contains the experimental parameters.
muz is the z component of the magnetic dipole moment, and
chizz is the zz component of the magnetic susceptibility.
Additionally, you can provide a third input argument,
Opt that contains some calculation options. For example,
muz = curry(Sys,Exp,Opt);
To calculate magnetic moment and magnetic susceptibility, first of all you need to provide the system of spins and the parameters of the associated spin Hamiltonian as a spin system structure. Here is a simple example of two coupled spins-1/2 with isotropic g factors and strong exchange coupling:
Sys.S = [1/2 1/2]; Sys.g = [2 2]; Sys.J = -2*-10*29.98e3; % MHz
Be mindful that EasySpin's isotropic electron-electron coupling term
Sys.J uses the convention H = +J S1S2. Other conventions are often used in the literature. See here for details.
Also, EasySpin expects all couplings in units of MHz. Very often, exchange couplings are given in cm-1. To convert cm-1 to MHz use
J_cm = 5; % value in cm^-1 J_MHz = J_cm*29.98e3; % cm^-1 -> MHz conversion Sys.J = J_MHz; % for H = +J*S1*S2 Sys.J = 5 * 29.98e3; % all in one line
You can also give antisymmetric and symmetric coupling terms, in
As with the rest of EasySpin, there is in principle no limit on the number of spins you can specify or on how they can be coupled. The only limit is the computer memory required to hold the spin Hamiltonian and operator matrices.
For SQUID magnetometry, you only need two basis experimental settings: the magnetic field values and the temperatures at which you measure the magnetic moment and the magnetic susceptibility.
Give the temperature in
Exp.Temperature, in units of K. You can provide either a single temperature or an array of temperatures.
Exp.Temperature = 298; % room temperature Exp.Temperature = 4:300; % large temperature range
For the magnetic field, use
Exp.Field and provide the field values in units of mT. Again, you can give either a single value, or an array of values. If the experiment is run at zero magnetic field, you can omit
Exp.Field = 3000; % 3000 mT = 3 T Exp.Field = 0:10:6000; % 0 t 6T range
If you give a single value for both the temperature and the field, curry calculates single values for the outputs. If you provide a single value for one of the parameters and an array for the other, you get an array of results. For example, providing
Exp.Field = 1000; and
Exp.Temperature = 4:300 will yield curves as a function of temperature. Finally, if you provide arrays for both field and temperature, curry returns 2D arrays for the results.
curry returns the calculated magnetic moments in what might be called "natural units". The numerical value returned by curry can be taken either as the molecular magnetic moment μz (magnetic moment per molecule) in units of Bohr magnetons (μB), or as the molar magnetic moment μmol,z (magnetic moment per mole) in "molar Bohr magnetons" (NAμB). These two are numerically identical. For example,
muz = 0.53 means the molecular magnetic moment μz is 0.53 μB and the molar magnetic moment μmol,z is 0.53 NAμB.
The SI units for these two magnetic moment quantities are J T-1 and J T-1 mol-1. To convert from the natural units to the SI units, use EasySpin's functions for the Avogadro number (avogadro) and the Bohr magneton (bmagn):
muz_SI = muz*bmagn; % molecular magnetic moment, natural units to SI units muzmol_SI = muz*avogadro*bmagn; % molar magnetic moment, natural units to SI units
The molar magnetic susceptibility χzz is returned in SI units of m3 mol-1. Often, the susceptibility is given in the old CGS units of cm3 mol-1. To convert the SI susceptibility to the corresponding CGS quantity, use
chizz_cgs = chizz_SI/(4*pi*1e-6); % unit conversion from SI to CGS units
curry can also calculate magnetic moment and molar magnetic susceptibility of single crystals. For this, you need to provide three things: (a) the orientation of the crystal in the spectrometer in
Exp.CrystalOrientation, (b) the space group of the crystal in
Exp.CrystalSymmetry, and (c) the orientation of the molecular frame relative to the crystal frame in
Exp.MolFrame. You can omit the latter two, in which case the space group is assumed to be P1, and the molecular frame is assumed to be aligne with the crystal frame.
For more information on the various frames and how to specify the relative orientations, see here.
Here are some examples on how to use this.
Exp.CrystalSymmetry = 'P212121'; % space group symbol Exp.CrystalOrientation = [0 0 0]; % magnetic field along crystal z axis Exp.CrystalOrientation = [0 pi/2 0]; % magnetic field along crystal x axis Exp.CrystalOrientation = [pi/2 pi/2 0]; % magnetic field along crystal y axis
Without information about a crystal (
Exp.CrystalSymmetry), curry assumes the sample is a powder and performs a powder average. The powder average involves evaluating many orientations of the paramagnetic center with respect to the magnetic field, and then averaging them. To adjust the number of orientations included in the powder average, use
Opt.nKnots. The higher the number, the more orientations are included.
Opt.nKnots = 10; % 10° increments Opt.nKnots = 19; % 5° increments Opt.nKnots = 31; % 3° increments
A sufficient number of orientations is necessary to obtain correct data. If you are not sure whether you have enough orientations, increase
Opt.nKnots until the calculated data do not change any more.
Of course, if the spin Hamiltonian is isotropic, you do not have to run a powder average.
You can use EasySpin's least-squares fitting tool esfit to fit magnetometry data using curry.
However, the order and nature of curry's output arguments is different from the main EasySpin simulation functions pepper, garlic, chili, etc. By default, esfit is set up for these latter functions.
To make esfit work for curry, you need to provide information about the type of output arguments via the fitting option
FitOpt.OutArg should be an array of two numbers, for example
FitOpt.OutArg = [3 2]. The first number indicates how many output arguments
esfit should ask for when calling the simulation function. The second number indicates which output argument to use for fitting. So,
FitOpt.OutArg = [3 2] indicates to call the simulation function with three outputs, and then use the second to fit to the data.
For curry, you need to use the following settings, depending on what you want to fit. For fitting the magnetic moment, have curry be called only with one output and use it:
FitOpt.OutArg = [1 1]; % to fit the magnetic moment muz (first output)
The magnetic susceptibility χzz is the second output argument of curry. To fit it, have curry be called with 2 outputs and use the second:
FitOpt.OutArg = [2 2]; % to fit the magnetic susceptibility chizz (second output)
For more details on least-squares fitting, see the corresponding user guide and the reference page on esfit.