Description
Is your feature request related to a problem? Please describe.
The surface mode of ADDA is fully operational for arbitrary incident field read from file. Built-in plane wave and point dipole are also operational. However, built-in options for Gaussian and Bessel beams work only in free space. The main reason is that the corresponding analytical expressions are much more complicated (include some integrals).
Previous work
One of the possible solution is to implement them based on decomposition of corresponding free-space beams into plane waves (so-called, angular-spectrum decomposition). For Bessel beams such integral is 1D (over azimuthal angle around the beam axis), which makes straightforward implementation fast enough. @stefaniagl made a proof-of-principle implementation at a separate branch. The details of this implementation together with test simulation results are described in her MSc thesis (in Russian), as well as in the following conference paper:
Glukhova S.A. and Yurkin M.A. Scattering simulations for Bessel beams near a plane substrate in the framework of the discrete dipole approximation, Bremen Zoom Workshop on Light Scattering 2023, 20–21 March 2023, Online, pp. 19–22. (paper)
A similar implementation has been made by Stefania for Gaussian beams - this branch. There is no documentation, except that it works with -beam gaussASD …
and currently uses 40 x 40 grid of angles (hardwired in the code). The computational time of this field on a dipole grid is then comparable to 1000 iterations of the solver.
Describe the solution you'd like
Finalize the above implementations, test their accuracy and simulation time to optimize the parameters of the integration. Investigate possible acceleration strategies, especially for Gaussian beams.