This is a list of software packages for calculating scattering and absorption of light using Discrete dipole approximation (DDA).
Most of the software applies to arbitrary-shaped inhomogeneous nonmagnetic particles and particle systems in free space or homogeneous dielectric host medium. The calculated quantities typically include the Mueller matrices, integral cross-sections (extinction, absorption, and scattering), internal fields and angle-resolved scattered fields (phase function). There are some published comparisons of existing DDA codes.
General-purpose open-source software These packages typically use regular grids (cubical or rectangular cuboid), conjugate gradient method to solve large systems of linear equations and FFT-acceleration of the matrix-vector products which uses convolution theorem. Complexity of this approach is almost linear in number of dipoles for both time and memory.
Name Authors References Language Updated Features DDSCAT Draine and Flatau Fortran 2019 (v.7.3.3) Can also handle periodic particles and efficiently calculate near fields. Uses OpenMP acceleration. DDscat.C++ Choliy C++ 2017 (v.7.3.1) Version of DDSCAT translated to C++ with some further improvements. ADDA Yurkin, Hoekstra, and contributors C 2020 (v.1.4.0) Implements fast and rigorous consideration of a plane substrate, and allows rectangular-cuboid voxels for highly oblate or prolate particles. Can also calculate emission (decay-rate) enhancement of point emitters. Also simulates electron-energy-loss spectroscopy and cathodoluminescence in arbitrary (including absorbing) host media. Near-fields calculation is not very efficient. Uses Message Passing Interface (MPI) parallelization and can run on GPU (OpenCL). OpenDDA McDonald C 2009 (v.0.4.1) Uses both OpenMP and MPI parallelization. Focuses on computational efficiency. DDA-GPU Kieß C++ 2016 Runs on GPU (OpenCL). Algorithms are partly based on ADDA. VIE-FFT Sha C/C++ 2019 Also calculates near fields and material absorption. Named differently, but the algorithms are very similar to the ones used in the mainstream DDA. VoxScatter Groth, Polimeridis, and White Matlab 2019 Uses circulant preconditioner for accelerating iterative solvers IFDDA Chaumet, Sentenac, and Sentenac Fortran, GUI in C++ with Qt 2025 (v.1.0.27) Idiot friendly DDA. Uses OpenMP, HDF5 and CUDA for GPU. Has a separate version (IF-DDAM) for multi-layered substrate. MPDDA Shabaninezhad, Awan, and Ramakrishna Matlab 2021 (v.1.0) Runs on GPU (using Matlab capabilities) CPDDA Dibo Xu and others Python 2025 GPU acceleration using CuPy
Specialized software These list include software that do not qualify for the previous section. The reasons may include the following: source code is not available, FFT acceleration is absent or reduced, the code focuses on specific applications not allowing easy calculation of standard scattering quantities.
Name Authors References Language Updated Features DDSURF, DDSUB, DDFILM Schmehl, Nebeker, and Zhang Fortran 2008 Rigorous handling of semi-infinite substrate and finite films (with arbitrary particle placement), but only 2D FFT acceleration is used. DDMM Mackowski Fortran 2002 Calculates T-matrix, which can then be used to efficiently calculate orientation-averaged scattering properties. CDA McMahon Matlab 2006 DDA-SI Loke Matlab 2014 (v.0.2) Rigorous handling of substrate, but no FFT acceleration is used. PyDDA Dmitriev Python 2015 Reimplementation of DDA-SI e-DDA Vaschillo and Bigelow Fortran 2019 (v.2.0) Simulates electron-energy loss spectroscopy and cathodoluminescence. Built upon DDSCAT 7.1. DDEELS Geuquet, Guillaume and Henrard Fortran 2013 (v.2.1) Simulates electron-energy loss spectroscopy and cathodoluminescence. Handles substrate through image approximation, but no FFT acceleration is used. T-DDA Edalatpour Fortran 2015 Simulates near-field radiative heat transfer. The computational bottleneck is direct matrix inversion (no FFT acceleration is used). Uses OpenMP and MPI parallelization. CDDA Rosales, Albella, González, Gutiérrez, and Moreno 2021 Applies to chiral systems (solves coupled equations for electric and magnetic fields) PyDScat Yibin Jiang, Abhishek Sharma and Leroy Cronin Python 2023 Simulates nanostructures undergoing structural transformation with GPU acceleration.
See also Computational electromagnetics Mie theory Finite-difference time-domain method Method of moments (electromagnetics)
References