Skip to content

A notation system in crystallography for lattice planes in crystal (Bravais) lattices

License

Notifications You must be signed in to change notification settings

MineralsCloud/MillerIndices.jl

Repository files navigation

MillerIndices

Documentation Build Status Others
Stable Dev Build Status Build Status Build Status pipeline status Coverage GitHub license Code Style: Blue

MillerIndices.jl is a Julia package that provides a convenient way to handle Miller indices and Miller–Bravais indices in crystallography.

The code, which is hosted on GitHub, is tested using various continuous integration services for its validity.

This repository is created and maintained by @singularitti, and contributions are highly welcome.

Package features

  1. Representation of indices:

    • Miller: Represents the Miller indices in real space (crystal directions).
    • ReciprocalMiller: Represents the Miller indices in reciprocal space (planes).
    • MillerBravais: Represents the Miller–Bravais indices in real space (crystal directions).
    • ReciprocalMillerBravais: Represents the Miller–Bravais indices in reciprocal space (planes).
  2. Macro for easy generation:

    m"[-1, 0, 1]"      # Miller
    m"<2, -1, -1, 3>"  # MillerBravais
    m"(-1, 0, 1)"      # ReciprocalMiller
    m"(1, 0, -1, 0)"   # ReciprocalMillerBravais
  3. List equivalent directions/planes

  4. Conversion between Miller and Miller-Bravais representations

  5. Calculate angles between indices

  6. Interplanar spacing calculation

Installation

The package can be installed with the Julia package manager. From the Julia REPL, type ] to enter the Pkg mode and run:

pkg> add MillerIndices

Or, equivalently, via Pkg.jl:

julia> import Pkg; Pkg.add("MillerIndices")

Documentation

  • STABLEdocumentation of the most recently tagged version.
  • DEVdocumentation of the in-development version.

Project status

The package is developed for and tested against Julia v1.6 and above on Linux, macOS, and Windows.

Questions and contributions

You can post usage questions on our discussion page.

We welcome contributions, feature requests, and suggestions. If you encounter any problems, please open an issue. The Contributing page has a few guidelines that should be followed when opening pull requests and contributing code.