Discrete dipole approximation codes

From Wikipedia, the free encyclopedia

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.[1]

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.[2]

NameAuthorsReferencesLanguageUpdatedFeatures
DDSCAT Draine and Flatau [3] Fortran 2019 (v. 7.3.3) Can also handle periodic particles and efficiently calculate near fields. Uses OpenMP acceleration.
DDscat.C++ Choliy [4] C++ 2017 (v. 7.3.1) Version of DDSCAT translated to C++ with some further improvements.
ADDA Yurkin, Hoekstra, and contributors [5][6] 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. Near-fields calculation is not very efficient. Uses Message Passing Interface (MPI) parallelization and can run on GPU (OpenCL).
OpenDDA McDonald [7][8] C 2009 (v. 0.4.1) Uses both OpenMP and MPI parallelization. Focuses on computational efficiency.
DDA-GPU Kieß [9] C++ 2016 Runs on GPU (OpenCL). Algorithms are partly based on ADDA.
VIE-FFT Sha [10] 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 [11] Matlab 2019 Uses circulant preconditioner for accelerating iterative solvers
IF-DDA Chaumet, Sentenac, and Sentenac [12] Fortran, GUI in C++ with Qt 2021 (v. 0.9.19) Idiot-friendly DDA. Uses OpenMP and HDF5. Has a separate version (IF-DDAM) for multi-layered substrate.
MPDDA Shabaninezhad, Awan, and Ramakrishna [13] Matlab 2021 (v. 1.0) Runs on GPU (using Matlab capabilities)
CPDDA Dibo Xu and others [14] Python 2025 GPU acceleration using CuPy

Specialized software

See also

References

Related Articles

Wikiwand AI