Skip to content

crystal_torture: A crystal structure analysis code, allowing site tortuosity to be calculated.

License

Notifications You must be signed in to change notification settings

connorourke/crystal_torture

Repository files navigation

status DOI PyPI version Build Status Coverage Status Documentation Status Python 3.7 Python 3.8 Python 3.9

crystal_torture:

crystal_torture is a Python, Fortran and OpenMP crystal structure analysis module. The module contains a set of classes that enable:

  • a crystal structure to be converted into a graph for network analysis.
  • connected clusters of crystal sites (nodes) to be retrieved and output.
  • periodicity of connected clusters of crystal sites to be determined.
  • relative path tortuosity to traverse a crystal within a connected cluster to be calculated for each site.

Ionic diffusion through crystalline solids depends not only on the dynamics of ions within the crystal, but also the connectivity of the transport network. Understanding how the connectivity of diffusion pathways in crystal structures is affected by changes in chemistry is necessary for understanding how chemical modifications change ionic conductivities, for example the doping of solid electrolytes.

crystal-torture provides a Python API for interrogating network connectivity and diffusion pathways in partially blocked crystal structures. It can be used as a tool for materials scientists to quickly build up network connectivity statistics in order to determine the viability of potential ionic conductors, and how chemical modification affects network connectivity, before the use of more computationally expensive approaches modelling the full dynamics.

Installation

crystal_torture requires python 3.7 and above. To install do:

pip install crystal_torture

or download directly from GitHub, or clone:

 git clone https://github.com/connorourke/crystal_torture

and install

cd crystal_torture
python setup.py install

Tests

crystal_torture is automatically tested on each commit here, but the tests can be manually run:

python -m unittest discover

Examples

Examples on how to use crystal_torture can be found in a Jupyter notebook in the examples directory crystal_torture_examples.ipynb

Documentation

Documentation can be found here

Contributing

Bugs reports and feature requests

If you think you have found a bug, please report it on the Issue Tracker. This is also the place to propose ideas for new features or ask questions about the design of crystal_torture. Poor documentation is considered a bug, but please be as specific as possible when asking for improvements.

Code contributions

We welcome your help in improving and extending the package with your own contributions. This is managed through GitHub pull requests; for external contributions we prefer the "fork and pull" workflow, while core developers use branches in the main repository:

  • First open an Issue to discuss the proposed contribution. This discussion might include how the changes fit crystal_torture' scope and a general technical approach.
  • Make your own project fork and implement the changes there. Please keep your code style compliant with PEP8.
  • Open a pull request to merge the changes into the main project. A more detailed discussion can take place there before the changes are accepted.