Re: Anisotropic peak broadening with TOPAS
Dear Topas users, thanks to your helpful input, I've now come up with a (probably clumsy) solution to achieve my goal (see my original post far down below). For those who are interested, I'll explain it in relatively high detail, but before I do so, I want to make some statements to prevent unnecessary discussions. The reasoning behind my doing is the following: Investigating a large series of similar but somehow variable samples, my goal is to derive numerical parameters for each sample from its powder XRD. Using these parameters, I can compare and group samples, e.g. by making statements like sample A and B are similar (or dissimilar) with respect to this parameter. Thus, the primary task is to parametrize the XRD results. Ideally, such parameters would have some physical meaning, like lattice parameters, crystallite size etc. However, this does not necessarily mean that I would interpret or trust parameters like e.g. LVol-IB on an absolute scale!!! After all, it is mainly relative trends I'm interested in. LVol-IB is is one of the parameters I get and tabulate if the peak broadening can be successfully described as isotropic size broadening. [For details on LVol-IB, see Topas (v3) Users Manual, sections 3.4.1 and 3.4.2)] If, however, the peak broadening is clearly anisotropic, applying the isotropic model gives inferior fit results. LVol-IB is still calculated, but more or less meaningless. Thus, I wanted an anisotropic fit model that BOTH (a) yields a satisfactory fit AND (b) still delivers parameters with a similar meaning as the isotropic LVol-IB. Applying a spherical harmonics function satisfied condition (a), but not (b) (maybe just due to my lack in mathematical insight). Applying Peter Stephens' code (but modified for size broadening) met condition (a) and brought me halfway to reach condition (b). As I did not find a way of teaching (coding) Topas to do all calculations I wanted in the launch mode, I developed a workaround to reach (b). Now in detail: The modified Stephens code I use looks like this: prm s400 29.52196`_2.88202 min 0 prm s040 40.52357`_4.10160 min 0 prm s004 6631.09739`_227.63909 min 0 prm s220 54.23582`_13.82762 prm s202 1454.83518`_489.04664 prm s022 5423.10499`_765.48349 prm mhkl = H^4 s400 + K^4 s040 + L^4 s004 + H^2 K^2 s220 + H^2 L^2 s202 + K^2 L^2 s022; lor_fwhm = (D_spacing^2 * Sqrt(Max(0,mhkl)) / 1) / Cos(Th); Compared to Peters original code, I have changed the strain dependence * Tan(Th) into the size dependence / Cos(Th) and re-arranged the remaining terms in that line of code. [Peter has mentioned that from the fundamental theoretical point of view, spherical harmonics might be better justified then his formula for the case of SIZE broadening. Anyway, it works for me from the practical point of view, thus I'll use it.] This rearrangement emphasizes the analogy between the isotropic case c / Cos(Th) (where c is valid for ALL peaks) and the anisotropic one, where c is replaced by the hkl dependent term (D_spacing^2 * Sqrt(Max(0,mhkl)) / 1). Thus, I freely interpret this term as some sort of c(hkl), which I will use for some specific values of hkl to derive hkl dependent analogues of LVol-IB. The first step of this calculation I managed to code for Topas based on Peters equations, but for specifc hkl values: prm ch00 = (Lpa^2 * Sqrt(s400) / 1); : 0.24382`_0.01190 prm c0k0 = (Lpb^2 * Sqrt(s040) / 1); : 0.45185`_0.02287 prm c00l = (Lpc^2 * Sqrt(s004) / 1); : 0.13114`_0.00225 As you can see, the c(hkl) term becomes very simple for the cases hkl = 100, 010 and 001. For these reflections, the D_spacing can be replaced with the corresponding reserved variables for the lattice parameters. Now, I want to calculate something like LVol-IB(hkl) from these c(hkl) values. I still don't know how to code this in launch mode, so I developed a workaround and switch back to GUI mode. In the GUI, I do the following: 1) I fix the lattice parameters to the values obtained after running the anisotropic fit in launch mode. 2) I deactivate the Cry Size L parameter on the Structure tab and add a Lorentzian type 1/Cos(Th) convolution on the Additional Convolutions tab instead. Both do the same thing, but only the latter has the input format I need. 3) I paste one of the c(hkl) values from the *.out file of the anisotropic refinement, e.g. the value calculated for ch00, into the Value box of that convolution and keep it fixed. Then I start the refinement. Since lattice parameters and peak shape are fixed, there is not much to be refined. Not surprisingly, I obtain an ugly looking fit in which only few reflections are adequately described (e.g. the h00 series in this case). 4) I use the Capture option to grab the calculated pattern which is then inserted as a new range. I export this range as
RE: Anisotropic peak broadening with TOPAS
Hi Frank I'm not 100% sure what you have been doing but I think the copying and pasting to get LVol values for particular sets of hkls can be maybe done in a more simple manner as shown below. If it's not clear then contact me off the list. prm lor_h00 300 min .3 prm lor_0k0 300 min .3 prm lor_00l 300 min .3 prm lor_hkl 300 min .3 prm gauss_h00 300 min .3 prm gauss_0k0 300 min .3 prm gauss_00l 300 min .3 prm gauss_hkl 300 min .3 prm = 1 / IB_from_CS(gauss_h00, lor_h00); : 0 ' This is LVol prm = 0.89 / Voigt_FWHM_from_CS(gauss_h00, lor_h00); : 0 ' This is LVol_FWHM lor_fwhm = (0.1 Rad Lam / Cos(Th)) / IF And(K == 0, L == 0) THEN lor_h00 ELSE IF And(H == 0, L == 0) THEN lor_0k0 ELSE IF And(H == 0, K == 0) THEN lor_00L ELSE lor_hkl ENDIF ENDIF ENDIF ; gauss_fwhm = (0.1 Rad Lam / Cos(Th)) / IF And(K == 0, L == 0) THEN gauss_h00 ELSE IF And(H == 0, L == 0) THEN gauss_0k0 ELSE IF And(H == 0, K == 0) THEN gauss_00L ELSE gauss_hkl ENDIF ENDIF ENDIF ; Cheers Alan -Original Message- From: Frank Girgsdies [mailto:[EMAIL PROTECTED] Sent: Friday, 31 October 2008 11:29 PM To: Frank Girgsdies; Rietveld_l@ill.fr Subject: Re: Anisotropic peak broadening with TOPAS Dear Topas users, thanks to your helpful input, I've now come up with a (probably clumsy) solution to achieve my goal (see my original post far down below). For those who are interested, I'll explain it in relatively high detail, but before I do so, I want to make some statements to prevent unnecessary discussions. The reasoning behind my doing is the following: Investigating a large series of similar but somehow variable samples, my goal is to derive numerical parameters for each sample from its powder XRD. Using these parameters, I can compare and group samples, e.g. by making statements like sample A and B are similar (or dissimilar) with respect to this parameter. Thus, the primary task is to parametrize the XRD results. Ideally, such parameters would have some physical meaning, like lattice parameters, crystallite size etc. However, this does not necessarily mean that I would interpret or trust parameters like e.g. LVol-IB on an absolute scale!!! After all, it is mainly relative trends I'm interested in. LVol-IB is is one of the parameters I get and tabulate if the peak broadening can be successfully described as isotropic size broadening. [For details on LVol-IB, see Topas (v3) Users Manual, sections 3.4.1 and 3.4.2)] If, however, the peak broadening is clearly anisotropic, applying the isotropic model gives inferior fit results. LVol-IB is still calculated, but more or less meaningless. Thus, I wanted an anisotropic fit model that BOTH (a) yields a satisfactory fit AND (b) still delivers parameters with a similar meaning as the isotropic LVol-IB. Applying a spherical harmonics function satisfied condition (a), but not (b) (maybe just due to my lack in mathematical insight). Applying Peter Stephens' code (but modified for size broadening) met condition (a) and brought me halfway to reach condition (b). As I did not find a way of teaching (coding) Topas to do all calculations I wanted in the launch mode, I developed a workaround to reach (b). Now in detail: The modified Stephens code I use looks like this: prm s400 29.52196`_2.88202 min 0 prm s040 40.52357`_4.10160 min 0 prm s004 6631.09739`_227.63909 min 0 prm s220 54.23582`_13.82762 prm s202 1454.83518`_489.04664 prm s022 5423.10499`_765.48349 prm mhkl = H^4 s400 + K^4 s040 + L^4 s004 + H^2 K^2 s220 + H^2 L^2 s202 + K^2 L^2 s022; lor_fwhm = (D_spacing^2 * Sqrt(Max(0,mhkl)) / 1) / Cos(Th); Compared to Peters original code, I have changed the strain dependence * Tan(Th) into the size dependence / Cos(Th) and re-arranged the remaining terms in that line of code. [Peter has mentioned that from the fundamental theoretical point of view, spherical harmonics might be better justified then his formula for the case of SIZE broadening. Anyway, it works for me from the practical point of view, thus I'll use it.] This rearrangement emphasizes the analogy between the isotropic case c / Cos(Th) (where c is valid for ALL peaks) and the anisotropic one, where c is replaced by the hkl dependent term (D_spacing^2 * Sqrt(Max(0,mhkl)) / 1). Thus, I freely interpret this term as some sort of c(hkl), which I will use for some specific values of hkl to derive hkl dependent analogues of LVol-IB. The first step of this calculation I managed to code for Topas based on Peters equations, but for specifc hkl values: prm ch00 = (Lpa^2 * Sqrt(s400) / 1); : 0.24382`_0.01190
Re: Anisotropic peak broadening with TOPAS
Dear Matthew, thanks for your reply. I hope to look a bit deeper into it (and try the code) a little later today. At the first glance, however, I'm not sure whether treating hk0 and hkl the same way would be appropriate from the theoretical point of view. But as I'm a practical guy, I will just give it a try. Thanks again! Frank [EMAIL PROTECTED] wrote: Sorry, pressed the wrong button... If you just want to try fitting the peaks, you could try something like this: str phase_name Metal_oxide local broad 100 'crys size for hk0 and hkl local sharp 2000 'crys size for 00l local csL = IF (And(H == 0, K == 0, L 0)) THEN sharp ELSE broad ENDIF; CS_L(csL) 'insert remainder of structure... I don't know much about Lvol, but isn't an average crystallite size for a highly asymmetric crystal not all that meaningful? I am willing to be educated here, as I haven't had much need to get accurate crystallite size from diffraction data before Cheers Matthew Matthew Rowles CSIRO Minerals Box 312 Clayton South, Victoria AUSTRALIA 3169 Ph: +61 3 9545 8892 Fax: +61 3 9562 8919 (site) Email: [EMAIL PROTECTED] -Original Message- From: Frank Girgsdies [mailto:[EMAIL PROTECTED] Sent: Wednesday, 29 October 2008 22:05 To: Rietveld_l@ill.fr Subject: Anisotropic peak broadening with TOPAS Dear Topas experts, C) One could leave the spherical harmonics approach and go to a user defined model, which refines different Cry Size parameters for different crystal directions. In my case, two parameters would probably be sufficient, one for the c-direction, and a common one for the a- and b-direction. The Topas Technical Reference, section 7.6.3. gives a similar example of a user defined peak broadening function, depending on the value of l in hkl. I could probably come up with an analogous solution which has a 1/cos(theta) dependence and two parameters, one for the 00l and one for the hk0 case. My problem with this approach is how to treat the mixed reflections hkl. I suppose they should be scaled with a somehow weighted mix of the two parameters, where the weighting depends on the angle between the specific hkl and the c-axis. However, I no idea how a physically reasonable weighting scheme (and the corresponding Topas syntax) should look like. -- Frank Girgsdies Department of Inorganic Chemistry Fritz Haber Institute (Max Planck Society) --
RE: Anisotropic peak broadening with TOPAS
Sorry, pressed the wrong button... If you just want to try fitting the peaks, you could try something like this: str phase_name Metal_oxide local broad 100 'crys size for hk0 and hkl local sharp 2000 'crys size for 00l local csL = IF (And(H == 0, K == 0, L 0)) THEN sharp ELSE broad ENDIF; CS_L(csL) 'insert remainder of structure... I don't know much about Lvol, but isn't an average crystallite size for a highly asymmetric crystal not all that meaningful? I am willing to be educated here, as I haven't had much need to get accurate crystallite size from diffraction data before Cheers Matthew Matthew Rowles CSIRO Minerals Box 312 Clayton South, Victoria AUSTRALIA 3169 Ph: +61 3 9545 8892 Fax: +61 3 9562 8919 (site) Email: [EMAIL PROTECTED] -Original Message- From: Frank Girgsdies [mailto:[EMAIL PROTECTED] Sent: Wednesday, 29 October 2008 22:05 To: Rietveld_l@ill.fr Subject: Anisotropic peak broadening with TOPAS Dear Topas experts, C) One could leave the spherical harmonics approach and go to a user defined model, which refines different Cry Size parameters for different crystal directions. In my case, two parameters would probably be sufficient, one for the c-direction, and a common one for the a- and b-direction. The Topas Technical Reference, section 7.6.3. gives a similar example of a user defined peak broadening function, depending on the value of l in hkl. I could probably come up with an analogous solution which has a 1/cos(theta) dependence and two parameters, one for the 00l and one for the hk0 case. My problem with this approach is how to treat the mixed reflections hkl. I suppose they should be scaled with a somehow weighted mix of the two parameters, where the weighting depends on the angle between the specific hkl and the c-axis. However, I no idea how a physically reasonable weighting scheme (and the corresponding Topas syntax) should look like. -- Frank Girgsdies Department of Inorganic Chemistry Fritz Haber Institute (Max Planck Society) --