Features - adda-team/adda GitHub Wiki

ADDA is an open-source parallel implementation of the discrete dipole approximation, capable to simulate light scattering by particles of arbitrary shape and composition in a wide range of particle sizes. The following list of features corresponds to the latest stable version.

Parallel implementation

Distinctive feature of ADDA is the ability to run a single DDA simulation in parallel on a cluster or supercomputer, using MPI. Computational grid of 1024×1024×1024 dipoles (1 Gdipole) and even larger can be used.

  • Very large particle sizes can be handled. For instance, light scattering by a sphere with size parameter 320 (diameter equal to 100 wavelengths) can be accurately simulated (see Largest Simulations).
  • Very fine discretization can be used when high accuracy or extra reliability is required.
  • Simple sequential execution is also possible, as well as running on a multi-core processor.
  • Another option is to use OpenCL version of ADDA to effectively employ modern GPUs.

Arbitrary particle shape and composition

  • 16 predefined particle shapes from a sphere to a red blood cell and two touching ellipsoids.
  • Homogeneous axisymmetric shape can be specified by an arbitrary contour in xz-plane.
  • Arbitrary 3D geometry can be specified by a shape file. Apart from its own format ADDA understands the format of DDSCAT. Also converters from common 3D shape formats are available.
  • Any representation of the particle shape can be automatically refined, replacing each dipole by a cube n×n×n of smaller dipoles.
  • Particle can be highly inhomogeneous, consisting of up to 255 homogeneous domains with different refractive indices.
  • Refractive index of each domain can be anisotropic, specified by a diagonal tensor.
  • Spherical granules can be automatically added to any of the particle domains (randomly uniformly distributed).

Full control over scattering geometry/environment

  • Outer medium can be either vacuum or non-absorbing homogeneous one.
  • The particle can also be placed near a plane substrate.
  • Orientation of the particle and/or direction of the incident beam can be varied.
  • Orientation averaging is possible (performed by an efficient algorithm based on Romberg integration).
  • Incident beam can be a plane wave, a (tightly-focused) Gaussian beam, field of a point dipole, or arbitrary one read from file.

A wide variety of calculated quantities

  • Scattering, absorption, and extinction cross sections.
  • Asymmetry parameter (or vector).
  • Angle-resolved amplitude and Mueller matrices. The latter can be automatically integrated over azimuthal angle.
  • Radiation forces - both total and for each single dipole.
  • Electric fields in and near the particle.
  • Emission (decay-rate) enhancements for point emitters near the particle (radiative and non-radiative parts).

Fast and accurate

  • A large linear system is solved by an iterative solver. Matrix-vector product is computed using FFT-convolution method, based on the regular spacing of dipoles. Thus, simulation time is an order of number of dipoles (even for particles near substrate).
  • By default FFTW3 package is used to perform FFT, which automatically adapts to a particular hardware. A fall-back FFT implementation, not requiring any separate package installation, is also available.
  • Seven Krylov-subspace-type iterative solvers are available, four of them directly employ the complex-symmetric structure of the interaction matrix.
  • Modern DDA formulations, namely filtered coupled dipoles and integration of Green's tensor, are available. They may grossly outperform standard formulations (e.g., lattice dispersion relation) in certain cases.
  • Rectangular-cuboid dipoles can be used, greatly accelerating computations for particles with one or two dimensions much smaller than the wavelength.
  • Overall, the code is highly optimized both for speed and memory consumption. This was exemplified by comparison with other DDA codes.
  • A special sparse mode is efficient for very porous particles.

Easy to use

  • A standalone GUI for beginning users.
  • Powerful command line interface.
  • Internal help system (-h [...] command line option).
  • A lot of information in the wiki pages and manual.
  • Active discussion group to help users.
  • Checkpoint system to break and then continue long simulations.
  • Simulation results are saved into separate directory with automatically generated unique name. Thus, multiple parallel runs can be easily performed.
  • Many of the internally-used quantities can be saved to file to be further used by other programs. This includes particle shape, position of granules, values of incident beam and dipole polarizations at every dipole.
  • Easy to compile on almost any platform using extensive instructions.
  • Ready-to-use executables for 64-bit Windows.

Reliable

Actively developed

⚠️ **GitHub.com Fallback** ⚠️