Content deleted Content added
→Specialized DDA codes: nicer table |
→General-purpose open-source DDA codes: nicer table |
||
Line 40:
===General-purpose open-source DDA codes===
These codes typically use regular grids (cubical or rectangular cuboid), [[conjugate gradient method]] to solve large system 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.<ref name=Yurkin2007a/>
{|
|- style="background-color: #efefef; font-weight: bold;"
! Name !! Authors !! References !! Language !! Updated !! Features
|-
| style="background-color: #ffffff;" | [http://ddscat.wikidot.com/ DDSCAT]
| style="background-color: #ffffff;" | Draine and Flatau
| style="background-color: #ffffff;" | <ref name=
| style="background-color: #ffffff;" | Fortran
| style="background-color: #ffffff;" | 2019 (v.{{nbsp}}7.3.3)
| style="background-color: #ffffff;" | Can also handle periodic particles and efficiently calculate [[Electromagnetic_radiation#Near_and_far_fields|near fields]]. Uses [[OpenMP]] acceleration.
|-
| style="background-color: #eeeeee;" | [http://space.univ.kiev.ua/Choliy/DDscatcpp/ DDscat.C++]
| style="background-color: #eeeeee;" | Choliy
| style="background-color: #eeeeee;" | <ref name=
| style="background-color: #eeeeee;" | C++
| style="background-color: #eeeeee;" | 2017 (v.{{nbsp}}7.3.1)
| style="background-color: #eeeeee;" | Version of DDSCAT translated to C++ with some further improvements.
|-
| style="background-color: #ffffff;" | [https://github.com/
| style="background-color: #ffffff;" | Yurkin, Hoekstra, and contributors
| style="background-color: #ffffff;" | <ref name=yurkin2007b/><ref name=yurkin2011/>
| style="background-color: #ffffff;" | C
| style="background-color: #ffffff;" | 2020 (v.{{nbsp}}1.4.0)
| style="background-color: #ffffff;" | Implements fast and rigorous consideration of a plane substrate, and allows rectangular-cuboid voxels for highly oblate or prolate particles. Can also calculate [[Purcell_effect|emission (decay-rate) enhancement]] of point emitters. [[Electromagnetic_radiation#Near_and_far_fields|Near-fields]] calculation is not very efficient. Uses [[Message Passing Interface]] (MPI) parallelization and can run on GPU ([[OpenCL]]).
|-
| style="background-color: #eeeeee;" | [https://github.com/drjmcdonald/OpenDDA/ OpenDDA]
| style="background-color: #eeeeee;" | McDonald
| style="background-color: #eeeeee;" | <ref name=mcdonald2009/><ref name=mcdonald2007a/>
| style="background-color: #eeeeee;" | C
|
| style="background-color: #eeeeee;" | Uses both OpenMP and MPI parallelization. Focuses on computational efficiency.
|-
| style="background-color: #ffffff;" | [https://github.com/
| style="background-color: #ffffff;" | Kieß
| style="background-color: #ffffff;" | <ref name=
| style="background-color: #ffffff;" | C++
| style="background-color: #ffffff;" | 2016
| style="background-color: #ffffff;" | Runs on GPU (OpenCL). Algorithms are partly based on ADDA.
|-
| style="background-color: #eeeeee;" | [https://github.com/Sha-Group/VIE_FFT VIE-FFT]
| style="background-color: #eeeeee;" | Sha
| style="background-color: #eeeeee;" | <ref name=sha2011/>
| style="background-color: #eeeeee;" | C/C++
| style="background-color: #eeeeee;" | 2019
| style="background-color: #eeeeee;" | Also calculates [[Electromagnetic_radiation#Near_and_far_fields|near fields]] and material absorption. Named differently, but the algorithms are very similar to the ones used in the mainstream DDA.
|-
| style="background-color: #ffffff;" | [https://github.com/samuelpgroth/VoxScatter VoxScatter ]
| style="background-color: #ffffff;" | Groth, Polimeridis, and White
| style="background-color: #ffffff;" | <ref name=groth2020/>
| style="background-color: #ffffff;" | Matlab
| style="background-color: #ffffff;" | 2019
| style="background-color: #ffffff;" | Uses circulant preconditioner for accelerating iterative solvers
|-
| style="background-color: #eeeeee;" | [https://www.fresnel.fr/spip/spip.php?article2735 IF-DDA]
| style="background-color: #eeeeee;" | Chaumet, Sentenac, and Sentenac
| style="background-color: #eeeeee;" | <ref name=chaumet2021/>
| style="background-color: #eeeeee;" | Fortran, GUI in C++ with Qt
| style="background-color: #eeeeee;" | 2021 (v.{{nbsp}}0.9.19)
| style="background-color: #eeeeee;" | Idiot-friendly DDA. Uses OpenMP and HDF5. Has a separate version (IF-DDAM) for multi-layered substrate.
|-
| style="background-color: #ffffff;" | [https://github.com/MasoudShabani/MPDDA-1.0 MPDDA]
| style="background-color: #ffffff;" | Shabaninezhad, Awan, and Ramakrishna
| style="background-color: #ffffff;" | <ref name=matlab2021/>
| style="background-color: #ffffff;" | Matlab
| style="background-color: #ffffff;" | 2021 (v.{{nbsp}}1.0)
| style="background-color: #ffffff;" | Runs on GPU (using Matlab capabilities)
|}
|