Discrete dipole approximation codes

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

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[1] or as an approximation of the continuum target by a finite array of polarizable points[2]. 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 [2] [1] as well as published comparison of existing codes. [3] 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[edit]

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.[1] Importantly, the source code is freely available.

Name Authors References Language Updated Features
DDSCAT B. T. Draine and P. J. Flatau [2]


Fortran 2016 (v. 7.3.2) Can also handle periodic particles and efficiently calculate near fields. Uses OpenMP acceleration.
DDscat.C++ V. Choliy [5] 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 [6]


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 [8]


C 2009 (v. 0.4.1) Uses both OpenMP and MPI parallelization. Focuses on computational efficiency.
DDA-GPU S. Kieß [10] C++ 2016 Runs on GPU (OpenCL). Algorithms are partly based on ADDA.
VIE-FFT W. E. I. Sha [11] 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[edit]

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.

Name Authors References Language Updated Features
DDSURF, DDSUB, DDFILM R. Schmehl, B. M. Nebeker, and H. Zhang [12]

[13] [14]

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 [15] Fortran 2002 Calculates T-matrix, which can then be used to efficiently calculate orientation-averaged scattering properties.
CDA M. D. McMahon [16] Matlab 2006
DDA-SI V. L. Y. Loke [17] Matlab 2011 (v. 0.1) Rigorous handling of substrate, but no FFT acceleration is used.
e-DDA A. Vaschillo and N. Bigelow [18] 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 [19] 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 [20] 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[edit]

See also[edit]


  1. ^ a b c 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.
  2. ^ a b c 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. doi:10.1364/JOSAA.11.001491.
  3. ^ 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.
  4. ^ 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.
  5. ^ 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.
  6. ^ 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.
  7. ^ 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.
  8. ^ 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.
  9. ^ 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.
  10. ^ 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.
  11. ^ 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.
  12. ^ 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.
  13. ^ 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.
  14. ^ 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.
  15. ^ 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.
  16. ^ 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.
  17. ^ 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.
  18. ^ 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.
  19. ^ 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.
  20. ^ 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.

External links[edit]