Mstruct my program/library for MicroStructure analysis by ... · 0.5 incidence angle (deg)-2Theta...

30
MStruct program/library for MicroStructure analysis by 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

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