the condition to not violate some elementary principles, in particular,Dear Prof Popa,
here, the invariance to symmetry.
I had been meaning to implement the quartic form for peak width in a refinement program for some time, but did not figure out how to generate the constraints from a general list of symmetry operators. Is there a simple trick for doing this? I was thinking of just choosing a particular peak like hkl=(1,2,3) where all the fifteen quartic terms look to be different, and then just comparing the terms generated by symmetry equivalent peaks. Then if the code for getting equivalent reflections is OK, the constraints can be determined, messily, that way. Is this on the right track?
I was also wondering if the user should be allowed to choose a different symmetry for the peak widths compared to the crystal structure. I thought it was possible to measure quite different peak shapes for equivalent hkl's in heavily deformed single crystals...? Something like a powdered iron sample which has strains introduced by being squashed between two magnets might have a lower symmetry for the peak broadening compared to the cubic crystal symmetry. Does the powder averaging somehow wash this kind of effect away? What about small distortions which only show up in the peak widths and where the space group change does not generate superstructure peaks (eg P4/m to P2/m)? At some point in a series of datasets going through a second order transition you'd want to go from tetragonal to monoclinic in a smooth way. What about samples containing a mixture of strained and unstrained crystallites? I guess that ought to modelled as two phases?
Thanks in advance for any advice. Sadly I don't know if I will ever find to the time to get this peakshape stuff going until I have a sample that really needs it...
Jon
PS: With the debate raging over which is the "right" approach, I got very confused, is one an extension of the other...? Assuming you normalise the L11 etc by the reciprocal cell metric tensor elements (who wouldn't ?-), then making them all equal gives isotropic strain. Allowing those Lij to be different from each other gives an ellipsoid with six degrees of freedom, which would seem to be related to the S_hkl parameters as below. Going to the quartic form just allows the elements in that matrix to be inconsistent with the Lij parameters (eg the entries for L11*L11, L22*L22 and L11*L22 do not agree on the L11 and L22 values). In implementing this stuff it would seem more sane to define Lij as being normalised by the cell parameters (RM11 etc in GSAS) and to subtract off the isotropic contribution (LY). Then define the S_hkl in terms of the Lij and "LY" - with the diagonal elements as Lij^2 and the off diagonal elements as being the difference between the values needed to fit the peaks, and the values predicted by the Lij's. This means that the anisotropic broadening model with just one direction (stec? in GSAS) can also be implemented by making two of the eigenvectors of an Lij based matrix be equal (you could refine a direction).
It might be more work for the programmer, but numerically things should be more stable if the functions refined are more orthogonal to each other. Fitting the anisotropy as the difference between the peak widths, rather than their absolute values should make life easier, at least for getting the fit started. Also I much prefer to have refined values where I can ask if something is within esd of being zero! (Is the anisotropic broadening "significant"? Am I in a false minimum?)
width = sqrt{( L11 h*h ) ( L11 h*h )^T } ( L22 k*k ) ( L22 k*k ) ( L33 l*l ) ( L33 l*l ) ( L12 h*k ) ( L12 h*k ) ( L13 h*l ) ( L13 h*l ) ( L23 k*l ) ( L23 k*l )
giving: (work out the h,k,l powers from the 11, 12 etc)
( L11*L11, L22*L11, L33*L11, L12*L11, L13*L11, L23*L11 ) ( L11*L22, L22*L22, L33*L22, L12*L22, L13*L22, L23*L22 ) ( L11*L33, L22*L33, L33*L33, L12*L33, L13*L33, L23*L33 ) ( L11*L12, L22*L12, L33*L12, L12*L12, L13*L12, L23*L12 ) ( L11*L13, L22*L13, L33*L13, L12*L13, L13*L13, L23*L13 ) ( L11*L23, L22*L23, L33*L23, L12*L23, L13*L23, L23*L23 )
The fifteen S_hkl parameters are then: 1 L11*L11 4 L11*L12 7 L22*L23 2 L22*L22 5 L11*L13 8 L33*L13 3 L33*L33 6 L22*L12 9 L33*L23 10 L11*L22 + L12*L12 11 L11*L33 + L13*L13 12 L22*L33 + L23*L23 13 L12*L23 + L22*L13 14 L13*L23 + L33*L12 15 L12*L13 + L11*L23
So one could make a peakshape with the 6 by 6 matrix above and implement all of the different models (single direction, ellipsoid and quartic form) in terms of the constraints on the matrix elements.
Can someone tell me if all that is "right" or "wrong"? I was kind of hoping that if I ever do get around to it, I could have a single peak shape function which works for everything and never needs to be messed about with again...!
Would there be any reason to apply the same thing for texture, crystallite size or peak shifts due to strain? A single set of "quartic hkl" subroutines could then be called from whatever wants to use them, and it could ask for the degree of complexity and symmetry that it wants.