Links - adda-team/adda GitHub Wiki

A variety of links to different application examples of ADDA and to related codes.

Codes that use ADDA

Tools that operate with ADDA input/output

Here we do not list tools/workflows that are supplied in misc/ folder.

  • Processing of shape files:
    • LiteBil allows visualization of ADDA and DDSCAT shape files.
    • Python scripts to visualize particle shape, colored by x-position, using Matplotlib or using Povray (the latter is much faster).
    • adda_geom_info from ADDA geometry tools provides basic information about the shape (e.g., ranges along all axes and mean position).
    • embed_and_join from ADDA geometry tools joins several shapes or puts one into a rectangular box.
    • addaview and adda_shadow from SnowflakeToolkit - provides 3D visualization or a single oriented image of a shape.
  • Producing shape files:
    • crystal_dda - Python script generating shape files of 2D planar branched ice crystals.
    • SnowflakeToolkit - C++ package for generating ice and snow particles (including aggregates, riming, and melting).
    • MeshConvert from ADDA geometry tools converts .obj files to shape ones. Similar to misc/pip.
  • Producing shape files for DDSCAT that can also be read by ADDA:
  • Producing incident-beam files for ADDA:
    • Python scripts to produce paraxial versions of Hermite-Gaussian, Laguerre-Gaussian, Bessel, and Airy beams are given in (Hui et al. 2022).
  • coherent_incoherent from ADDA geometry tools calculates average and difference from average for internal fields from several ADDA runs.
  • T-DDA - a code to compute the steady-state temperature distribution for a set of nanoparticles in a host medium. It starts from distributed absorption (heat) rates that can be computed by any standard DDA code, including ADDA (the code itself doesn't include DDA simulations). Those absorption rates are related to internal fields, but the specific input file format is not specified.

Branches/forks of ADDA

The following are works in progress with varying degree of completeness. Use them at your own risk and refer to corresponding developers for further information. Due to the nature of project-driven scientific software, some of them stay dormant for years, but we still hope to merge them into the master repository someday.

  • Bessel beams implementation - already in the master branch, #209.
  • Simulations of electron-energy-loss spectroscopy (EELS) - fork, #155.
  • Improved (potentially) FCD formulation - branch ifcd.
  • OpenCL acceleration for the Sparse mode - branch sparse_ocl.
  • Weighted discretization - branch wd, #12.
  • NetCDF support and front-end - described in report, partly reflected at the fork.
  • Optimized calculation of Sommerfeld integrals (makes it negligibly fast for most problems) - fork, #176.
  • Support for complex refractive index of host (outer) medium and/or complex frequency - fork, #91, #219.
  • Efficient simulations for many refractive indices at once - fork, #121.
  • Efficient simulations for many incident fields/orientations at once - fork, #54.

Other related (DDA) codes

This list is limited to the codes, which can simulate particle of finite sizes. Thus, it does not include many "coupled-dipoles" codes focusing on a set of small (nano-)particles, each being approximated by a single dipole (or a combination of electric and magnetic dipole). They can be found at other web sites mentioned at the end of this section.

  • DDSCAT - popular general-purpose DDA code.
  • DDscat.C++ - port of DDSCAT into C++.
  • nanoDDSCAT+ - GUI front end for DDSCAT.
  • OpenDDA - highly-optimized DDA code, uses both MPI and OpenMP parallelization.
  • IF-DDA - idiot-friendly DDA, a Fortran code (uses FFT and OpenMP) with GUI front end.
  • IF-DDAM - same as IF-DDA, but for multilayered host medium (and only 2D FFT is used).
  • DDA-GPU - GPU-accelerated (using OpenCL) DDA code. Algorithms are partly based on ADDA.
  • DDA-SI - Matlab DDA code which includes surface interaction (by Sommerfeld integrals), but lacks FFT acceleration.
  • pyDDA - port of DDA-SI into Python.
  • MPDDA - basic DDA implementation on Matlab, which uses FFT and GPU.
  • e-DDA - DDA with electron excitation, simulates electron-energy loss spectroscopy (EELS) and cathodoluminescence (CL). Built upon DDSCAT 7.1. There is also an outdated fork, built upon DDSCAT 7.3.
  • DDEELS - similar to the above (simulates EELS and CL), but independent of other codes. Lacks FFT acceleration, but can account for substrate through image approximation.
  • VoxScatter - Matlab volume-integral-equation code. Can operate as standard DDA or as Method of Moments with evaluation of the double integrals of the Green's tensors. Employs circulant preconditioning.
  • MARIE - Matlab volume-integral-equation code, specialized for magnetic resonance imaging. Contains GUI.
  • pyGDM - Python/Fortran implementation of Green's dyadic method (equivalent to the DDA), uses matrix inversion instead of FFT and iterative solvers.
  • PyDScat-GPU, RD-DDA - Python implementation of the DDA, based on matrix inversion, and its extension to accelerate multiple simulations (for shapes different by only a single dipole) using rank-one decomposition.
  • Topo-DDA - Topological optimization using the DDA
  • SGP-DDA - Multi-material optimization of particle composition based on the DDA and sequential global programming

See also

University courses

Media and consolidated reports

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