Re: Anisotropic peak broadening with TOPAS

2008-10-31 Thread Frank Girgsdies

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

2008-10-31 Thread AlanCoelho
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

2008-10-30 Thread Frank Girgsdies

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

2008-10-29 Thread Matthew.Rowles
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)
--