Discrete dipole approximation codes
This article contains list of discrete dipole approximation codes and their applications.
The discrete dipole approximation (DDA) is a flexible technique for computing scattering and absorption by targets of arbitrary geometry. Given a target of arbitrary geometry, one seeks to calculate its scattering and absorption properties. The DDA can be thought either as rigorous discretization of the volume-integral equation for the electric field or as an approximation of the continuum target by a finite array of polarizable points. The latter points acquire dipole moments in response to the local electric field and interact with one another via their electric fields, so the DDA is also sometimes referred to as the coupled dipole approximation/method. It is closely related to (volumetric) method of moments, digitized Green's function, Green's dyadic method/formulation, or volume integral equation method.
The compilation contains information about the discrete dipole approximation, relevant links, and their applications. There are reviews   as well as published comparison of existing codes.  All of the codes apply to arbitrary-shaped inhomogeneous nonmagnetic particles and particle systems in free space or homogeneous dielectric host medium (handling of substrate is discussed separately). The calculated quantities typically include angle-resolved scattered fields (or the Mueller matrices), integral cross-sections (extinction, absorption, and scattering), and internal fields. Therefore, the description of the codes below focuses on their unique features, including other computed quantities and computational optimizations/parallelization.
General-purpose open-source DDA codes
All of the following use regular grids (cubic or rectangular cuboid), Krylov-subspace iterative methods to solve large system of linear equations, and FFT-acceleration of the matrix-vector products. It results in almost linear computational complexity in number of dipoles (discretization voxels) for both time and memory. Importantly, the source code is freely available.
|DDSCAT||B. T. Draine and P. J. Flatau||||Fortran||2016 (v. 7.3.2)||Can also handle periodic particles and efficiently calculate near fields. Uses OpenMP acceleration.|
|DDscat.C++||V. Choliy||||C++||2017 (v. 7.3.1)||Version of DDSCAT translated to C++ with some further improvements.|
|ADDA||M. A. Yurkin, A. G. Hoekstra, and others||||C||2018 (v. 1.4.0-alpha)||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||J. McDonald||||C||2009 (v. 0.4.1)||Uses both OpenMP and MPI parallelization. Focuses on computational efficiency.|
|DDA-GPU||S. Kieß||||C++||2016||Runs on GPU (OpenCL). Algorithms are partly based on ADDA.|
|VIE-FFT||W. E. I. 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.|
Specialized DDA codes
These list include codes that do not qualify for the previous section. The reasons include the following: source code is not available (then the update date is approximate), FFT acceleration is absent or reduced, the code focuses on specific applications, not allowing easy calculation of standard scattering quantities.
|DDSURF, DDSUB, DDFILM||R. Schmehl, B. M. Nebeker, and H. Zhang||||Fortran||2008||Rigorous handling of semi-infinite substrate and finite films (with arbitrary particle placement), but only 2D FFT acceleration is used.|
|DDMM||D. W. Mackowski||||Fortran||2002||Calculates T-matrix, which can then be used to efficiently calculate orientation-averaged scattering properties.|
|CDA||M. D. McMahon||||Matlab||2006|
|DDA-SI||V. L. Y. Loke||||Matlab||2011 (v. 0.1)||Rigorous handling of substrate, but no FFT acceleration is used.|
|e-DDA||A. Vaschillo and N. Bigelow||||Fortran||2015 (v. 1.2)||Simulates electron-energy loss spectroscopy and cathodoluminescence. Built upon DDSCAT 7.1.|
|DDEELS||N. Geuquet, S.-O. Guillaume and L. 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||S. 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.|
Relevant scattering codes
- Computational electromagnetics
- Light scattering by particles
- List of atmospheric radiative transfer codes
- M. A. Yurkin; A. G. Hoekstra (2007). "The discrete dipole approximation: an overview and recent developments" (PDF). J. Quant. Spectrosc. Radiat. Transfer. 106 (1–3): 558–589. arXiv:0704.0038. Bibcode:2007JQSRT.106..558Y. doi:10.1016/j.jqsrt.2007.01.034.
- B. T. Draine; P. J. Flatau (1994). "Discrete dipole approximation for scattering calculations". J. Opt. Soc. Am. A. 11 (4): 1491–1499. Bibcode:1994JOSAA..11.1491D. CiteSeerX 10.1.1.454.1175. doi:10.1364/JOSAA.11.001491.
- A. Penttila; E. Zubko; K. Lumme; K. Muinonen; M. A. Yurkin; B. T. Draine; J. Rahola; A. G. Hoekstra; Y. Shkuratov (2007). "Comparison between discrete dipole implementations and exact techniques" (PDF). J. Quant. Spectrosc. Radiat. Transfer. 106 (1–3): 417–436. Bibcode:2007JQSRT.106..417P. doi:10.1016/j.jqsrt.2007.01.026.
- B. T. Draine; P. J. Flatau (2008). "Discrete-dipole approximation for periodic targets: theory and tests". J. Opt. Soc. Am. A. 25 (11): 2693–2703. arXiv:0809.0338. Bibcode:2008JOSAA..25.2693D. doi:10.1364/JOSAA.25.002693.
- V. Y. Choliy (2013). "The discrete dipole approximation code DDscat.C++: features, limitations and plans". Adv. Astron. Space Phys. 3: 66–70. Bibcode:2013AASP....3...66C.
- M. A. Yurkin; V. P. Maltsev; A. G. Hoekstra (2007). "The discrete dipole approximation for simulation of light scattering by particles much larger than the wavelength" (PDF). J. Quant. Spectrosc. Radiat. Transfer. 106 (1–3): 546–557. arXiv:0704.0037. Bibcode:2007JQSRT.106..546Y. doi:10.1016/j.jqsrt.2007.01.033.
- M. A. Yurkin; A. G. Hoekstra (2011). "The discrete-dipole-approximation code ADDA: capabilities and known limitations" (PDF). J. Quant. Spectrosc. Radiat. Transfer. 112 (13): 2234–2247. Bibcode:2011JQSRT.112.2234Y. doi:10.1016/j.jqsrt.2011.01.031.
- J. McDonald; A. Golden; G. Jennings (2009). "OpenDDA: a novel high-performance computational framework for the discrete dipole approximation". Int. J. High Perf. Comp. Appl. 23 (1): 42–61. arXiv:0908.0863. Bibcode:2009arXiv0908.0863M. doi:10.1177/1094342008097914.
- J. McDonald (2007). OpenDDA - a novel high-performance computational framework for the discrete dipole approximation (PDF) (PhD). Galway: National University of Ireland. Archived from the original (PDF) on 2011-07-27.
- M. Zimmermann; A. Tausendfreund; S. Patzelt; G. Goch; S. Kieß; M. Z. Shaikh; M. Gregoire; S. Simon (2012). "In-process measuring procedure for sub-100 nm structures". J. Laser Appl. 24 (4): 042010. Bibcode:2012JLasA..24d2010Z. doi:10.2351/1.4719936.
- W. E. I. Sha; W. C. H. Choy; Y. P. Chen; W. C. Chew (2011). "Optical design of organic solar cell with hybrid plasmonic system". Opt. Express. 19 (17): 15908–15918. Bibcode:2011OExpr..1915908S. doi:10.1364/OE.19.015908. PMID 21934954.
- R. Schmehl; B. M. Nebeker; E. D. Hirleman (1997). "Discrete-dipole approximation for scattering by features on surfaces by means of a two-dimensional fast Fourier transform technique". J. Opt. Soc. Am. A. 14 (11): 3026–3036. Bibcode:1997JOSAA..14.3026S. doi:10.1364/JOSAA.14.003026.
- B. M. Nebeker (1998). Modeling of light scattering from features above and below surfaces using the discrete-dipole approximation (PhD). Tempe, AZ, USA: Arizona State University.
- E. Bae; H. Zhang; E. D. Hirleman (2008). "Application of the discrete dipole approximation for dipoles embedded in film". J. Opt. Soc. Am. A. 25 (7): 1728–1736. Bibcode:2008JOSAA..25.1728B. doi:10.1364/JOSAA.25.001728.
- D. W. Mackowski (2002). "Discrete dipole moment method for calculation of the T matrix for nonspherical particles". J. Opt. Soc. Am. A. 19 (5): 881–893. Bibcode:2002JOSAA..19..881M. doi:10.1364/JOSAA.19.000881.
- M. D. McMahon (2006). Effects of geometrical order on the linear and nonlinear optical properties of metal nanoparticles (PDF) (PhD). Nashville, TN, USA: Vanderbilt University.
- V. L. Y. Loke; P. M. Mengüç; Timo A. Nieminen (2011). "Discrete dipole approximation with surface interaction: Computational toolbox for MATLAB". J. Quant. Spectrosc. Radiat. Transfer. 112 (11): 1711–1725. Bibcode:2011JQSRT.112.1711L. doi:10.1016/j.jqsrt.2011.03.012.
- N. W. Bigelow; A. Vaschillo; V. Iberi; J. P. Camden; D. J. Masiello (2012). "Characterization of the electron- and photon-driven plasmonic excitations of metal nanorods". ACS Nano. 6 (8): 7497–7504. doi:10.1021/nn302980u. PMID 22849410.
- N. Geuquet; L. Henrard (2010). "EELS and optical response of a noble metal nanoparticle in the frame of a discrete dipole approximation". Ultramicroscopy. 110 (8): 1075–1080. doi:10.1016/j.ultramic.2010.01.013.
- S. Edalatpour; M. Čuma; T. Trueax; R. Backman; M. Francoeur (2015). "Convergence analysis of the thermal discrete dipole approximation". Phys. Rev. E. 91 (6): 063307. arXiv:1502.02186. Bibcode:2015PhRvE..91f3307E. doi:10.1103/PhysRevE.91.063307. PMID 26172822.