preferred_orientation
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revision | |||
| preferred_orientation [2016/02/11 02:25] – rowlesmr3 | preferred_orientation [2025/09/19 15:18] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| 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, | ||
| + | |||
| + | The maths for this was taken from [1]. | ||
| + | |||
| + | Contributor: | ||
| + | |||
| + | |||
| + | [1] [[http:// | ||
| + | |||
| + | |||
| + | ===== March-Dollase model ===== | ||
| + | |||
| + | The March-Dollase pole density profile is given by | ||
| + | |||
| + | P< | ||
| + | |||
| + | where r is the preferred orientation factor, and rho is the polar angle between the preferred orientation direction, **p< | ||
| + | |||
| + | To find the factor by which a the intensity of a reflection of any given direction should multiplied, we use the following equations: | ||
| + | |||
| + | f< | ||
| + | |||
| + | g(r, | ||
| + | |||
| + | cos(rho) = cos(alpha)*cos(Delta) - sin(alpha)*sin(Delta)*sin(phi) | ||
| + | |||
| + | where alpha is the angle between the diffraction vector, **d< | ||
| + | |||
| + | Delta is 0 for symmetric reflection, Pi/2 for capillary transmission, | ||
| + | |||
| + | |||
| + | The integral can be expressed as a summation: | ||
| + | |||
| + | f< | ||
| + | |||
| + | 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, | ||
| + | { | ||
| + | generalised_PO_eqn(r_c, | ||
| + | } | ||
| + | |||
| + | macro PO_capillary_transmission(r_c, | ||
| + | { | ||
| + | generalised_PO_eqn(r_c, | ||
| + | } | ||
| + | |||
| + | macro PO_asymmetric_reflection(r_c, | ||
| + | { | ||
| + | #m_argu omega_c | ||
| + | If_Prm_Eqn_Rpt(omega_c, | ||
| + | prm #m_unique Delta = Abs(Th - ((CeV(omega_c, | ||
| + | generalised_PO_eqn(r_c, | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | An example of their use would be | ||
| + | <code topas> | ||
| + | PO_asymmetric_reflection(r, | ||
| + | </ | ||
| + | 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(& | ||
| + | { | ||
| + | Cos(alpha)*Cos(Delta) - Sin(alpha)*Sin(Delta)*Sin(phi) | ||
| + | } | ||
| + | |||
| + | macro & PO_P(& r, & alpha, & Delta, & phi) | ||
| + | { | ||
| + | (r^2 * cosrho(alpha, | ||
| + | } | ||
| + | |||
| + | macro & PO_f(& r, & alpha, & Delta, & N) | ||
| + | { | ||
| + | 'hard coded this for N==16 as the Sum formalism is not working ' | ||
| + | ' | ||
| + | (1/16)* | ||
| + | (PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | PO_P(r, | ||
| + | } | ||
| + | |||
| + | |||
| + | ' | ||
| + | macro generalised_PO_eqn(r_c, | ||
| + | { | ||
| + | # | ||
| + | # | ||
| + | | ||
| + | | ||
| + | |||
| + | ' | ||
| + | # | ||
| + | # | ||
| + | # | ||
| + | |||
| + | | ||
| + | |||
| + | | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||