CrystalFieldMagnetisation¶
Description¶
This function calculates the crystal field (molar) magnetic moment as a function of applied magnetic field in a specified
direction, in either atomic (
Strictly, to obtain the magnetisation, one should divide by the molar volume of the material.
Theory¶
The function calculates the expectation value of the magnetic moment operator
where
where in this case the magnetic field
Example¶
Here is an example of how to fit crystal field parameters to a magnetisation measurement. All parameters disallowed by symmetry are fixed automatically. The “data” here is generated from the function itself.
The x-axis is given in Tesla, and the magnetisation (y-axis) is in bohr magnetons per magnetic ion (
import numpy as np
# Build a reference data set
fun = 'name=CrystalFieldMagnetisation,Ion=Ce,B20=0.37737,B22=0.039770,B40=-0.031787,B42=-0.11611,B44=-0.12544,'
fun += 'Temperature=10'
# This creates a (empty) workspace to use with EvaluateFunction
x = np.linspace(0, 30, 300)
y = x * 0
e = y + 1
ws = CreateWorkspace(x, y, e)
# The calculated data will be in 'data', WorkspaceIndex=1
EvaluateFunction(fun, ws, OutputWorkspace='data')
# Change parameters slightly and fit to the reference data
fun = 'name=CrystalFieldMagnetisation,Ion=Ce,Symmetry=C2v,Temperature=10,B20=0.4,B22=0.04,B40=-0.03,B42=-0.1,B44=-0.1,'
fun += 'ties=(B60=0,B62=0,B64=0,B66=0,BmolX=0,BmolY=0,BmolZ=0,BextX=0,BextY=0,BextZ=0)'
# (set MaxIterations=0 to see the starting point)
Fit(fun, 'data', WorkspaceIndex=1, Output='fit',MaxIterations=100, CostFunction='Unweighted least squares')
# Using Unweighted least squares fit because the data has no errors.
# Extract fitted parameters
parws = mtd['fit_Parameters']
for i in range(parws.rowCount()):
row = parws.row(i)
if row['Value'] != 0:
print("%7s = % 7.5g" % (row['Name'], row['Value']))
Output (the numbers you see on your machine may vary):
B20 = 0.39541
B22 = 0.030001
B40 = -0.029841
B42 = -0.11611
B44 = -0.1481
Cost function value = 1.2987e-14
Attributes (non-fitting parameters)¶
Name |
Type |
Default |
Description |
---|---|---|---|
Ion |
String |
Mandatory |
An element name for a rare earth ion. Possible values are: Ce, Pr, Nd, Pm, Sm, Eu, Gd, Tb, Dy, Ho, Er, Tm, Yb. |
Symmetry |
String |
C1 |
A symbol for a symmetry group. Setting Symmetry automatically zeros and fixes all forbidden parameters. Possible values are: C1, Ci, C2, Cs, C2h, C2v, D2, D2h, C4, S4, C4h, D4, C4v, D2d, D4h, C3, S6, D3, C3v, D3d, C6, C3h, C6h, D6, C6v, D3h, D6h, T, Td, Th, O, Oh |
Temperature |
Double |
1.0 |
Temperature in Kelvin of the measurement. |
powder |
Boolean |
false |
Whether to calculate the powder averaged magnetisation or not. |
Hdir |
Vector |
(0.,0.,1.) |
The direction of the applied field w.r.t. the crystal field parameters |
Unit |
String |
‘bohr’ |
The desired units of the output, either: ‘bohr’ (muB/ion), ‘SI’ (Am^2/mol) or ‘cgs’ (erg/G/mol). |
Properties (fitting parameters)¶
Name |
Default |
Description |
---|---|---|
BmolX |
0.0 |
The x-component of the molecular field. |
BmolY |
0.0 |
The y-component of the molecular field. |
BmolZ |
0.0 |
The z-component of the molecular field. |
BextX |
0.0 |
The x-component of the external field. |
BextY |
0.0 |
The y-component of the external field. |
BextZ |
0.0 |
The z-component of the external field. |
B20 |
0.0 |
Real part of the B20 field parameter. |
B21 |
0.0 |
Real part of the B21 field parameter. |
B22 |
0.0 |
Real part of the B22 field parameter. |
B40 |
0.0 |
Real part of the B40 field parameter. |
B41 |
0.0 |
Real part of the B41 field parameter. |
B42 |
0.0 |
Real part of the B42 field parameter. |
B43 |
0.0 |
Real part of the B43 field parameter. |
B44 |
0.0 |
Real part of the B44 field parameter. |
B60 |
0.0 |
Real part of the B60 field parameter. |
B61 |
0.0 |
Real part of the B61 field parameter. |
B62 |
0.0 |
Real part of the B62 field parameter. |
B63 |
0.0 |
Real part of the B63 field parameter. |
B64 |
0.0 |
Real part of the B64 field parameter. |
B65 |
0.0 |
Real part of the B65 field parameter. |
B66 |
0.0 |
Real part of the B66 field parameter. |
IB21 |
0.0 |
Imaginary part of the B21 field parameter. |
IB22 |
0.0 |
Imaginary part of the B22 field parameter. |
IB41 |
0.0 |
Imaginary part of the B41 field parameter. |
IB42 |
0.0 |
Imaginary part of the B42 field parameter. |
IB43 |
0.0 |
Imaginary part of the B43 field parameter. |
IB44 |
0.0 |
Imaginary part of the B44 field parameter. |
IB61 |
0.0 |
Imaginary part of the B61 field parameter. |
IB62 |
0.0 |
Imaginary part of the B62 field parameter. |
IB63 |
0.0 |
Imaginary part of the B63 field parameter. |
IB64 |
0.0 |
Imaginary part of the B64 field parameter. |
IB65 |
0.0 |
Imaginary part of the B65 field parameter. |
IB66 |
0.0 |
Imaginary part of the B66 field parameter. |
Categories: FitFunctions | General
Source¶
C++ header: CrystalFieldMagnetisation.h
C++ source: CrystalFieldMagnetisation.cpp