CUDA-accelerated Electromagnetic scattering for Large Ensembles of Spheres

CELES (latin for 'fast ship') is a MATLAB/CUDA MEX implementation of the multi-sphere T-matrix method (also known as Generalized Multiparticle Mie method). The main aim of the software is to rigorously solve electrodynamic problems comprising extremely large numbers of spherical scatterers. As such, it can be applied to study light propagation in macroscopic aggregates of particles in order to derive their bulk transport properties.


The scattered electric field is represented as a superposition of spherical vector wave functions relative to the sphere's center coordinates. The coefficients of this expansion are the unknowns of the problem. To calculate them, a system of linear equations needs to be solved.

Why another software?

There are already excellent codes for the simulation of electromagnetic particles at multiple spherical objects. For example, the MSTM Fortran code by Daniel Mackowski can run either on a single machine or on a cluster. A collection of more light scattering codes can be found at Thomas Wriedt's scattport homepage. With the CELES toolbox we want to add a software that runs with high computational performance on workstation computers with suitable graphics processing units. The key feature of the CELES software is to run the costly matrix-vector multiplications in the iterative solving of the system of linear equations in parallel on the GPU. In addition, the convergence is accelerated by means of a block-diagonal preconditioner.


In order to run CELES, the following software (in addition to MATLAB) should be installed on your system:

You can check which CUDA version you need to install by running the command gpuDevice in MATLAB and look for ToolkitVersion in the output.

CELES has been successfully tested on Linux using the built-in gcc compiler and on Windows with the following software combinations: MATLAB R2016b + CUDA 7.5 + MS Visual Studio 2013 and MATLAB R2017a + CUDA 8 + MS Visual Studio 2013. MS Visual Studio 2013 can be downloaded here.

In order to fully take advantage of preconditioned iterative solvers we recommend running CELES on a workstation with sufficient RAM (~several 10GB for 10000+ scattering particles).

Getting started

CELES can be installed via cloning the GitHub repository with

git clone

or by downloading and extracting one of the stable releases. Please note that the releases do not always represent the most up to date version.

In MATLAB, remember to add CELES to your search path with


As an example input you can execute the CELES_MAIN script. Comments in the script explain how the simulation parameters are specified. Alternatively, you can use the CELES_model_wizard app, a GUI that helps in the specification of the simulation parameters.



For any questions regarding the software, please contact Amos Egel, Lorenzo Pattelli or Giacomo Mazzamuto


If you use CELES, please cite it as follows:

A. Egel, L. Pattelli, G. Mazzamuto, D. S. Wiersma, and U. Lemmer, "CELES: CUDA-accelerated simulation of electromagnetic scattering by large ensembles of spheres," J. Quant. Spectrosc. Radiat. Transf., vol. 199, pp. 103-110, 2017.

Link to article homepage.


CELES was initiated by Amos Egel, Lorenzo Pattelli and Giacomo Mazzamuto. In addition, Alan Zhan has contributed code to the project. We thank Yasuhiko Okada for valuable comments and feedback.

CELES uses the following codes from other programmers: