The xnd program.
In the present release of xnd it is possible to refine together
diffraction patterns coming from different experiences
(Bragg-Brentano X-ray, neutron, synchrotron). Each diagram may be
polyphased and contain multiple wavelenghts. The different phases
may be modelized entering their structures or, if this is unknown,
simply entering the lattice parameters and Miller's indexes. If
even lattice is unknown, the treatment can be achieved by
entering d-spacing and integrated intensity for each peak. It is
also possible to take care of anomalous scattering factors.
The
programs allows the refinement of modulated structures (4-D): it is
possible to describe both displacive and compositional modulation.
The only limitation is that polarisation vectors may be expanded only
to the first order Fourier term. The Fourier term is expressed in
exponential form giving two parameters: the amplitude and the phase.
To simplify the treatment of data collected with linear counters
possessing unequally spaced detectors and to treat variable
step scans, the functions describing the profile are expressed using
the measured angles. It should be noticed that the program will not
calculate large peaks having the center falling at more than 1 degree
in 2theta outside the collected region. The allowed Miller indexes
hkl depend on the implementation of the short integer on
the computer but run atleast between -127 and +127.
The treatment of multiple diagrams, as in real time experiment,
leads to the collection of a large
number of diffraction patterns. Each diagram may have a poor statistical
quality but the structural parameters obtained from these patterns
are not independent. These considerations lead to a description of
the crystallographic parameters by a polynomial expansion. The
argument of this polynome is an external parameter, which will
be called Temp. It is obvious that Temp is not
necessarily the temperature but a magnetic, an electric field or
anything else (time, pressure). The program is able to refine the
whole set of diffraction patterns, minimizing the crystallographical
parameters and their evolution vs. Temp. In the least-squares
method the parameters at each cycle are obtained from the solution
of the normal equation. Following the Marquardt method, a
parameter can be added to each term in the diagonal before solving the
equation. This method avoids the problems of divergency in the earlier
stages of the refinement. A convenient value of Marquardt parameter
at the beginning of refinement is 0.01; in the final stages of the
refinement, the Marquardt parameter can be set to zero if the
normal matrix is not singular. The equation is solved by means of the
Choleski method without calculating the inverse matrix to save time.
Actually, the quantity which the refinement algorithm tries to
minimize is
S = SIGMA(m) SIGMA(n) SIGMA(i) (W(m,n,i) (Y_obs(m,n,i)-Y_cal(m,n,i))^2 + Penal
where m describes the number of experiences, n is the
number of diagrams for each experience and i the number of
points on the diagram. The intensities of each diagram
Y_calc(m,n,i) are obtained from the formula
Y_calc(m,n,i)= SIGMA(p) SIGMA(hkl) I(m,n,p,hkl) G(theta(m,n,i)-theta_(m,n,p,hkl} )
+ Y_bkg(m,n,i)
where I(m,n,p, hkl) represents the intensity of the hkl reflection of
the p phase in the the n diagram of the m experiment, properly
corrected of instrumentation geometry (by scale, Lorentz-polarization
factor, multiplicity, preferred orientation ...); on the other hand, G is
the function defining the global lineshape. This function takes care of the
description of the peak width and may vary from one diagram to another and
from phase to phase. It depends on theta, on the asymmetry corrections
and, eventually, on the Miller indexes of the peak. The intensity of the
peak is distributed on an interval centered on the peak and whose amplitude
is at least twice the full width at half maximum (FWHM). The amplitude of
this interval can be changed acting on a parameter (EpsProf): the profile
lineshape is calculated until the calculated intensity of the peak is
lesser than sigma(Y_min(m,n,i)).EpsProf,
where sigma(Y_min(m,n,i)) is the standard deviation of the
least significant point of the diagram (commonly EpsProf=0.5).
The penalty term, Penal, is a penality function
which is calculated on some choosen bonds. To this purpose
it is necessary to precise the bond lenght length_o
for the bond b in a defined phase p at a
certain Temp. The penalty
algorithm xi increases the minimized sum S
of a quantity proportional to the square of the difference
between ideal length_o and actual length_cbond length. The
exact form of the penality function is in which d_length can be seen as
the standard deviation on the bond length
Penal= SIGMA(n) SIGMA(p) SIGMA(b)((length_o(m,n,p,b) - length_o(m,n,p,b))
/(d_length(m,n,p,b))^2
There are some differences in the way in which xnd manages the
line profiles with respect to other programs. As the line profiles can
depend on their orientation in the crystal, we will first discuss of the
the way used to represent properties depending of the orientation. Then
apply it to the simple case of the sample prefered orientation before
going to line profiles which uses the same functions.
Orientation functions
When we have to describe properties which depend on the orientation,
there are various methods. The tensor expansion can be used and can
be powerfull in the case in which we use only a part of the space.
But the sperical harmonics, and related functions, are probably
a more efficient way, they are the functions used to describe the
electron density in atoms. In high symetry crystal, it should
be more convenient to use the cubic harmonics but in this case
different sets of function will have to be used according the symmetry.
In xnd a very simple implemantation of the spherical
harmonic is use as it is it not obvious to remind the shape of
complex hybritation and to choose the rigth one to describe the
crystal properties.
That is why xnd only uses the simpliest polar
function of each degrees, that is the p orbitals and allow to
define for each function its polar axis. In the case in which
we need a term which does not depend on the direction, we use
the non polar s function.
The polar axis is defined with respect to the
orthogonal repear (X, Y, Z) in which Z is
parallel to c* and Y to b. Its orientation is characterized by the angles
of the unit vector u, theta is the angle ( u, Z) and
phi the angle between X and the projection of u on the XY plane.
Each function is repeared by an index which the simply
related to the degrre of the associated Legendre polynomial.
Their argument z is the cosine of the angle
of the hkl direction with the polar axis define above.
0 : P1 = 1
1 : P2 = (3 z2-1)/2
2 : P4 = (35 z4 - 30 z2 + 3)/8
3 : P6 = (231 z6 -315 z4 + 105 z2 -5)/16
4 : P8 = (6435 z8 -12012 z6 + 6930 z4 - 1260 z2 + 35)/128
When they share the same axis, all this functions are orthogonal. To construct
a sharp function in a direction, you have to had they up to a degree which
give you the wished sharpness.
For a given polynomial, there is only a restricted number of possible
independant functions. One for P0 which is isotropic, three for P2, five for P4 ...
Then it is not usefull to introduce more than two orientations for P2 or
four for P4. User have to respect the crystallographic symmetry, in a cubic
phase there is no P2 functions, as their sum is a trivial isotropic function.
Prefered Orientation of the sample
The prefered orientation function is a simple application of the
orientation functions. In the simple case in which the program only
contain one experiment, this typical function will then be written as :
Orien(hkl) = Coef[0] * P[0,hkl] + Coef[1] * P[1,hkl] + ...
The scale factor can be regarded as an isotropic prefered orientation function,
therefor we can not introduce the isotropic P0 function to define
a prefered orientation function.
When the function Pi and their polar axis have been choosen, P[i,hkl] take
value which depends of the angle between hkl and this polar axis.
If some experiments have to be refined together, you have to decide between
to strategies, the orientation preferred function can be common to all
experiment or if needed there is one function for each experiment.
However numerous experimental data set are well described by the way of March-Dollase
functions (Dollase, JAC (1986), 19, 267-272). This function can be well approximatated
by the upper polynomial expansion : 5% using P2,P4,P6 and 0.5% adding P8.
But it is easier to write it directly and this function can also be used
in combination with previous ones, normation and interpretation being of the
responsability of users.
Line Profile
An important difference between xnd and classical Rietveld program is in
the line profile definition. In order to allow a better knowledge of
the broadening sources, the profile functions are the convolution
of more simple functions which can be assign to instrumental or
sample related broadening. That is why xnd knows only one kind of profile
function, the Voigt function, which are the convolution of a Gauusian and
a Lorentzian curve, each of these elementary function being only characterized
by its width. In xnd some kind of angular dependencies have been introduced
to take into account the most common instrumental or sample causes.
The whole function can then be regarded as
Voigt(hkl) = Voigt_Instru(hkl) * Voigt_Sample(hkl)
in which the line widths are added according to
Width_Gauss(hkl)^2 = Width_Gauss_Instru(hkl)^2 + Width_Gauss_Sample(hkl)^2
Width_Lorentz(hkl) = Width_Lorentz_Instru(hkl) + Width_Lorentz_Sample(hkl)
Internally the program can use the Voigt functions or their approximation
by a pseudoVoigt (David, J. Appl. Cryst. 1986).
It is well known that sample broadening source can strongly depend on
the crystalline direction that is why in xnd this function are orientation
dependant. Then the sample widths are expressed as
Width_Gauss_Sample(hkl)^2 = (Width_G[0, hkl]* P[0, hkl])^2 + (Width_G[1, hkl]* P[1, hkl])^2 + ...
Width_Lorentz_Sample(hkl) = Width_L[0, hkl]* P[0, hkl] + Width_L[1, hkl]* P[1, hkl]) + ...
Sometimes it is easier to use a tensorial dependance of the widths. In such case, a special
P[i, hkl] function is used.
Line Asymmetry
As the Voigt functions are symmetrical and the observed profiles often
suffer from some asymmetry. The Voigt function are multiplied by an
assymetry function which can be expressed as
Assym = ( 1 + a . H1(dtheta/width) + b . H3(dtheta/width) )
in which H1 and H3 are the odd Hermite functions with polynomial of order 1 and 3;
and a and b are functions with different angular dependencies.
(Berar, Baldinozzi, J. Appl. Cryst. 1993). However, this function may lead to
meaningless profile when an important assymetry has to be compensated, then
the range of this correction can be specified.
Excluded regions
There is no excluded regions in xnd. This is not necessary as
xnd does not required to read equally spaced data points and
knows parasitic lines. If a region has to be excluded, just erase it
from the data file.
Anomalous scattering
xnd allows to take into account anomalous scattering and then to
analyse multiwavelength experiments. However there is one important
difference to notice between single crystal and powder experiment using
anomalous scattering. In powder the intensity is always the sum of I(h,k,l)
and I(-h,-k,-l). Then the effective Ihkl in a non centro structure will
sligthly differs from I(h,k,l). If we write the structure factor
F(h,k,l) = A + i B + i ( a + i b )
in which a and b contain all the imaginary part related to f". We will
have
I(h,k,l) = k( A^2 + B^2 + a^2 + b^2 + 2 (aB-Ab))
I(-h,-k,-l) = k( A^2 + B^2 + a^2 + b^2 - 2 (aB-Ab))
Ihkl = k( A^2 + B^2 + a^2 + b^2 )
$Id: xnd_doc.html,v 1.3 2006/04/13 10:08:42 berar Exp $