Reference implementation for
Approximately Uniform Grids over Crystal Orientations
Z. T. Varley · M. De Graef
Sampling crystal orientations means sampling the quotient
This repo takes a different route. For each crystallographic point group it constructs a constant-Jacobian Knothe-Rosenblatt transport that pushes the homochoric ball directly onto the fundamental zone. Feed in any structured point set on the cube (Sobol, Halton, a regular SC/FCC/BCC lattice) to the orientation quotient.
The five ho2hoFZ_* functions:
-
$C_k$ and$D_k$ : fully analytic, derived from per-axis CDF inverses. -
$T$ and$O$ : piecewise analytic over the cubic FZ; the octahedral map ships in both standard cubochoric-aligned and FCC-aligned variants. -
$I$ : fitted azimuthal/polar CDFs with a post-rotation correction for the icosahedral FZ.
Numerical backbone in src/: orientation conversions, Laue-group operators,
Plotting and the paper figure pipeline live in figures/; the camera-ready PNG / PDF / EPS bundles are checked in under paper_figures/.
An octahedral KR grid lifted to all of
Free-fuse. ~50 cm from the screen, two spheres about 10 cm apart, cross your eyes until they overlap.
pip install -r requirements.txt
python -m publication.export_figures # all twelve panels
python -m publication.export_figures --only 1 4 # a subsetOutputs land in paper_figures/ as PNG, PDF, and true vector EPS (rendered from the TeX PDF via Poppler pdftops, not raster-wrapped). Layout details are in publication/README.md.
Cached data behind the figures can be rebuilt from scratch:
python -m figures.generate_cubochoric_anisotropy
python -m figures.generate_nn_cdf_data
python -m figures.generate_grid_method_metrics
python -m figures.generate_thomson_relaxationAny panel module under figures/ is also runnable on its own, which is handy for tweaking limits or colour mappings interactively:
python -m figures.cubochoric_anisotropyFigure 1 benefits from a working pykeops install for the kernel evaluations.
coming soon...
MIT. See LICENSE.

