mori - Material Orientation Library for Rust


An orientation library built around commonly used orientation representations used in crystallography and engineering applications. It contains conversion, rotation, and data analysis operations for various orientation spaces.

Orientations play a large role in a number of fields ranging from: crystallography, x-ray diffraction, metallurgy, solid mechanics, and the list can go on and on. Therefore, it’s important to have a library that easily allows conversions from Eulearian representations to rotation matrices to neo-eulerian representation to quaternions.

The initial scope of this library will provide common sets of conversions. In an attempt to have a consistent set of conversions with others in the field, a majority of these conversions have been taken from 1. The library also includes various vector and tensor passive rotation operations. Operations such as these are commonly associatted with orientations. Therefore, a number of orientations support these features. Outside of these features, various helper methods have been added to several orientations representations such as being able to easily obtain the transpose of an orientation. It should be noted that these helper functions are not necessarily the same across different orientation conversions.

The library is currently available on cargo and has the following capabilities:

  • Orientation conversions between various orientation representations
  • Vector and tensor passive rotation operations
  • Helper functions such as transpose, various quaternion operations, and methods to view/mutate the private field holding each orientations
  • Parallel capabilities that match the serial code

Later as it develops, the plan is to include the following:

  • Crystallographic fundamental region conversions
  • Mean orientation calculations
  • Misorientation calculations based upon the work of 2 3

The library can be found on Cargo at https://crates.io/crates/mori and https://crates.io/crates/mori_parallel.

The library exists on Github at https://github.com/rcarson3/mori

[1]: D Rowenhorst et al 2015 Consistent representations of and conversions between 3D rotations Modelling Simul. Mater. Sci. Eng. 23 083501

[2]: Barton N R and Dawson P R 2001 A methodology for determining average lattice orientation and its application to the characterization of grain substructure Metall. Mater. Trans. A 32 1967–75

[3]: Glez J C and Driver J 2001 Orientation distribution analysis in deformed grains J. Appl. Cryst. 34 280–8