Calculation of XRD pattern of h-LuFeO3 using python


Updated on April 4, 2014


The calculation is divided into three parts:

a) Get the atomic position of Lu, Fe and O from the given Wyckoff positions in a CIF file of h-LFO,
b) Calculate the allowed (h, k, l)
c) Find the atomic form factors of Lu, Fe and O for different (h, k, l) and use them to calculate structure factors.



In the next step I calculate allowed hkl values. The condition imposed here is that the sine of Bragg angle for a k-vector should not exceed 1. This condition does not account for systematic absences. Peaks corresponding to systematic absences have 0 or negligible intensity in final calculations. The basis vectors in k-space were calculated manually. I plan to write a program to evaluate basis vectors in k-space.



Next, I calculate the atomic form factors of Lu, Fe and O. Atomic form factors are functions of hkl and also depend on oxidation states of elements in the compound under study. The data on atomic form factors of various elements and their different oxidation states can be found at

http://lamp.tu-graz.ac.at/~hadley/ss1/crystaldiffraction/atomicformfactors/formfactors.php

The following is a plot of atomic for factors of Lu, Fe and O:




The continuous curve represent the data obtained from approximate equations mentioned in the above site whereas the discrete points represent data obtained from B. D. Cullity. However, in the calculations, I have used form factors of Lu+++. Fe+++ and O++.

The positions of atoms in unit h-LFO cell were obtained from P63cm group calculations and are contained in position.txt file.



I used a loop to evaluate form factors, structure factors, d-spacing and Bragg angles. Note that here I refer to absolute value of structure factor as intensity instead of its square. Actual intensity can be obtained by squaring the structure factor and factoring in the Lorentz and Polarization factors. Results of each calculation are stored in lists.




Data from the above lists is now arranged in the form of an array and exported as a intensity 1.789.txt file. The above commands above result in an array containing only hkl, Bragg angles and structure factors. We can get d-spacing by including d in inten_profile list.






Following is a plot of structure factors and 2*Bragg angle produced in python:











Comments

Post a Comment