Since crystallographic axes may be non-orthogonal, we can make some calculation processes much simpler by describing a new set of axes relative to the previously defined crystal axes, which we call the reciprocal lattice. To define the reciprocal lattice, we create three new axes, which we label as a*, b* & c*, where the asterisk (*) indicates these are reciprocal lattice axes. We make these axes perpendicular to the plane containing each pair of the crystal system axes (a, b & c), meaning that a* is perpendicular to b & c, and likewise for b* to a & c and c* to a & b, or equivalently using dot products to designate perpendicular axes, \(a^*\cdot b = a^* \cdot c = b^* \cdot a = b^* \cdot c = c^* \cdot b = c^* \cdot a = 0\). We also scale the length of the reciprocal axes so that \(a^*\cdot a = 1\), \(b^*\cdot b = 1\) and \(c^*\cdot c = 1\). Note that since we conventionally use units of Ångstroms (Å) for a, b & cc, then the units of a*, b* & c* are Å-1. The angles between the reciprocal aces, \(\alpha \)*, \(\beta \)* & \(\gamma \)* are defined analogously to the angles for the crystal axes so that \(\alpha \)* is the angle between b and c, etc.
The properties of this new reciprocal axis coordinate system were first discovered by J. Willard Gibbs, well in advance of modern crystallographic practice. This coordinate system turns out to be the ideal mechanism to describe the three-dimensional conjugate space needed for Fourier analysis of the periodic density of scatterers in the unit cell. The reciprocal axes are also used to formalize a concept called the Ewald sphere, which is used to understand the orientation needed to bring a single crystal into a diffracting position, as well as which diffraction maxima can be observed with a given wavelength particle. While elegant, the Ewald sphere is not really needed for powder diffraction. For our purposes, we will only consider that diffraction occurs in only with reciprocal lattice with \(\vec {d_{hkl}^\ast }=\ ha^\ast +\ kb^\ast +lc^\ast \), where h, k, and l are all integers.
We will call this domain of this reciprocal lattice construct as reciprocal space and correspondingly, the domain where atoms are located is called real space. Note that perhaps confusingly, I have followed conventional use and now used the term “real” in three different contexts. One as “real numbers”, as in the opposite of imaginary numbers for complex algebra (involving \(i=\sqrt {-1}\)), another as “real space” to be distinguished from the reciprocal space construct we just introduced. Finally, I use “real” sometimes to make clear the properties of actual materials in comparison to our idealized concepts.
Just as we measure bond distances between atoms in real space, there are some commonly referenced quantities in reciprocal space. As noted before, if we define a reflection direction as vector \(\vec {d_{hkl}^\ast }=\ ha^\ast +\ kb^\ast +lc^\ast \), we can also consider the magnitude of that vector, \(d_{hkl}^\ast =\left |\vec {d_{hkl}^\ast }\right |\), which will have units of inverse length (typically Å-1). This is often written without the subscripts as d*. As will be seen, this quantity is used in Fourier transform relationships where a factor of \(2\pi \) is commonly required. Physicists typically prefer the quantity \(\rm Q\), where Q = \(2\pi \) d*. In addition to Q and d*, there is one more widely-used quantity that I personally would prefer to see disappear from usage. This is the quantity d and is often called a d-space, where d = 1/d* = \(2\pi \)/Q. The units of d thus are length, but note that d is actually measuring a quantity that is only meaningful in reciprocal space. I do not like use of d (d-space values) because it tempts one to use that real space length to relate some aspect of the atomic structure to the scattering at a location in reciprocal space, but this ignores that scattering intensities and the atomic structure are in a Fourier relationship, where every aspect of the structure affects the scattering to some extent. The wide use of d is somewhat historical, since it is part of Bragg’s law, (\(n\lambda =2d\sin {\theta }\)). This equation had already been used to describe the properties of waves. In this equation \(\lambda \) is the wavelength for the scattered particle, \(\theta \) is one-half the angle between the incident direction of the particle and its scattered direction. The factor n here is due to the idea the diffraction occurs at orders with integer multiples, but since we build that into the hklvalues, we can treat n as unity and remove it. As much as I respect the amazing sagacity of William Laurence Bragg, I would prefer that this formulation of Bragg’s law be replaced with \(\lambda ={2\sin \theta }/{d^\ast }\) or \(\lambda ={2\pi \sin \theta }/Q\). To understand why Bragg’s law was such an important advance, it should be understood that this wave equation went against the thinking of many established scientists, including his father William Henry Bragg, who did not believe that x-rays had wave character. Laurie Bragg deployed that wave equation at age 22 and won a well-deserved Nobel prize at a ripe old age of 25. Bragg’s law was intended to relate scattering of x-rays to distances between planes of atoms, which we now can see is a poor idea as it confuses direct and reciprocal space phenomena.
As has been mentioned, while diffraction patterns are commonly measured in units of \(2\theta \), this means that the measurement results change depending on the wavelength of the source. As noted, in energy-dispersive detection measurements are made at constant \(2\theta \) with measurement of \(\lambda \). So that diffraction data may be compared with different data collection types and different wavelengths, display of patterns in units of Q rather than \(2\theta \) is a wise choice. Q also has the advantage that it roughly scales with \(2\theta \), so that if one refers to low Q, that can be readily interpreted as low angle scattering, while high Q will refer to high angle scattering (or perhaps unobservable, except with shorter wavelengths.)
To simplify the algebra used with lattice computations, GSAS-II uses a series of tensors that allow for simple and quickly-computed linear algebra expressions to perform what would otherwise be fairly complex expressions.
The [direct] cell tensor, \(g\), is defined as, \[ g = \left ( \begin {matrix} a^2 & a b\cos \gamma & a c\cos \beta \\ a b\cos \gamma & b^2 & b c \cos \alpha \\ a c\cos \beta & b c \cos \alpha & c^2 \end {matrix}\right ) \] Note that for higher-symmetry unit cells, \(\alpha \), \(\beta \) and/or \(\gamma \) may be \(90^\circ \) and \(\cos 90^\circ \) is zero, so that some or all off-diagonal terms become zero. The reciprocal cell tensor, \(G\), is defined as the inverse of \(g\), \(G = g^{-1}\). This allows us to simplify the expression for \(|\vec {d_{hkl}^\ast }|\) (where \(\vec {d_{hkl}^\ast }=\ ha^\ast +\ kb^\ast +lc^\ast \)) as
\[|\vec {d_{hkl}^\ast }| = Q_{hkl} / (2 \pi ) = \sqrt {G_{11} h^2 + G_{22} k^2 + G_{33} l^2 + 2 G_{12} hk + 2 G_{13} hl + 2 G_{23} kl}\]
Another quantity based on \(G\) is used throughout GSAS-II for lattice fitting. We call this the \(A\) vector and is defined as \[ A = \begin {matrix} [ G_{11} & G_{22} & G_{33} & 2G_{12} & 2G_{13} & 2G_{23} ] \end {matrix}\] Numbering the terms in \(A\) to start with zero, as is done in Python, the length in reciprocal space for reflection \(hkl\) simplifies to
\[Q_{hkl} = 2 \pi \sqrt {A_0 h^2 + A_1 k^2 + A_2 l^2 + A_3 hk + A_4 hl + A_5 kl}\]
Finally, for working with datasets where small changes are expected in lattice parameters, GSAS-II introduces a hydrostatic strain tensor, \(D_{ij}\), which are offsets to the \(A\) (or \(G\)) terms:
This strain tensor is effectively just an offset applied to the lattice parameters, but since it is applied to the reciprocal cell tensor the effect of the numbers is a bit less than obvious, but the resulting lattice parameters are computed and shown in the GUI where these terms are displayed if the values are non-zero. These terms are used for fitting series of datasets (discussed in Chapter 21) or when fitting a single phase to datasets collected at different temperatures (or with slightly different calibration – very common for combined x-ray/neutron fits). They may also be used for measurement of elastic strain when an external force is applied to a sample. Bob and I tend to refer to these terms as the \(D_{ij}\) values, which is probably not very helpful.