The xnd program.

xnd top Next file Previous file

General information

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))


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.

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]) + ...

Line Asymmetry

As the Voigt functions are symmetrical and the observed profiles often suffer from some asymmetry. The Voigt function are multiplied by an assymtry 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).

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  )

xnd top Next file Previous file

$Id: xnd_doc.html,v 1.2 2002/04/22 14:52:58 berar Exp $