  Microstructure characterization and reconstruction (MCR) is an important
prerequisite for empowering and accelerating integrated computational materials
engineering. Much progress has been made in MCR recently, however, in absence
of a flexible software platform it is difficult to use ideas from other
researchers and to develop them further. To address this issue, this work
presents MCRpy for easy-to-use, extensible and flexible MCR. The software
platform that can be used as a program with graphical user interface, as a
command line tool and as a Python library. The central idea is that
microstructure reconstruction is formulated as a modular and extensible
optimization problem. In this way, any descriptors can be used for
characterization and any loss function combining any descriptors can be
minimized using any optimizer for reconstruction. With stochastic optimizers,
this leads to variations of the well-known Yeong-Torquato algorithm.
Furthermore, MCRpy features automatic differentiation, enabling the utilization
of gradient-based optimizers. In this work, after a brief introduction to the
underlying concepts, the capabilities of MCRpy are demonstrated by exemplarily
applying it to typical MCR tasks. Finally, it is shown how to extend MCRpy by
defining a new microstructure descriptor and readily using it for
reconstruction without additional implementation effort.
