Ivanlh20 / multem

MULTEM is a powerful and advanced collection of C++ routines with CUDA support, designed to perform efficient and accurate multislice simulations for various TEM experiments such as HRTEM, STEM, ISTEM, ED, PED, CBED, ADF-TEM, ABF-HC, EFTEM, and EELS.
GNU General Public License v3.0
65 stars 26 forks source link

MULTEM

Introduction

MULTEM is a powerful and advanced software package designed to provide researchers with a versatile tool for simulating a wide range of electron microscopy experiments. Developed by Ivan Lobato (Ivanlh20@gmail.com), MULTEM is built on a collection of C++ routines with CUDA support, enabling it to perform efficient and accurate multislice simulations for various TEM experiments.

MULTEM uses the widely adopted multislice method to simulate electron scattering and wave propagation in a crystal. This method involves dividing the crystal into thin slices and calculating the electron scattering and wave propagation in each slice. This allows for accurate and efficient simulations of various electron microscopy experiments such as high-resolution TEM (HRTEM), scanning TEM (STEM), imaging STEM (ISTEM), electron diffraction (ED), precession electron diffraction (PED), convergent beam electron diffraction (CBED), annular dark field-TEM (ADF-TEM), annular bright field Hollow Cone (ABF-HC), energy filtered TEM (EFTEM), and electron energy loss spectroscopy (EELS).

MULTEM's implementation is further enhanced by its support for CUDA, a parallel computing platform developed by NVIDIA. This feature enables MULTEM to use graphics processing units (GPUs) for simulations, greatly reducing computation time and increasing simulation speed.

Currently, there are three ways to use MULTEM::

Please note that the library is under active development and subject to change. The Matlab interface is the recommended way for researchers to use MULTEM.

Remarks

In order to use the GPU capability of MULTEM, you need a Nvidia Graphic card with compute capability greater than 3.5 and CUDA 11.8 installed in your operating system. You can check the compute capability of your graphic card using the following nvidia website: https://developer.nvidia.com/cuda-gpus.

Using precompiled GUI interface

The precompiled GUI interface is only available for Windows operating system.

Using precompiled mexfiles for Matlab

The precompiled mexfiles are only available for Windows operating system and Ubuntu 18.04-based Linux distributions.

Building MULTEM for Matlab

The following steps have been tested and found to work with Matlab 2022b and CUDA 11.8. It is assumed that a C++ compiler such as Visual Studio 2019 Community, g++11.3 or Clang (Xcode 10.x) is installed on your operating system. Additionally, MULTEM also requires the fftw3, BLAS, and LAPACK libraries to be installed.The following steps have been tested and found to work with Matlab 2022b and CUDA 11.8. It is assumed that a C++ compiler such as Visual Studio 2019 Community, g++11.3 or Clang (Xcode 10.x) is installed on your operating system. Additionally, MULTEM also requires the fftw3, BLAS, and LAPACK libraries to be installed.

Troubleshooting

Please cite MULTEM in your publications if it helps your research:

    @article{LVAV16_1,
      Author = {I.Lobato and S.Van Aert and J.Verbeeck},
      Journal = {Ultramicroscopy},
      Title = {Progress and new advances in simulating electron microscopy datasets using MULTEM},
      Year = {2016},
      volume  = {168},
      pages   = {17-27}
    }

     @article{LD15_2,
      Author = {I. Lobato and D. Van Dyck},
      Journal = {Ultramicroscopy},
      Title = {MULTEM: A new multislice program to perform accurate and fast electron diffraction and imaging simulations using Graphics Processing Units with CUDA},
      Year = {2015},
      volume  = {156},
      pages   = {9-17}
    } 

if you use our parameterization of the electronscattering factors, please cite the following article:

    @Article{LD14_1,
    Title = {{An accurate parameterization for the scattering factors, electron densities and electrostatic potentials for neutral atoms that obey all physical constraints}},
    Author = {I. Lobato and D. Van Dyck},
    Journal = {Acta Crystallographica Section A},
    Year = {2014},
    Pages = {636-649},
    Volume = {70}
  }