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.
If you use CELES, please cite it as follows:
Egel A, Pattelli L, Mazzamuto G, Wiersma DS, and Lemmer U. CELES: CUDA-accelerated simulation of electromagnetic scattering by large ensembles of spheres, Journal of Quantitative Spectroscopy and Radiative Transfer 199C (2017) pp. 103-110. [link] [bibtex]
CELES is written in MATLAB in order to provide a user-friendly, fully scriptable interface to configure and run simulations. Its prominent features are
- massively parallel execution on CUDA-capable NVIDIA GPU hardware
- block-diagonal preconditioning for faster convergence of iterative solvers
- lookup-table approach to evaluate spherical Hankel functions
- rich output (power flux, near- and far-field distributions)
- Gaussian beam excitation
- GUI (experimental)
In order to run CELES, the following software (in addition to MATLAB) should be installed on your system:
- the CUDA toolkit.
- a C++ compiler which is supported by MATLAB in combination with the given CUDA version.
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).
CELES can be installed via cloning the GitHub repository with
git clone [email protected]:disordered-photonics/celes.git
or by downloading and extracting one of the 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
addpath(genpath('path/to/celes'));
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 more information, please refer to the documentation.
If you add any improvement or implement new features to the software please consider contributing them following the GitHub flow
- Fork the project
- Create your feature branch:
git checkout -b my-new-feature
- Commit your changes:
git commit -am 'Add some feature'
- Push the branch:
git push origin my-new-feature
- Submit a Pull request
If you have questions, bug reports or feature requests, please use the Issues section to report them.
This software is published under the BSD 3-clause license, please read the LICENCE file for more information.
CELES uses the following codes from other programmers:
- polarplot3d from Kenn Gerard
- wigner3j from Kobi Kraus
- Iterative solvers based on the Templates for the Solution of Linear Systems