Dear Topas users,
I am doing Rietveld refinement of a TOF neutron powder diffraction pattern of an inclusion compound that contains D2 molecules. I suspect that they are rotating freely in the crystal structure.
I have calculated scattering factor of such a freely rotating D2 molecule and would like to refine it using Topas. The problem is that I do not know how to input my scattering factor (even fitted with 5 exponentials like the scattering factors of atoms and ions for X-ray diffraction that are stored in the ATMSCAT.CPP file). I have created a fake isotope placed it in the isotopes.txt file, and input the scattering factor into the neutscat.cpp file but it seems that it does not work. Is what I want to do feasible at all with TOPAS?
I will be grateful for your help.
With kind regards,
Piotr Guńka
arbitrary scattering factor for Rietveld refinement of TOF NPD
Hi Piotr
To refine on the neutron scattering length use:
f0_f1_f11_atom f0 Ca @ 0.47
Search for f0_f1_f11_atom in the Tehcnical_Reference.PDF.
Note, for neutron data the occupancy is 100% correlated with f0. You could in fact refine on the occ parameter instead.
Dear Alan,
thank you for your suggestion. I am afraid this won't work since the scattering factor is not constant for a freely rotating molecule. The formula is C1 * sin(Q* C2) / Q, where C1 and C2 are some constants.
It can be fitted nicely with a f0[k] = c + [SUM a_iEXP(-b_i(k2)), i=1,5 like atomic scattering factor for X-rays.
Is there a way to input such a scattering factor for refinement against neutron data?
- Edited
Maybe something like
prm A 1 min 0 max 10
prm B 0.1 min 0 max 1
f0_f1_f11_atom f0 Ca = A D_spacing Sin( B / D_spacing );
There is a section on refining on X-ray and neutron form factors in the technical reference, which, I think, would help in what you're doing.
- Edited
Yes, that's exactly what I'm looking for. Thank you! I found it in the TechnicalReference.pdf.
My input is:
'Here I input the scattering factor for a freely rotating D2 molecule
prm !C1 31.0801
prm !C2 0.37075
f0_f1_f11_atom f0 D = C1 Sin( C2 D_spacing ) / D_spacing;
report_on_str
This gives me an error though:
*** Error loading sstring_in at
{ D }
unknown or misplaced keyword.
at LINE 147
lines 147 contains f0_f1_f11_atom f0 D = C1 Sin( C2 D_spacing ) / D_spacing;
Could you help me to find the reason for this error?
- Edited
OK. I found the error.
Line 147 should read
f0_f1_f11_atom D f0 = C1 Sin( C2 D_spacing ) / D_spacing;
Thank you, @alan-coelho and @rowlesmr for your help
These two equations aren't equivalent:
C1 * sin(Q* C2) / Q
f0 = C1 Sin( C2 D_spacing ) / D_spacing;
- Edited
Do you mean that Q = 2pi/D_spacing? If so, I took this into account and my line looks like this:
f0_f1_f11_atom D f0 = C1 D_spacing Sin( C2 / D_spacing );
I'm pretty sure its 2*pi. You can double check in tech ref, or by toggling 2th/d/q scales in the gui.
johnsoevans Thank you.
- Edited
I took me some time but I finally figured that Topas does not work as expected (at least by me). With this input:
`f0_f1_f11_atom D f0 = C1 D_spacing Sin( C2 / D_spacing );
Topas takes f0 for Q vector equal to zero and uses this one value of f0 for all Q vectors i.e. for all D_spacings.
This is not what I wanted as I wanted a scattering factor that is different for different D_spacings. I tried inputting the variable scattering factor using the table method described in chapter 17.13.1 of the technical reference but this does not work properly either.
Is there any way to force Topas to use variable scattering length for neutron diffraction data (meaning that the scattering length of the defined object is not Q vector length independent)?
If neutron_data then only f0 is used and only one value for all D_spacings. Can I ask why you would want to use different f0 values for D_spacings for neutron_data.
Anyway, to do what you want then there are two ways:
1) Don't use the neutron_data keyword and instead input f0, f1 and f11 values for all atoms; ie. simply set f1 and f11 to zero for example.
2) Use scale_occ, see page 196 of the Technical_Reference.PDF or search for scale_occ. Note, scale_occ can be used as the scattering power for neutron_data on a particalar site is simply occ multiplied by and f0.
I would use case (2).
cheers
alan
Dear Alan,
thank you for your answer. I will give it a shot soon and let you know how it goes.
I want to use different f- values for different D_spacings, because I suspect that there is a freely rotating D2 molecule in the crystal structure. I have calculated scattering factor of such an entity and I want to use the calculated scattering factor in Topas.
Cheers,
Piotr
Unfortunately, I only have license for Topas 5 available and I cannot use the scale_occ keyword. I am not sure if I can use option 1, because I have TOF NPD data. I will ask my collaborators to try out the scale_occ keyword.
Dear Alan,
the scale_occ keyword does what I wanted.
Thank you for your help.
Cheers,
Piotr