adda-team / adda

ADDA - light scattering simulator based on the discrete dipole approximation
GNU General Public License v3.0
97 stars 57 forks source link

Reuse orientations #54

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Reuse calculated internal fields from one orientation for the similar ones
to speed up orientation averaging, as described by Okada. 

Original issue reported on code.google.com by yurkin on 24 Dec 2008 at 7:46

GoogleCodeExporter commented 9 years ago
Similar ideas can be used for size averaging or calculating a spectrum of 
wavelengths (see issue 35).

35

Original comment by yurkin on 6 Jan 2011 at 7:40

myurkin commented 8 years ago

In general, this can be optimized by block-iterative methods.

myurkin commented 7 years ago

Another related idea is to use Compressive Sensing, which employs a more efficient basis for incident and scattered angles (instead of plane waves). A nice overview is given in L. Carin, D. Liu, W. Lin, and B. Guo, “Compressive sensing for multi-static scattering analysis,” J. Comput. Phys. 228, 3464–3477 (2009).

But it also seems analogous to the usage of the spherical-harmonics basis (#138) and T-matrix computation (#103). Right now it is not clear, which approach can be more efficient.

myurkin commented 1 year ago

Konstantin Inzhevatrkin (@inzhevatkin) has implemented a preliminary solution to this issue on a development branch: https://github.com/inzhevatkin/adda/tree/Bicg_block

It uses block conjugate gradient iterative solver (applicable to any variations of the incident fields, including particle orientations). Several tests show acceleration up to 2-3 times, but a convenient way to use the code (specify orientations) need to be devised.

myurkin commented 6 months ago

The first known implementation of the block DDA seems to be: https://github.com/nmoteki/block-DDA . However, it has no documentation except for the related publication (also contains only a few sentences, block of 4 incident beams is used): Moteki N., Adachi K., Ohata S., Yoshida A., Harigaya T., Koike M., and Kondo Y. Anthropogenic iron oxide aerosols enhance atmospheric heating, Nat. Commun. 8, 15329 (2017).

There is also a library of various block-iterative methods by the same author (with documentation) - https://github.com/nmoteki/block-Krylov-linear-solvers