Explore the crystal symmetry of the 212 Aizu species! This is a mirror of:
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



SymmSpecies is a Crystal (programming language) library for working with the 212 non-magnetic Aizu species. i.e. we are interested in the specific, symmetrically distinct, orientations of the crystallographic point groups (see Symm32) "within" one another.


Add this to your application's shard.yml:

    gitlab: gitlab/symm_species


require "symm_species"

Your application will now have available to it the array SymmSpecies::LIST and the helper methods SymmSpecies.number(num) to get a species by number and SymmSpecies.species_for(parent: parent, child: child) for accessing the species where the point group parent is a parent and the point group child is a child. Since this is named tuple, both arguments are optional. If you provide only child, all species where that group is a child will be returned without regard for parent (for example).

Examples of Crystal applications that use this shard:

For further documentation, please see the docs.


Contributions are welcome! To get things started you can open an issue and post a comment, correction, or feature request. From there we can talk about how best to incorporate (or not) your feedback.

Please note! Your contribution should include tests and be well documented. If you're new to crystal then you might want to at least read this section of the docs: Writing Shards. Also, beware, the docs are generated in this project like so: crystal docs src/symm_species.cr since the initialization of this module is order-dependent.

In general, if you want, you can just pull this code down, start hacking on it, and then push it back here as a "Pull Request", then we can discuss your proposed changes.

  1. Fork it (https://gitlab.com/crystal-symmetry/symm_base/forks/new)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new Pull Request

But I recommend you start off by opening an issue so that you don't waste time on a potentially unwelcome change.


  • KCErb KC Erb - creator, maintainer