Prismatic version 2.0 is now officially released! Check out our most recent publication here detailing some of the new algorithmic features. If you would like to stay informed about future releases, request help, or donate your time for development, we strongly encourage you to check out our Github page or reach out to the developers.
New to Prismatic and STEM simulation? Start with the SuperSTEM 2018 GUI Tutorial!
Prismatic is the name of our simulation code which performs quantum-mechanical simulation of images and diffraction patterns for scanning transmission electron microscopy (STEM). STEM experiments are routinely used for atomic-resolution imaging of samples in materials science and other fields. STEM simulations are difficult primarily because of the "scanning" aspect, where the electron probe is moved over the sample surface - each new probe location requires a full multiple-scattering simulation, and STEM images often contain millions of pixels.
Prismatic is a CUDA/C++/Python software package for fast image simulation in scanning transmission electron microscopy (STEM) and high-resolution transmission electron microscopy (HRTEM). It includes parallel, data-streaming implementations of both the plane-wave reciprocal-space interpolated scattering matrix (PRISM) and multislice algorithms using multicore CPUs and CUDA-enabled GPU(s), in some cases achieving accelerations as high as 1000x or more relative to traditional methods. Prismatic is fast, free, open-sourced, and contains a graphical user interface.Prismatic is an implementation of two related algorithms for STEM and HRTEM simulation:
- Multislice In this method, we use first compute the projected potentials from a set of atomic coordinates. Next, for all STEM probes, we solve the Schrodinger equation for fast electrons using a split-step method, where we alternate between the transmission operator (which gives the phase shift atoms impart onto the electron wave) and the propagation operator (describing free-space propagation of the electron wave).
- PRISM Multslice STEM simulations can be quite slow, because the scattering of each new STEM probe is recomputed from scratch. An alternative is to use the multislice method to compute a scattering matrix, which is then used to construct each STEM probe. This algorithm often requires roughly the same computational time as the mutlislice method, but also allows for huge speed-ups by using Fourier interpolation of the scattering matrix. Thus we call this approach the plane-wave recriprocal-space interpolated scattering matrix (PRISM) algorithm.
We have released Prismatic as open source code for the benefit of the microscopy community. While we tried to extensively test it, please keep in mind that Prismatic is beta software. We take no responsibility for any errors or inaccuracies caused by using Prismatic, and we strongly recommend that all users carefully test the convergence and accuracy of their simulations.