4. Combining Data - The Power of Dual Refinements

Overview

In this tutorial we will look at combining different data to improve the reliability of a refined model. We'll be looking at x-ray and neutron PDF data of BaTiO3. We'll learn why including multiple data can be beneficial; how to include multiple data in a refinement; and some of the things to be aware of when doing this. 

Required Files

File

Description

File

Description

BaTiO3_P4mm_starting.cif

Rough starting point for structure of BaTiO3

BaTiO3_11_ID_B.xy

X-ray PDF

"BaTiO3_final_Qmax32_POWGEN.xy"

Neutron PDF

Instrument Parameters

Data File

Instrument Parameters

Data File

Instrument Parameters

BaTiO3_11_ID_B.xy

dQ = 0.057

BaTiO3_final_Qmax32_POWGEN.xy

dQ = 0.02713

Tutorial Instructions

  1. We'll begin by refining the starting structure provided against X-ray PDF data collected at 11-ID-B at the APS. Create a new input file, with BaTiO3_11_ID_B.xy as the xdd. Limit the refinement range to 1 to 50 Å (we know there will be no correlations below 1 Å in this oxide material). Include the dQ_damping macro with the above parameter for dQ. .

  2. Load in the structure of BaTiO3 using BaTiO3_P4mm_starting.cif. Identify and activate the parameters which can be refined. For each site, replace the beq with a beq_spherical macro; use a common radius for all sites and starting parameters such as 0.25 (beq_lo), 0.75 (beq_hi), and 25 (beqradius) respectively.

    1. The oxygen atom sites should be refined as equivilents by assinging the same parameter (i.e., beq_loO, beq_hiO, beqradiusO).

    2. The other atomic sites should be distinct and will refine unless told otherwise, and as they are distinct sites, they should all refine individually.

    3. Add a scale (3b. add new phase from CIF > scale factor)

    4. Finally add the view_structure keyword at the end of the input file, we will use to inspect the refined structure. 

  3. Run the refinement, and inspect the results. Combine the following approaches: 

    1. Look at the refined structure using the structure viewer that we requested in the input file. Open the temporary output window by clicking the button highlighted below. Now you can select pairs of atoms and see the refined bond lengths in the output window.

    2. Check the fit using the Topas GUI. Pay particular attention to the low-r region. Try to map which bonds from the structure viewer correspond to which peaks in the PDF. 

    3. Check the refined parameters in the output file, you should get an r_wp of ~ 16.822. A good PDF refinement should sit in the <12% region, we should inspect the refinement and see what areas could be improved.

  4. A simple improvement that you could make to this model is refining the lattice parameters. Using what you learnt in previous tutorials, refine the lattice parameters making sure they obey the rules of the space group. Hint: look at the xinsert menu for a macro that will do this for you.

  5. You should find that despite all the effort so far, the region around r = 2 Å is rather unsatisfactory, and that this region contains peaks from Ti-O bonds.

    1. You will see some oxygen beq_spherical values are unrealistically high. This could be because our model is incorrect (as a matter of fact, this is the case, and we'll look at applying a better model in Tutorial 6), but you should also notice that there is very little data in this region of the PDF to start with. These weaker features (see the “additional information” tab below) originate from the weaker signal from the atom-atom correlations in this region,

    2. PDF data is notoriously hard to process, and warrants a workshop to itself, and has caused slightly deviated background which now sits at the wrong level.

    3. Overall, it is limited on what we can improve using XPDF data alone, lets introduce another data set to help improve data in this region.

  6. We can improve the model by refining it against both these X-ray data, and some corresponding neutron data simultaneously. Topas allows you to add as many xdd (which, despite the name, are used for both x-ray and neutron data) and str blocks as you like to an input file, so we can add another xdd section in. However, you also need to tell topas what you want it to do with these blocks: from one input containing a single str and multiple xdd you could:

    1. refine a single str against the xdd blocks independently - i.e. the equivalent of starting multiple independent refinements from the same starting model

    2. refine a single str against the xdd blocks concurrently - i.e. a single refined model should attempt to fit all the xdd blocks at the same time

    3. ...of course, one can build more complex input files which do more refinements as well, but we'll leave those for the moment. 

  7. Add a second xdd section to the inp file using the neutron data, don't forget to tell topas these are neutron data by including the keyword neutron_data. Include a dQ_broadening with the above value. We want the str we already have to apply to both xdd blocks, so we enclose the str in a for xdds {} loop. 

    1. Overall you should have something that now looks like this:

      ' header information, r factors, etc xdd <X-ray xdd block> ... xdd <neutron xdd block> ... for xdds { str '... a @ 4 b = Get(a); c @ 4.03 '... site Ba x 0 y 0 z 0 occ Ba 1 beq_spherical( @ , 0.25, @ , 0.75, radius, 30) '... view_structure }
  8. Rerun the refinement. You can see an immediate effect of the for xdds {} loop; this input file should launch two structure viewers from the two times topas has looped through the structure: once for each xdd. Pick an equivalent bond in the two structure viewers, and use the two temporary output window to compare the bond lengths in the two viewers.

    1. Which refinement shows the best agreement to the expected bond length?

    2. This refinement is an example of 6a.

  9. We want topas to refine a single model against the two xdd blocks, so we need to define parameter names, rather than using the anonymous @ tag that we're using currently. We therefore need to go through the structure and replace all the @ symbols with names: 

    for xdds { str '... a lattice_parameter_a 4 b = Get(a); c lattice_parameter_c 4.03 '... site Ba x 0 y 0 z 0 occ Ba 1 beq_spherical(beq_lo_Ba, 0.25, beq_hi_Ba, 0.75, radius, 30) '... view_structure }
  10. Rerun the refinement. Once again check a pair of equivalent bonds in the two viewers, and confirm they are now the same. By naming the variables, topas knows we want the same variable to apply every time it loops through the for xdds {} section.

  11. What has happened to the structure, compared to that refined against just the X-ray data? You should see that the oxygen atomic displacement parameters in particular has been improved. 

  12. In this case, we now have two sets of data that may be on completely different scales, and we have weighted each point in both xdd blocks with an identical weighting. This means topas will treat an absolute difference of 1 between the observed and calculated data in each fit equally, even if that difference is vastly more significant in one xdd than in the other. In this case, our neutron data does have larger overall intensity, so we should down-weight it accordingly. We start by using the xdd_sum keyword to calculate a scale factor for each xdd block, and then we add these together, and scale each xdd by the inverse of its proportion of this sum. We do this by including the weighting keyword with an equation, as such:

    prm sum = sumx + sumn; xdd <X-ray xdd block> ... xdd_sum !sumx = Abs(Yobs); weighting = sum/sumx; xdd <neutron xdd block> ... xdd_sum !sumn = Abs(Yobs); weighting = sum/sumn;
  13. It is important to remember that when the model is refined against multiple xdd blocks, the fit of the calculated to the observed data for any one xdd block cannot be better than when it is the only xdd refined against. By altering the weighting (i.e. try weighting = 1e6 sum/sumx;) you can vastly prioritise one xdd over another: doing so moves away from co-refinement, and toward refinement against one xdd and comparison to the other. The extreme of this is to simply set the weighting of one xdd block to be 0. With both xdd blocks included, set the weighting of the neutron block to 1, and the weighting of the X-ray block to 0. Run the refinement and check the final r_wp. Now remove the X-ray xdd completely and rerun - you should find that the r_wp and the fit to the neutron data is identical. 

  14. Dual refinements are not just for XPDF/NPDF refinements, you can use them for dual XRD/XPDF refinements as well. Refinements such as this can be very good for modelling deviations to local structure whilst still obeying an average structure. We will not show you how to do this within this tutorial, but we have taught you all the tools needed to do such a refinement, just be careful with using the correct macros (XRD and XPDF macros must be defined in the correct sections!)

    1. Further methodologies to model short/local and long/average structures within one refinement can be found in tutorials 6 & 7.

Additional Information

The contribution of a pair of atoms i and j to the total PDF has an associated weighting that is defined as such: 

where bi relates to the scattering power of the ith atom. For X-rays, bi is related to the X-ray form factor, which is proportional to Z. For neutrons, bi is the coherent scattering length. 

Atom

Z / electrons

Neutron coherent scattering length / fm

Atom

Z / electrons

Neutron coherent scattering length / fm

Ba

56

5.07

Ti

22

-3.438

O

8

5.803

So for X-ray studies of BaTiO3, a Ba-Ba partial bibj=3136; whereas a Ti-O partial has bibj=176. Here we see why the Ti-O peaks are so weak in the PDF: they have a weighting that is ~5% of the strongest pairs.

Acknowledgements

11-BM data

If data from this beamtime are used in a publication, the following Acknowledgement should be used: “Use of the Advanced Photon Source at Argonne National Laboratory was supported by the U. S. Department of Energy, Office of Science, Office of Basic Energy Sciences, under Contract No. DE-AC02-06CH11357. Data were collected as part of the 2017 Modern Methods in Rietveld Refinement and Structural Analysis School with support from its sponsors”. You may also wish to acknowledge the beamline staff that collected your data, “We thank Saul H. Lapidus for his assistance with synchrotron powder diffraction data collection at 11-BM.” 

11-ID-B data

If data from this beamtime are used in a publication, the following Acknowledgement should be used: “Use of the Advanced Photon Source at Argonne National Laboratory was supported by the U. S. Department of Energy, Office of Science, Office of Basic Energy Sciences, under Contract No. DE-AC02-06CH11357. Data were collected as part of the 2017 Modern Methods in Rietveld Refinement and Structural Analysis School with support from its sponsors”. You may also wish to acknowledge the beamline staff that collected your data, “We thank Karena W. Chapman for her assistance with synchrotron high energy X-ray scattering data collection at 11-ID-B.