Mstruct my program/library for MicroStructure analysis by ... · 0.5 incidence angle (deg)-2Theta...
Transcript of Mstruct my program/library for MicroStructure analysis by ... · 0.5 incidence angle (deg)-2Theta...
-
MStructprogram/library
for MicroStructure analysisby powder XRD
What is it, how does it work, what is included and what is it useful for?
Zdeněk Matěj
http://xray.cz/mstruct
http://xray.cz/mstruct
-
Outline
1. What is it? How did it start? What is it based on?
2. How does it work? How can I use it?
3. What can it do? What is included?List of features/effects (~10)
with short description and examples. (possibilities and limitations)
10/14/2009 2
-
What is it?
• Program/libraryfor analysis of materialsMicroStructureby powder XRD.
– Practically a typical Rietveld program.Rodriguez-Carvajal: FullProf; Larson&VonDreele&Toby: GSAS; Kern: TOPAS, Lutterotti: MAUD; Birkenstock: BRASS; Petříček: Jana; …
– It includes physically relevant models for peak broadeningand shift. Scardi&Leoni: PM2k; Ribárik&Ungár: CMWP-fit
– It accounts for thin film absorption correction and asymmetrical diffraction geometry. Lutterotti: MAUD
10/14/2009 3
-
History: How did it start? What it is based on?
• FOX: ‘Free Objects for Crystallography’
– free, open-source, program for ab initio structure determination from powder diffraction. Developed by Vincent Favre-Nicolin in collaboration with Radovan Černý.
ref: J.Appl.Cryst. 35 (2002), 734-743
– Written in C++and based on thelibrary ObjCryst++
MStruct-presentation-2009 4
Vincent Favre-Nicolin:http://vincefn.net/Fox/
Fox-1.8.1.2-R1117/Fox-1.8.1.2-R1117.exehttp://vincefn.net/Fox/
-
Fox – program ©V.Favre-Nicolin, R.Černý
10/14/2009 5
Fox-1.8.1.2-R1117/Fox-1.8.1.2-R1117.exeFox-1.8.1.2-R1117/Fox-1.8.1.2-R1117.exeFox-1.8.1.2-R1117/Fox-1.8.1.2-R1117.exeFox-1.8.1.2-R1117/Fox-1.8.1.2-R1117.exe
-
ObjCryst++ Library ©V.Favre-Nicolin, R.Černý
– Library of C++ objects for crystallography computing
– Utilizes cctbx – ‘Computational Crystallography Toolbox’ developed by R. W. Grosse-Kunstleve and P. D. Adams
ref: J.Appl.Cryst43. 35 (2002), 126-136
10/14/2009 6
ObjCryst
cctbx
Fox.cpp
objcryst_doc_html/index.htmlobjcryst_doc_html/index.html
-
Our contribution: MStruct
– Contains add-on routines for microstructure analysis
– ObjCryst::LSQNumObj used for LSQ data refinement
– What is missing?• xml output (standard for all ObjCryst objects)
• wxWidgets interface -> no GUI availableProgram rus in text-mode(DOS) and external text editor and data
visualization software are necessary.
10/14/2009 7
ObjCryst
cctbx
MStruct
mstruct.cpp
mstructmstruct
-
PROGRAM: data and .imput files
10/14/2009 8
Program:•1) mstruct.exe•2) libfftw3-3.dll•3) structures.xml
Data:•1) my_pattern.xy•2) my_background.bgr
.imput (parametrs) files:•1) my_sample.imp•2) Ihkl_diffData_myPhase.dat
Output:•1) my_pattern.dat•2) my_sample.out•3) Ihkl_diffData_myPhase.dat
-
PROGRAM: rrunning program (in Matlab enviroment)
• system('mstruct < 64-3-225-05.imp > 64-3-225-05.out'),
• tio2('64-3-225-05');
10/14/2009 9
program execution input redirection input file output redirectionprogram text output
script to plot refined data
-
Why use libraries? How it is useful?
Library: including new reflection profile model
– Derive your own (children) class from ObjCryst::ReflectionProfile class• Implement appropriate methods for your class:
– CrystVector_REAL GetProfile (const CrystVector_REAL &x, const REAL xcenter,const REAL h, const REAL k, const REAL l)
– REAL GetFullProfileWidth (const REAL relativeIntensity, const REAL xcenter,const REAL h, const REAL k, const REAL l)
– Or derive fromMStruct::ReflectionProfileComponent class• Implement:
– CrystVector_REAL GetProfile (const CrystVector_REAL &x, const REAL xcenter,const REAL h, const REAL k, const REAL l)
– REAL GetApproxFWHM (const REAL xcenter, const REAL h, const REAL k, const REAL l) const
10/14/2009 10
x-axis values, where the profile should be calculated- in reciprocal space units s = 1/d (1/A)or direct space units L (A)
reflection hkl-indexes
reflection center position – 2Theta (rad)calculated profile
calculated guess of FWHM
x-axis: 2Theta (rad) values
-
Useful properties
10/14/2009 11
Can be refined– its parameters can be optimized
•Example 1: How to get the Crystal object from MStruct::ReflectionProfileComponent methodconst ObjCryst::Crystal & crystal = GetParentReflectionProfile().
GetParentPowderPatternDiffraction().GetCrystal();
•Example 2: Wavelengthconst REAL Lambda = GetParentReflectionProfile().
GetParentPowderPatternDiffraction().GetRadiation().GetWavelength()(0);
•Example 3: Convert Miller coordinates into orthonormal coordinates:REAL x = h, y = k, z = l;crystal.MillerToOrthonormalCoords (x, y, z);
•Example 4: Is the crystal hexagonal?// Get cctbx::sgtbx::space_groupconst cctbx::sgtbx::space_group & sg = crystal.GetSpaceGroup().GetCCTbxSpg();// Get Laue group codeconst cctbx::sgtbx::matrix_group::code & LaueCode = sg.laue_group_type();using namespace cctbx::sgtbx::matrix_group;. . .if ( LaueCode == code_6_m || LaueCode == code_6_mmm )
mGroupType = LAUE_HEXAGONAL;
Library:
-
List of effects/models
1. Instrumental function (PM2k, CMWP-fit, Maud)
2. Arbitrary texture (“PM2k”, “CMWP-fit”, Maud)
3. Texture numerical calculator+ simple models (Maud!!!)
4. pVoigt(A) (PM2k, Maud)
5. SizeLn (PM2k, CMWP-fit)
6. SizeDistrib (PM2k)
7. dislocSLvB (PM2k, CMWP-fit)
8. faultsVfcc (PM2k), faultsBfcc (CMWP-fit)
9. HKLpVoigtA (“PM2k”)
10. ReflProf, DoubleCompReflProf (“PM2k”)
11. Thin film absorption correction (Maud)
12. StressSimple, XECs (Maud)
13. RefractionCorr, Chi0
10/14/2009 12
-
Instrumental function – pVoigt(A)
• Described by pseudoVoigt function.• Cagliotti polynomial, etc.• Fitted on the measured LaB6 standard.
// Instrumental Parameters0.5 incidence angle (deg)-2Theta scan, negative value-2Theta/Theta scan// X-pert MRD parallel beam - 0.27 deg0.06246 0. 0.009211 instrumental profile params (W,U,V) MPD-Pixcel-variable slits0.002135 0.147385 I nstrumental profile params (Eta0,Eta1)1.0 0.0 0.0 60. instrumental profile params (Asym0,Asym1,Asym2,Asym2ThetaMax(deg))Cu 0.36 wavelength type (Cu,CuA1),linear polarization rate(A=0.8,
f=(1-A)/(1+A)=0.36 graphite mon.,f=0. unmonochromatized)
10/14/2009 13
)tan()(tan)( 22 VUWradFWHM
)(210 rad
)2(sin)2sin( 221
0 AA
AA
y = 2.30E-03x2 - 5.93E-04x + 1.73E-03R² = 9.99E-01
0.00
0.01
0.02
0.03
0.0 1.0 2.0 3.0 4.0
FWH
M(d
eg)
^2
tan(TH)
FWHM^2
y = 2.381E-03x + 6.249E-01R² = 6.706E-010.0
0.5
1.0
0 50 100 150
h
2Th (deg)
max,22 A
-
Arbitrary texture (Ihkl_diffData_my_Phase.dat)
• Usually hkl reflections intensities are calculated from crystal structure – atom positions, Biso-factors
• Model useful, if unknown or complicated texture is present• Calculated hkl reflection intensities corrected by arbitrary factors
// Arbitrary texture model
3 1 hkl file(0-don't use,1-generate,2-free all,3-read), print HKLIntensities(0-no,1-yes)
10/14/2009 14
File: Ihkl_diffData_my_Phase.dat
# h k l 2Theta(deg) |Fhkl|^2 Icor fixed
1 0 1 25.304 2.57e+004 1.00 1
1 0 3 36.975 3.01e+003 0.80 0
0 0 4 37.843 1.28e+004 1.21 0
1 1 2 38.573 3.30e+003 1.08 0
2 0 0 48.026 2.88e+004 0.91 0
2 0 2 51.960 7.71e-011 1.00 1
1 0 5 53.942 2.29e+004 1.07 0
-
Texture calculator + models• Simple “brute force” algorithm for calculation of the
projection of the ODF function into the diffraction vector direction.
1 number of texture components
1. component scale1. 1. 1. component base hz kz lz (space delimitaded) 1. -1. 0. component base hx kx lx (space delimitaded)
0 force texture symmetry for this component (0,1)1. 0.0 10. th component: weight(0.-1.),th0(deg),dth0 (deg)0. 30.0 10. psi component: weight(0.-1.),psi0(deg),dpsi0(deg)0. 0. tilt: eth0(deg),epsi(deg)
2 number of hkl lines to calculate
1 1 0 h k l (space delimitaded)pf_110-c.dat output filename
0. 75. 5.0 th: min,max,step(deg)0. 360. 5.0 psi: min,max,step(deg)
. . .
10/14/2009 15
-
Texture - example
10/14/2009 16
Example: simulation of cubic BST film (on Al2O3 (0001)x(11-20) substrate)
(111) texture axis (perpendicular to sample surface = parallel to Al2O3 (0006))
Y = 0 deg, DY = 10 deg,F = 30 deg, DF = 10 deg, fraction = 0.9
-
Fibre Texture
10/14/2009 17
ODF-function model: used for fiber texture modelling(from ref: [Simek, J.Appl.Cryst]) – texture axis direction (HKL) normal to sample surface, pole function:
UN7 (A. Kolomiets)
-
UN17
10/14/2009 18
Sample no. UN19: 1e-4 mbar N2, substrate Si at room temperature,5e-5 mbar Ar, 1200 sec
UN:D = (8+/-3) nm, e = (1.6+/-0.3) %, a = (4.9565+/-0.005) A,s = (5.7+/-0.3) GPa - Reuss stress, wFW = (29.1+/-0.8) deg, n = 1
UN2:
D = (8.7+/-0.5) nm, e = (2.2+/-0.1) %, a = (5.3273 +/- 0.002) A,s = (-4.4+/-0.1) GPa - isotropic stress, wFW = (23+/-1) deg, n = (0.64+/-0.03)
-
pseudoVoigt function – pVoigt(A)
• Reciprocal space:• Real space:• Asymmetry:
• Cagliotit polynomial, etc.• Modelling of micro-deformation/strain effect (e):
// the 1st phase - Strain broadening - modeled by pseudoVoigt function// - only U-Cagliotu param. (W=V=0.) and shape Eta0 (Eta1=0) params. refinedpVoigtA strainProfAnatase broadening component type (pVoigt(A),SizeLn,dislocSLvB,HKLpVoigtA),effect name,comp=20. 0. 0. profile params (W,U,V)0.0 0. profile params (Eta0,Eta1)1. 0. 0. 60. profile params (Asym0,Asym1,Asym2,Asym2ThetaMax(deg))
10/14/2009 19
),2(),2()1()2( ss CGpV
ss
ssss
)/12(4/1
,)/11(2/1,)1(2/1
AA
AA RL
G … Gauss, C … Cauchy/Lorentz
|)|2exp()/exp()1()( 222 xkxkxpV s
/)1)(/(11
GC
k
s .. FWHM/2
UeeradUradFWHMCG
14);tan(4)][2();(tan)][2( 22
/2ln2,/2 GC
U, … strongly correlatede, … almost uncorrelated
-
Convolution kernel
• Real space effects – convoluted by FT
• Reciprocal space effects – convoluted directly
10/14/2009 20
-
Size broadening - SizeLn
• Spherical crystallites – size D (diameter) given bylog-normal distribution
// the 1st phase - Size broadening - lognormal distribution of crystals diameter (median M, shape Sigma)
SizeLn sizeProfAnatase broadening component type (pVoigt(A),SizeLn,…),effect name,comp=1
200.0 0.3 M(nm),sigma
10/14/2009 21
-
Size broadening - SizeDistrib
• Spherical crystallites defined by refinable probability distribution.
// the 1st phase - Size broadening - refinable Size Distribution model
SizeDistrib sizeProfAnatase broadening component type (pVoigt(A),SizeDistrib,…),effect name,comp=1
wD_vz_380y.dat 1.e2 1.e6 name of file with prescribed weighted distribution, LSQ constraint scale factor, LSQ weight factor
10/14/2009 22
D (nm)
20 40 60 80 100 120 140-4000000
0
4000000
16000000
36000000
64000000
100000000
144000000
2Theta (deg)
Inte
nsity (
arb
itra
ry u
nits)
vz_380y
- 1 0
3-
0 0
4-
1 1
2
- 2 0
0
- 1 0
5-
2 1
1
- 2 1
3-
2 0
4
- 1 1
6-
2 2
0-
1 0
7-
2 1
5-
3 0
1-
0 0
8 - 3 0
3-
2 2
4-
3 1
2
- 2 1
7 - 3 0
5-
3 2
1-
1 0
9-
2 0
8-
3 2
3
- 3 1
6-
4 0
0-
3 0
7-
3 2
5-
4 1
1 - 2 1
9-
1 1
10
- 2 2
8-
4 1
3 - 4 0
4-
3 3
2
- 4 2
0-
1 0
11
- 3 2
7-
4 1
5
-
Dislocations - dislocSLvB
// the 1st phase - Dislocation Strain broadening (Scardi&Leaoni&van Berkum)
dislocSLvB strainProfCu broadening component type (pVoigt(A),…),effect name,comp=2
20.0 0.002 Re(nm),rou(1/nm^2)
0.30 -2.1 0. Cg0,q1,q2
10/14/2009 23
-
Stacking faults - faultsVfcc, faultsBfccin fcc materials
// the 1st phase - Stacking Faults - Warren, Velterop2000, Scardi, Leoni
faultsVfcc faultsProfCu broadening component type (pVoigt(A),…),effect name,comp=1
0.00 0.00 alpha, beta(twins)
10/14/2009 24
// the 1st phase - Stacking Faults - Balogh & Ungar (JAP2006)
faultsBfcc faultsProfCu broadening component type (pVoigt(A),…),effect name,comp=1
twins 0.05 type(intrinsic/twins/extrinsic), alpha
-
hkl – phenomenological - HKLpVoigtA
// the 1st phase - strange peak position effects
HKLpVoigtA HKLProfEffectCu broadening component type (pVoigt(A),…),effect name,comp=3
8 nb of peaks with preset profiles - phase: 1
1 1 1 0.000 0.00 0.0 000 hkl,d2Theta(deg),fwhm(deg),eta,code(111)?
0 2 0 0.000 0.00 0.0 000 hkl,d2Theta(deg),fwhm(deg),eta,code(111)?
0 2 2 0.000 0.00 0.0 000 hkl,d2Theta(deg),fwhm(deg),eta,code(111)?
. . .
10/14/2009 25
-
ReflProf, DoubleCompReflProf
10/14/2009 26
DoubleComponentReflectionProfile
AnataseReflProf
ReflProfAnataseProf1
SizeLn (M=5 nm, 0.3)
szieProfAnatase1
ReflProfAnataseProfile2
pVoigtA (U=0, 0=0)
strinProfAnatase
SizeLn (M =25 nm, 0.3)
szieProfAnatase2
-
Bimodal Size Distribution// the 1st phase - physical line broadening6 number of additional broadening effects (total number - including virtual and unused effects)
// 1 (parent prof) + 2 (child profs) + 3 (2 size and 1 strain comps) = 6
// the 1st phase - Parent Reflection Profile Object - double component broadening effectDoubleCompReflProf AnataseReflProf broadening component typeAnataseReflProf1 name of the first componentAnataseReflProf2 name of the second component0.5 fraction of the second component1 top parent effect (1-yes,0-no)
// the 1st phase - Child Reflection Profile Object 1 - Size + Strain broadenningReflProf AnataseReflProf1 broadening component type2 number of additional broadening effects (components only, instrumental effect already included)sizeProfAnatase1 broadening component namestrainProfAnatase broadening component name0 top parent effect (1-yes,0-no)
// the 1st phase - Child Reflection Profile Object 2 - Size + Strain broadenningReflProf AnataseReflProf2 broadening component type2 number of additional broadening effects (components only, instrumental effect already included)sizeProfAnatase2 broadening component namestrainProfAnatase broadening component name0 top parent effect (1-yes,0-no)
// the 1st phase - Size broadening component 1 - lognormal distribution of crystals diameter (median - M, shape - Sigma)SizeLn sizeProfAnatase1 broadening component type (pVoigt(A),SizeLn,dislocSLvB,HKLpVoigtA),effect name,comp=15.0 0.3 M(nm),sigma
// the 1st phase - Size broadening component 2 - lognormal distribution of crystals diameter (median - M, shape - Sigma)SizeLn sizeProfAnatase2 broadening component type (pVoigt(A),SizeLn,dislocSLvB,HKLpVoigtA),effect name,comp=125.0 0.4 M(nm),sigma
// the 1st phase - Strain broadening component - modeled by pseudoVoigt function// - only U-Cagliotu param. (W=V=0.) and shape Eta0 (Eta1=0) params. refinedpVoigtA strainProfAnatase broadening component type (pVoigt(A),SizeLn,dislocSLvB,HKLpVoigtA),effect name,comp=20. 1. 0. profile params (W,U,V)0.0 0. profile params (Eta0,Eta1)1. 0. 0. 60. profile params (Asym0,Asym1,Asym2,Asym2ThetaMax(deg))
10/14/2009 27
-
Thin film absorption correction
• Switch presentation
// the 1st phase - thin film absorption correction - TiO2,density=2.49g/cm3
220. 0. 315. absorp corr params:thickness(nm),depth(nm),abs.factor(1/cm)
10/14/2009 28
XRD - TiO2 thin films on ITO.pptx
-
StressSimple, XECs
• Anatase - XECs
• Switch presentationX
• Stress “zero”
// the 1st phase - Residual stress reflection position correction - simple stress model
StressSimple stressCorrAnatase effect type,effect name,comp=4
Reuss-Voigt 0. XECs model, stress (GPa)
// material C11 C12 C13 C33 C44 C66 constants (in GPa) - in the format: C11 value C12 value etc.
C11 320 C12 151 C13 143 // anatase Cij (GPa)
C33 190 C44 54 C66 60 // ref: M.Iuga,Eur.Phys.J.B(2007)58,127-133
0.3 model weight (0..Reuss,1..Voigt)
10/14/2009 29
nb. T (nm)sTPF
(MPa)Rwp (%)
sRwp (%)s = 0
1 42 760 18.4 20.4
2 100 740 22.5 23.8
3 130 750 24.4 29.8
4 180 510 16.2 21.2
5 300 310 22.4 24.7
6 440 205 22.1 23.4
7 630 280 12.9 15.8
8 800 250 11.2 14.6
0 200 400 600 8000
200
400
600
800
Thickness (nm)
Str
ess (
MP
a)
anatase_ECs_pictures.pptanatase_ECs_pictures.pptanatase_ECs_pictures.pptanatase_ECs_pictures.pptanatase_ECs_pictures.ppttpf-tio2-64-stress.pptxtpf-tio2-64-stress.pptxtpf-tio2-64-stress.pptxtpf-stress-zero.pptx
-
RefractionCorr, Chi0
• Switch presentation
MStruct::RefractionPositionCorr::GetChi0(...): Chi0 and absolute density computed for Crystal: Anatase
chi0: (-2.3988e-005,-1.2128e-006) (n=1-delata-ii*beta~=1+chi0/2)
critical angle: 0.28 (deg)
density: 3.891 (g/cm3)
10/14/2009 30
// the 1st phase - Refraction reflection position correction
RefractionCorr refractionCorrAnatase effect type,effect name,comp=3
crystal chi0 set directly-value,calculated from-crystal,calculated form chem.-formula
1. relative density
refraction_corr.pptx