adda
adda copied to clipboard
Rapid calculation for many refractive indices
An interesting idea was proposed to optimize multiple runs of iterative solver
when only the refractive index is varied.
N.V. Budko and R.F. Remis, “Electromagnetic inversion using a reduced-order
three-dimensional homogeneous model,” Inv. Probl. 20, S17-S26 (2004).
http://dx.doi.org/10.1088/0266-5611/20/6/S02
This is relevant for:
1) construction of databases of scattering properties of different particles.
2) calculation of absorption/scattering/etc. spectra of particles much smaller
than the wavelength.
Original issue reported on code.google.com by yurkin
on 6 Jan 2011 at 7:33
Similar algorithms are discussed in: Simoncini V, Szyld DB. Recent computational developments in Krylov subspace methods for linear systems. Num. Lin. Alg. Appl. 2007;14:1–59. doi: 10.1002/nla.499
Most efficient are the algorithms for the Rayleigh case, but they can be applied to a range of refractive indices in full-wavelength case, as well. But there the original matrix is complex symmetric, which complicates the matter. But the relevant algorithms do exist (see above paper).
Two more ideas are described in Asenchik O.D. Using the method of discrete dipoles to approximate solutions of the problems of light scattering and absorption by particles, Opt. Spectrosc. 122, 294–302 (2017). One is the direct evaluation by "shifting" the inverse of the interaction matrix (using its decomposition in spherical harmonics), another is three-point interpolation using specially designed functional form. Both work fine for tests with Rayleigh particles.
Konstantin Inzhevatrkin (@inzhevatkin) has implemented a solution to this issue on a development branch: https://github.com/inzhevatkin/adda/tree/Shifted_CG
It is based on the shifted conjugate gradient iterative method. Current capabilities and limitations are discussed at: https://groups.google.com/g/adda-discuss/c/qvZUdZAiWmM