Pr₂NiO₄ on 5C2¶
Fit the layered nickelate Pr₂NiO₄ to constant-wavelength neutron single-crystal data from 5C2 at LLB, with anisotropic displacements.
The project is the catalogue case sc-neut-cwl_pr2nio4-5c2, the one the command line and the
app's Examples open.
Fitting
Single sc neut cwl Bragg
Crystal structure
import easydiffraction as edi
Load the project¶
project_path = edi.download_data('sc-neut-cwl_pr2nio4-5c2', destination='data')
project = edi.Project.load(project_path)
structure = project.structures['pr2nio4']
experiment = project.experiments['llb_5c2']
Data 'sc-neut-cwl_pr2nio4-5c2' is at data/sc-neut-cwl_pr2nio4-5c2-cfb07d23bd89/sc-neut-cwl_pr2nio4-5c2
The project marks what its fit frees. The fit below frees it in stages, so start with all of it fixed.
for parameter in project.free_parameters:
parameter.free = False
project.display.pattern('llb_5c2')
Perform the analysis¶
A single crystal has no background or profile: the stages are the scale, the positions, the interstitial oxygen's displacement, then the displacement tensors.
Scale¶
The scale brings the calculated intensities to the measured ones.
experiment.linked_structures['pr2nio4'].scale.free = True
project.display.parameters.free()
project.analysis.fit()
project.display.fit.results()
edi fit: project sc-neut-cwl_pr2nio4-5c2, 198 pts fitted / 198 loaded, 1 free
iter time (s) wR(F²) (%) reduced χ² change
115.85 6415.49
1 0.001 49.30 1161.93 81.9% ↓
2 0.002 49.30 1161.93
done · converged · 2 iters · reduced χ² 1161.93 · wR(F²) 49.30 % · 0.00 s
project.display.pattern('llb_5c2')
Positions¶
The coordinates each site's symmetry leaves free.
for site in structure.atom_sites:
for coordinate in (site.fract_x, site.fract_y, site.fract_z):
coordinate.free = not coordinate.symmetry_constrained
project.analysis.fit()
project.display.fit.results()
edi fit: project sc-neut-cwl_pr2nio4-5c2, 198 pts fitted / 198 loaded, 6 free
iter time (s) wR(F²) (%) reduced χ² change
49.30 1192.18
1 0.001 47.49 1106.20 7.2% ↓
2 0.002 46.77 1072.93 3.0% ↓
3 0.003 46.69 1069.03 0.4% ↓
4 0.004 46.64 1067.00 0.2% ↓
5 0.005 46.63 1066.25 0.1% ↓
6 0.006 46.61 1065.55 0.1% ↓
7 0.007 46.60 1065.20
8 0.008 46.60 1064.86
9 0.009 46.59 1064.67
10 0.010 46.59 1064.48
11 0.011 46.59 1064.37
12 0.012 46.58 1064.26
13 0.013 46.58 1064.19
14 0.014 46.58 1064.13
15 0.015 46.58 1064.09
16 0.016 46.58 1064.05
17 0.017 46.58 1064.02
18 0.018 46.58 1063.99
19 0.019 46.58 1063.98
20 0.020 46.58 1063.96
21 0.021 46.58 1063.95
22 0.022 46.58 1063.94
23 0.023 46.58 1063.93
done · converged · 23 iters · reduced χ² 1063.93 · wR(F²) 46.58 % · 0.02 s
project.display.pattern('llb_5c2')
The interstitial displacement¶
The isotropic displacement of the interstitial oxygen Od.
structure.atom_sites['Od'].adp_iso.free = True
project.analysis.fit()
project.display.fit.results()
edi fit: project sc-neut-cwl_pr2nio4-5c2, 198 pts fitted / 198 loaded, 7 free
iter time (s) wR(F²) (%) reduced χ² change
46.58 1069.50
1 0.001 46.52 1067.17 0.2% ↓
2 0.002 46.52 1066.73
3 0.003 46.51 1066.69
done · converged · 3 iters · reduced χ² 1066.69 · wR(F²) 46.51 % · 0.00 s
project.display.pattern('llb_5c2')
Anisotropic displacements¶
Last, the tensors, each with the components its site symmetry leaves free.
for tensor in structure.atom_site_aniso:
for component in (
tensor.adp_11,
tensor.adp_22,
tensor.adp_33,
tensor.adp_12,
tensor.adp_13,
tensor.adp_23,
):
component.free = not component.symmetry_constrained
project.analysis.fit()
project.display.fit.results()
edi fit: project sc-neut-cwl_pr2nio4-5c2, 198 pts fitted / 198 loaded, 23 free
iter time (s) wR(F²) (%) reduced χ² change
46.51 1164.22
1 0.001 16.34 143.71 87.7% ↓
2 0.003 4.78 12.28 91.5% ↓
3 0.004 4.34 10.15 17.4% ↓
4 0.006 4.29 9.89 2.6% ↓
5 0.007 4.27 9.79 0.9% ↓
6 0.009 4.26 9.76 0.3% ↓
7 0.010 4.26 9.75 0.1% ↓
8 0.012 4.26 9.75
9 0.014 4.26 9.75
done · converged · 9 iters · reduced χ² 9.75 · wR(F²) 4.26 % · 0.02 s
project.display.pattern('llb_5c2')
project.display.fit.correlations()
project.display.structure('pr2nio4')
Save the project¶
project.save_as('sc-neut-cwl_pr2nio4-5c2')
project.report.save_html('sc-neut-cwl_pr2nio4-5c2.html')
Saving project to 'sc-neut-cwl_pr2nio4-5c2'
Saving report to 'sc-neut-cwl_pr2nio4-5c2.html'