Overview
Kanapy is a python package for generating complex three-dimensional (3D) synthetic polycrystalline microstructures. The microstructures are built based on statistical information about phase and grain morphologies, given as size distributions and aspect ratio distrubitions of grains and phase regions. Furthermore, crystallographic texture is considered in form of orientation distribution functions (ODF) and misorientation distribution functions (MDF). Kanapy offers tools to analyze EBSD maps with respect to the morphology and texture of microstructures. Based on this experimental data, it generates 3D synthetic microstructures mimicking real ones in a statistical sense.
The basic implementation of Kanapy is done in form of a Python Appplication Programming Interface (API). There is also a command line interface (CLI) for administrative functions and and Graphical User Interface (GUI), which is still under development.
Motivation
An accurate representation of a material’s microstructure is fundamental in understanding the relationship between microstructure and its corresponding mechanical behavior. In this regard, Kanapy is developed to be a robust and an efficient tool to generate synthetic microstructures as the basis for micromechanical simulations with crystal plasticity methods. The generated microstructures can be used for mechanical analysis with Finite Element (FE) of spectral solvers. Kanapy is designed to model simple and complex grain morphologies and to systematically incorporate texture data directly from experiments concurrently maintaining the numerical efficiency of the micromechanical model. Kanapy is developed to overcome the limitations of spatial tessellation methods and to provide an alternative to the existing Random Sequential Addition technique of microstructure geometry generation.
Figure: Kanapy workflow.
Features
Kanapy offers a Python Application Programming Interface (API).
Kanapy offers a Python Application Programming Interface (API).
Possibility to analyze experimental microstructures based on orix functions.
Support of multiphase microstructures.
Generation of 3D microstructure morphology based on statistical features as size distributions and aspect ratio distributions of grains and phase regions.
Crystallographic texture reconstruction using orientations from experimental data in form of Orientation Distribution Function (ODF).
Optimal orientation assignment based on measured Misorientation Distribution Function (MDF) that maintains correct statistical description of high-angle or low-angle grain boundary characteristics.
Independent execution of individual modules through easy data storage and handling.
In-built hexahedral mesh generator for representation of complex polycrystalline microstructures in form of voxels.
Efficient generation of space filling structures by particle dynamics method.
Collision handling of particles through a two-layer collision detection method employing the Octree spatial data structure and the bounding sphere hierarchy.
Option to generate spherical particle position and radius files that can be read by the Voronoi tessellation software Neper.
Option to generate input files for finite-element packages.
Import and export of voxel structures according to following the modular materials data schema published on GitHub for data transfer between different tools.
Installation
The preferred method to use Kanapy is within Anaconda or Miniconda, into which it can be easily installed from conda-forge by
$ conda install kanapy -c conda-forge
Generally, it can be installed within any Python environment supporting the package installer for python (pip) from its latest PyPi release via the shell command
$ pip install kanapy
Alternatively, the most recent version of the complete repository, including the source code, documentation and examples, can be cloned and installed locally from GitHub. It is recommended to create a conda environment before installation. This can be done by the following the command line instructions
$ git clone https://github.com/ICAMS/Kanapy.git ./kanapy
$ cd kanapy
$ conda env create -f environment.yml
$ conda activate knpy
(knpy) $ python -m pip install .
Kanapy is now installed along with all its dependencies. The correct installation with this method can be tested with
(knpy) $ kanapy runTests
Note
knpy can be replaced with any name for your environment.
Tip
To learn more about managing environments see Anaconda documentation.
Using Kanapy in your Python scripts
After installation by any of those methods, the package can be used as API within python, e.g. by importing the entire package with
>>> import kanapy as knpy
Command line tools
Kanapy supports some command line tools, a list of supported tools can be displayed with
(knpy) $ kanapy --help
Graphical User Interface (GUI)
The alpha-version of the GUI can be started with the shell command
(knpy) $ kanapy gui
Examples
Kanapy comes with several examples in form of Python scripts and Juypter notebooks. If you want to create a local copy of the kanapy/examples directory within the current working directory (cwd), please run the command
(knpy) $ kanapy copyExamples
Kanapy notebooks can also be used on Binder.
Dependencies
Below are the listed dependencies for running Kanapy:
`NumPy <https://numpy.org`__ for array manipulation.
SciPy for functionalities like Convexhull.
Matplotlib for plotting and visualizing.
orix for reading and analyzing EBSD maps and for generation of crystal orientations.
NetworkX generating graph networks of microstructures.
scikit-image processing of microstructure images.
Citation
The preferred way to cite Kanapy is:
@article{Biswas2020,
doi = {10.5281/zenodo.3662366},
url = {https://doi.org/10.5281/zenodo.3662366},
author = {Abhishek Biswas and Mahesh R.G. Prasad and Napat Vajragupta and Alexander Hartmaier},
title = {Kanapy: Synthetic polycrystalline microstructure generator with geometry and texture},
journal = {Zenodo},
year = {2020}
}
License
Kanapy is made available under the GNU AGPLv3 license.
The additional materials under examples and in the documentation are published under the Creative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA 4.0) license.
About
The name kanapy is derived from the sanskrit word káṇa meaning particle. Kanapy is primarily developed at the Interdisciplinary Center for Advanced Materials Simulation (ICAMS), Ruhr University Bochum - Germany. Our goal is to build a complete synthetic microstructure generation tool for research and industry use.
Disclaimer
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.