Generate, naively, a polycrystalline sample using shortest Euclidean distance criteria (i.e., Voronoi diagram). The current version is capable of generating a LAMMPS configuration file given crystal types, number of grains, and box dimensions. Specifically, one can generate a polycrystalline sample that contains grains which are of a different crystal type (i.e., Si+Ge). This is useful for looking at multiphase microstructures.
The atomic simulation environment package (ASE) is used for generating the crystallites contained within a grain. The user run script (examples found in tests just needs to supply the dictionary name from materials.py to the '''Crystal''' class in crystal.py. To add new materials/crystals one just needs to provide a dictionary entry in materials.py based on the other entry templates. The information to add new materials can be found in repositories such as the materials project or AFLOW; in principal this could be done automatically by interfacing with those APIs but that would add another layer of dependencies.
This small code is essentially a rewrite of a script I used in graduate school. The idea is to generalize and marginally extend the capability.