Spdiameter

340 views
Skip to first unread message

Oliver Oßwald

unread,
Sep 23, 2020, 8:18:53 AM9/23/20
to diffpy-users

Good day,

 

I'm a PhD student in Professor Smarsly's group. We work with so-called non-graphitic carbons, i.e. materials with a structure similar to graphite, but with finite crystallite sizes and a certain disorder.

 

Since we are currently particularly interested in the sizes of the individual layers, we carried out WANS measurements and collected PDF data. When evaluating the PDF data, however, we have some difficulties. More precisely, we do not know exactly how the parameter "spdiameter" is to be interpreted.

 

Which distribution is assumed for the calculation of this parameter, radial or other? In the source code I found the function "sphereEnvelope", which is probably multiplied as damping on the PDF function, is that correct? What is the physical basis of this type of damping? To me it looks like the given function (0.5 (r / d) ^ 3 - 1.5 r / d + 1) is a series expansion, but I haven't yet been able to find out which function is.

 

Can you help me with this problem?

 

Best regards

 

Oliver Osswald

Peter Metz

unread,
Sep 23, 2020, 8:51:37 AM9/23/20
to diffpy-users
Hi Oliver,

Take a look at Kodama et al 2006 ( https://scripts.iucr.org/cgi-bin/paper?ay5468) paper on the subject. These are usually constructed in direct space by assuming a piecewise function which is non-zero for radii bounded by some idealized shape and zero elsewise.

Analytic shape functions exist for a handful of simple geometries (like spheres, rods, sheets). For your case, you may find a sheet function will give you a better fit over a longer r-range. I know that the sheet function is implemented in DiffPy-CMI.

There's also at least one empirical strategy that has been implemented for arbitrary nanoparticle shapes (Olds 2015, dx.doi.org/10.1107/S1600576715016581) which may also be of general interest to readers here.

Miscellanea: (a) The shape envelope is correlated with the instrument resolution which results in a ~gaussian damping envelope in direct space-- hence, higher resolution diffractometers (with more symmetric peak shapes) will give you better confidence in nanoparticle geometry assayed in direct space. Similarly, make certain you have obtained good estimates of resolution damping (Qdamp in PDFgui) from measured standard reference materials! (b) Likewise, this is the connection to reciprocal space-- to corroborate your direct-space shape envelope, look at your hkl-dependent size-broadening in your Bragg data.

Happy modeling,
Peter

ali dordaee

unread,
Nov 29, 2020, 2:03:02 PM11/29/20
to diffpy-users
Hi Peter;
 Thanks for the nice guidance. I am working in simulations so there is no size distribution for me, I just will deal with one particle size which is counted as the average particle size. I have the same problem and I have skimmed the papers and they are very nice to learn the theory. Is there any example of Diffpy cmi that they have found the nano particle size? I have searched and learned that diffpy cmi is somehow able to give it but there are some odd commands like "diffpy.srfit.pdf.characteristicfunctions.sphericalCF(rpsize)" or "diffpy.srfit.pdf.characteristicfunctions.lognormalSphericalCF(rpsizepsig)" etc.  

 First of all I don't know in the above commands are we going to already provide Diffpy with those parameters?(like we do for all functions in other programming languages) ... if so, it means we already should know the particle size. 
 Secondly, if one of these commands are going to give us the answer, how does it take place? Again I will be most appreciated if you could please let me know if there is an example in which we can find out the particle size in diffpy cmi easily by just a command.

 By the way I have an idea that I just made it up from myself... I think if I add a command like this: "recipe.addVar(pdfcontribution.psize, 5)" ... 5 is just an arbitrary number here. I got this command from one of the examples in here: "https://www.diffpy.org/diffpy.srfit/examples.html" The command will try to refine the particle size so it will give us the size. Do you think this will work? I appreciate your guidance once again.


 Thanks so much.

Peter Metz

unread,
Nov 30, 2020, 10:47:32 AM11/30/20
to diffpy-users
Hi Ali,

I'm not the right person to discuss the design of the CMI framework, but the objects will generally function both as a calculator, and as a model component in a refinement. Essentially, when objects are added to a fit object (i.e. a FitRecipe), their arguments are registered as parameters that can be refined. (Anyone actually involved in the maintenance of CMI please correct me if I've misrepresented this!)

I've attached one example I wrote up for a previous question, and you could also look at some of the tutorials hosted on GitHub (e.g. ADD-2019 CdSe NPs ).

In response to the last point-- yes, that's generally the idea, but it will only work if "psize" is the argument of a function that's already been registered with your FitRecipe. 

I hope this helps!

-Peter
calculator_with_sheetcf.py

ali dordaee

unread,
Dec 5, 2020, 10:24:27 AM12/5/20
to diffpy-users
 Hi dear Peter;
 In [9] (9th cell) of ADD-2019 CdSe NPs the psize has been kind of refined, but we know this is not a good refinement because of the large amount of uncertainties(23.89+/- 18.79) and 18.79 is a very big range of uncertainty(or error) for 23.89. I also know that rw is comparatively low here, so the fitting is almost very good. I modified the program and gave my own files to it, I got worse results in terms of psize though my fitting was even better than this fitting based on rw. I would be grateful if you could please share any ideas in this regard.

 Could you please also let me know why this example has such a big amount of uncertainty? They just mentioned somewhere that "Nearly full correlation between psize and axrat points to a poor model quality". I know axrat is the ratio between the axes. A perfect sphere has an axrat of 1. Besides not getting the meaning of the mentioned sentence, I also did not comprehend if they know where the problem is from, why did they not fix it? I need to obtain the exact size at least with a reasonable amount of uncertainties(errors). I am stumped please help me and I really appreciate your guidance.


 Best regards,
 Ali.

ali dordaee

unread,
Dec 5, 2020, 10:45:58 AM12/5/20
to diffpy-users
first_pic.JPG
second_pic_psize.JPG

Simon Billinge

unread,
Dec 5, 2020, 11:07:44 AM12/5/20
to diffpy...@googlegroups.com
I am sure someone can answer your question specifically, but if you type  "parameter correlation" into the search box (without the quotes) at diffpy-users group you will find some discussion already there and that may be a good starting point....
e.g.,
https://groups.google.com/g/diffpy-users/c/gwclJwM20bQ/m/0Zvbz5-HHlkJ (scroll to the bottom of the thread for the discussion)
https://groups.google.com/g/diffpy-users/c/kvj5WsdwPuo/m/mjH9cm5rC3EJ (this talks more about when and how to extract reliable spd's from the PDF)
and so on.

It is always a good idea to try different search queries like this to see what is there already, but also please do ask more questions on the group, as the questions and answers are what builds up this community based discussion which is great for new people learning the ropes!  There are no bad questions.

S

--
You received this message because you are subscribed to the Google Groups "diffpy-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to diffpy-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/diffpy-users/f4861021-c888-4f85-9499-a30daf5104bdn%40googlegroups.com.


--
Simon Billinge
Professor, Columbia University
Physicist, Brookhaven National Laboratory

Mikkel Juelsholt

unread,
Dec 7, 2020, 1:21:51 PM12/7/20
to diffpy-users
Hi Ali

If you look at the PDF used in the example you will see there are no uncertainties included so the uncertainties calculated are basically meaningless. 

In general be aware that the uncertainties in PDF fitting should be taken lightly as there are many error propagation steps when obtaining a PDF and they can often end up giving wrong uncertainties. 

I am not going to go more into it, but I am sure some one else can explain it if it is needed. 

Cheers Mikkel

ali dordaee

unread,
Dec 8, 2020, 6:16:49 AM12/8/20
to diffpy-users
 Thanks so much guys for the kind responses. 

 Even if I modify those uncertainties, I have a bigger problem here. As you can see in my uploaded documents(named fifth_part.jpg), and I have uploaded some screenshots which show my particle size as a very big number, while I already know it is about 50 Angstroms. I modified my fitting after reading this forum more accurately yesterday(many thanks to Professor Billinge). Invalid correlations that were 3, now they are 1([scale, psize] = -0.8715) and I can not delete this last one because without scale factor it is not calculating my fitting. Still I am getting a psize as big as almost 550 Angstroms(which is better than my former assumption)... the right Answer is almost 50 Anstroms. By the way, PDFgui gives it correctly(almost 49.15 Angstroms). 

 I have uploaded seven pictures down here including all my code(which is not much if you honor me and spare your precious attention it is not a long code) which I got from example 6 cdse of ADD2019. As I just have 1 atom type(Au), I modified it a little bit. You can follow it by the names I have given to the files(first_part, Second_part, ..., seventh_part). I will be more than grateful for any guidance/suggestions/criticism.

 Best regards,
 Ali.

second_part.JPG
seventh_part.JPG
first_part.JPG
fourth_part.JPG
sixth_part.JPG
fifth_part.JPG
third_part.JPG

Mikkel Juelsholt

unread,
Dec 9, 2020, 10:42:33 AM12/9/20
to diffpy-users
I can't say for sure, because I don't know your system and how you measured your data. You must be doing something different between your PDFgui and Diffpy refinement.
However your Qdamp is very high. For most synchrotrons it is around 0.03-0.04. For most neutron sources and lab instruments it is lower. 

Cheers Mikkel


Peter Metz

unread,
Dec 18, 2020, 11:09:04 AM12/18/20
to diffpy-users
Hi Ali and Co.

I think Mikkel has landed on the answer.

If the resolution damping of your instrument is truly 0.06, then you may not have sufficient resolution to extract the particle size in question.

Some things to try:
   (a) repeat fit of PDF on an instrument standard to check Qdamp is correctly extracted
   (b) estimate particle size and esd from your Bragg data (sanity check)
   (c) collect data on a higher resolution instrument.

If I recall you were looking at simulated data anyway-- turn up your reciprocal space resolution, and see if the ESD on the size parameter shrinks to a reasonable size.

-Peter 
insufficient_resolution.png


gist_instrument_res_vs_envelope.py
Reply all
Reply to author
Forward
0 new messages