Crystal Orientation Quick Reference
Coordinate System
- Laboratory Frame (Fixed)
Right-handed orthogonal system: \((x, y, z)\)
Incident neutron beam: \(\mathbf{k}_i\) along \(+z\) direction
Key difference from NCrystal: Beam direction is FIXED in nBragg
Specifying Orientation
Two-Vector Specification
You must specify TWO reciprocal lattice vectors:
Parameter |
Description |
Example |
|---|---|---|
[hkl]_z |
Miller indices along \(+z\) (beam direction) |
|
[hkl]_y |
Miller indices along \(+y\) direction |
|
- Requirements
Vectors must be orthogonal in reciprocal space
Use Miller indices \((h, k, l)\) for reciprocal lattice
Right-handed system must be maintained
Common Orientations
Description |
[hkl]_z |
[hkl]_y |
Notes |
|---|---|---|---|
Standard cubic |
[0, 0, 1] |
[0, 1, 0] |
Most common |
45° rotation (z-axis) |
[0, 0, 1] |
[1, 1, 0] |
Rotated in xy-plane |
90° rotation (z-axis) |
[0, 0, 1] |
[1, 0, 0] |
x-axis along y |
Arbitrary |
[1, 1, 2] |
[1, -1, 0] |
Check orthogonality |
Rotation for Alignment
Rotation Parameters
When fitting to experimental data:
Rotation Matrix Application
Where:
Mosaicity Parameters
Gaussian Distribution Model
η (FWHM) |
Full Width at Half Maximum of orientation spread |
τ (cutoff) |
\(\max(3, 1.1\sqrt{-2\log_e \epsilon}) \cdot \eta / (2\sqrt{2\log_e 2})\) |
ε (epsilon) |
Volume fraction parameter (default: \(10^{-3}\)) |
- Physical Interpretation
η defines the angular spread of crystal planes
Larger η = more mosaic (imperfect) crystal
τ determines where distribution is truncated
Bragg Condition
- Bragg Circles
At wavelength λ, forms a circle around z-axis
Longer wavelength → circle moves along z
Bragg condition satisfied when circle intersects \(\hat{n}\)
- For Single Crystals
Sharp Bragg dips in transmission
Position depends on orientation
Use rotation to align dips with data
- For Polycrystals
Bragg edges at \(\lambda = 2d_{hkl}\)
Position independent of orientation
Edges are orientation-averaged
Troubleshooting Checklist
Issue |
Solution |
|---|---|
Vectors not orthogonal |
Check dot product in reciprocal space |
Wrong handedness |
Verify \(\mathbf{z} = \mathbf{x} \times \mathbf{y}\) |
Rotation not working |
Check angle units (radians vs degrees) |
Unexpected Bragg dips |
Verify crystal structure and orientation |
Poor fit to data |
Adjust mosaicity parameters η |
Quick Equations Reference
Normal Vector
With Euler Angles
Rotation (Matthies Convention)
Where: \(\alpha, \gamma \in [0, 2\pi]\), \(\beta \in [0, \pi]\)
Best Practices
Start Simple
Begin with low Miller indices (e.g., [0,0,1], [0,1,0])
Test with known crystal orientations
Verify Orthogonality
Always check that your chosen vectors are orthogonal
Use reciprocal lattice metric for non-cubic systems
Small Increments
Use small rotation angles (1-5°) when fitting
Avoid large jumps in orientation space
Consider Symmetry
Account for crystal symmetry in your analysis
Equivalent orientations may exist
Mosaicity Matters
Don’t ignore mosaicity - it affects results
Typical values: 0.1° to 2° for most crystals
Code Snippets
Basic Setup
# Define orientation
hkl_z = [0, 0, 1] # Beam direction
hkl_y = [0, 1, 0] # Y direction
Check Orthogonality
import numpy as np
def check_orthogonal(hkl1, hkl2):
v1 = np.array(hkl1)
v2 = np.array(hkl2)
v1 = v1 / np.linalg.norm(v1)
v2 = v2 / np.linalg.norm(v2)
return abs(np.dot(v1, v2)) < 1e-10
Apply Rotation
def rotate_orientation(hkl, phi, theta):
"""Rotate [hkl] by angles phi (x) and theta (y)"""
Rx = np.array([[1, 0, 0],
[0, np.cos(phi), -np.sin(phi)],
[0, np.sin(phi), np.cos(phi)]])
Ry = np.array([[np.cos(theta), 0, np.sin(theta)],
[0, 1, 0],
[-np.sin(theta), 0, np.cos(theta)]])
return Ry @ Rx @ np.array(hkl)
Citation
When using nBragg’s orientation specification in publications:
Matthies (1987) - Euler angle conventions
NCrystal documentation - Mosaicity modeling
Kittelmann et al. (2021) - NCrystal implementation