Differences

This shows you the differences between two versions of the page.

Link to this comparison view

preferred_orientation [2016/02/11 02:25]
rowlesmr3
preferred_orientation [2020/07/16 11:29]
Line 1: Line 1:
- 
- 
-====== Generalised March-Dollase preferred orientation corrections ====== 
- 
-This is a collection of macros that are used to model  preferred orientation using the March-Dollase model, where the angle between the preferred orientation vector and the diffraction vector is able to change. 
- 
-In these macros, you can deal explicitly with symmetric reflection, capillary transmission,​ and asymmetric reflection. ​ 
- 
-The maths for this was taken from [1]. 
- 
-Contributor:​ Matthew Rowles 
- 
- 
-[1] [[http://​www.crl.nitech.ac.jp/​ar/​2013/​0711_acrc_ar2013_review.pdf|Ida,​ Takeshi. 2013. '​Effect of Preferred Orientation in Synchrotron X-Ray Powder Diffraction'​. Annual Report of the Advanced Ceramics Research Center: Nagoya Institute of Technology.]]. 
- 
- 
-===== March-Dollase model ===== 
- 
-The March-Dollase pole density profile is given by 
- 
-P<​sub>​**p<​sup>​*</​sup>​**</​sub>​(r,​rho) = (r<​sup>​2</​sup>​ cos<​sup>​2</​sup>​rho + (sin<​sup>​2</​sup>​rho/​r))<​sup>​-3/​2</​sup>​ 
- 
-where r is the preferred orientation factor, and rho is the polar angle between the preferred orientation direction, **p<​sup>​*</​sup>​**,​ and the specimen direction, **s<​sup>​*</​sup>​**. The specimen is assumed to have rotational symmetry about **s<​sup>​*</​sup>​**. 
- 
-To find the factor by which a the intensity of a reflection of any given direction should multiplied, we use the following equations: 
- 
-f<​sub>​**d<​sup>​*</​sup>​**</​sub>​(r,​alpha,​Delta) = (1/(2*Pi)) * Int(g(r,​alpha,​Delta,​phi),​ phi=0..2*Pi) 
- 
-g(r,​alpha,​Delta,​phi) = P<​sub>​**p<​sup>​*</​sup>​**</​sub>​(r,​rho) 
- 
-cos(rho) = cos(alpha)*cos(Delta) - sin(alpha)*sin(Delta)*sin(phi) 
- 
-where alpha is the angle between the diffraction vector, **d<​sup>​*</​sup>​**,​ of interest and the preferred orienation vector, and Delta is the angle between **d<​sup>​*</​sup>​** and **s<​sup>​*</​sup>​**. ​ 
- 
-Delta is 0 for symmetric reflection, Pi/2 for capillary transmission,​ and Abs(Th - omega) for asymmetric reflection, where the incident beam angle is given by omega. 
- 
- 
-The integral can be expressed as a summation: 
- 
-f<​sub>​**d<​sup>​*</​sup>​**</​sub>​(r,​alpha,​Delta) = (1/N) * Sum(g(r,​alpha,​Delta,​(j+(1/​2))*Pi/​N),​ j=0..(N-1)) 
- 
-however, convergence is slow if r >> 1. N = 16 is usually sufficient. 
- 
- 
- 
-===== The macros ===== 
- 
- 
-The macros to use are the following: 
- 
-<code topas> 
-macro PO_symmetric_reflection(r_c,​ r_v, hkl) 
-{ 
- generalised_PO_eqn(r_c,​ r_v, , hkl, , 0, 16) 
-} 
- 
-macro PO_capillary_transmission(r_c,​ r_v, hkl) 
-{ 
- generalised_PO_eqn(r_c,​ r_v, , hkl, , (Pi/2), 16) 
-} 
- 
-macro PO_asymmetric_reflection(r_c,​ r_v,​omega_c,​omega_v,​ hkl) 
-{ 
- #m_argu omega_c 
- If_Prm_Eqn_Rpt(omega_c,​ omega_v, min 0.0001 max 90) '​incident angle in degrees'​ 
- prm #m_unique Delta = Abs(Th - ((CeV(omega_c,​omega_v))*Deg)) ; 
- generalised_PO_eqn(r_c,​ r_v, , hkl, , Delta, 16) 
-} 
-</​code>​ 
- 
- 
-An example of their use would be 
-<code topas> 
-PO_asymmetric_reflection(r,​ 0.6, !omega, 7.5, 0 0 1) 
-</​code>​ 
-to refine the preferred orientation factor for the (001) plane with a fixed incident beam angle of 7.5°. 
- 
- 
-The required helper macros are as follows, and implement equation 10 (aka I) in [1]: 
-<code topas> 
-macro & cosrho(&​ alpha, & Delta, & phi) 
-{ 
- Cos(alpha)*Cos(Delta) - Sin(alpha)*Sin(Delta)*Sin(phi) ​ 
-} 
- 
-macro & PO_P(& r, & alpha, & Delta, & phi) 
-{ 
- (r^2 * cosrho(alpha,​Delta,​phi)^2 + (1-cosrho(alpha,​Delta,​phi)^2)/​r)^(-3/​2) 
-} 
- 
-macro & PO_f(& r, & alpha, & Delta, & N) 
-{ 
- 'hard coded this for N==16 as the Sum formalism is not working ' 
- '​(1/​N)*Sum( PO_P(r,​alpha,​Delta,​(j+(1/​2))*Pi/​N) , j=0,​j<​=N-1,​j=j+1)'​ 
- (1/16)* 
- (PO_P(r,​alpha,​Delta,​( 0+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​( 1+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​( 2+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​( 3+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​( 4+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​( 5+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​( 6+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​( 7+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​( 8+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​( 9+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​(10+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​(11+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​(12+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​(13+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​(14+(1/​2))*Pi/​16) + 
-   PO_P(r,​alpha,​Delta,​(15+(1/​2))*Pi/​16))  
-} 
- 
- 
-'​angles in radians'​ 
-macro generalised_PO_eqn(r_c,​ r_v, alpha, hkl, Delta_c, Delta_v, N)  
-{ 
-   #​m_argu r_c 
-   #​m_argu Delta_c 
-   ​If_Prm_Eqn_Rpt(r_c,​ r_v, min 0.0001 max = 2 Val + .5;) '​preferred orientation parameter'​ 
-   ​If_Prm_Eqn_Rpt(Delta_c,​ Delta_v, min 0.0001 max =Pi;) 'angle in radians: ​ ==0 symmetric reflection, ==Pi/2 capillary transmission,​ ==Abs(Th-Omega) asymmetric reflection'​ 
-    
-   '​The following code modified from S11.5.4 in the TechRef & PO macro in topas.inc'​ 
-   #​m_ifarg alpha ""​ 
-      #​m_unique_not_refine alpha 
-   #​m_endif 
- 
-   ​str_hkl_angle alpha hkl 'angle in radians between PO direction and current diffraction vector'​ 
- 
-   ​scale_pks = Multiplicities_Sum( ​ PO_f(CeV(r_c,​r_v),​ alpha, CeV(Delta_c,​Delta_v),​ N)  );  ​ 
-} 
-</​code>​ 
- 
- 
  

Personal Tools