kezhou2 / a-dda

Automatically exported from code.google.com/p/a-dda
0 stars 0 forks source link

Scatterer near a surface #101

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
This is a fundamental problem, which can't be currently rigorously solved by 
ADDA, although a number of workarounds exist:
http://code.google.com/p/a-dda/wiki/FAQ#Can_I_use_ADDA_to_calculate_scattering_b
y_a_particle_near_the_in

The rigorous solution consists of discretizing only the scatterer itself and 
replacing free-space Green's function by the one in the presence of There also 
exist a program DDSURF, capable of doing such simulations, but it is not 
publicly available. However, their experience (published in several papers) is 
definitely worth investigating. Chaumet et al. probably also have codes to do 
it.

There are two problems:
1) Calculate Green's tensor in the presence of the surface. This is just extra 
computations. Moreover, a few ideas to do it effectively exist:
Panasyuk et al. 2009 - http://dx.doi.org/10.1088/1751-8113/42/27/275203
Mackowski 2010 - http://dx.doi.org/10.1016/j.jqsrt.2009.11.016

2) Green's tensor loses its translation invariance along z-axis (perpendicular 
to the plane), so FFT method to compute matrix vector product do not work any 
more. 
 * Complexity of computations increases from O(_n,,x,,n,,y,,n,,z,,_) to O(_n,,x,,n,,y,,n,,z,,_^2^), if 2D FFT is used. However, Mackowski mentioned that it is possible to separate the Green's tensor into two parts, each of which has certain FFT-capable symmetry along the _z_-axis.
 * Structure of the code has to be significantly reworked. 

Original issue reported on code.google.com by yurkin on 22 Jun 2010 at 11:44

GoogleCodeExporter commented 9 years ago
There are also codes available to compute Green's tensor near the surface by 
Gay-Balmaz et al. They also include a filtered version.
http://www.scattport.org/index.php/programs-menu/volume-integral-menu/299-libg3d

Original comment by yurkin on 22 Jun 2010 at 11:53

GoogleCodeExporter commented 9 years ago
For me, this is a major missing capability.

Original comment by qwer1...@gmail.com on 31 Jan 2011 at 6:47

GoogleCodeExporter commented 9 years ago
I have received funding for development in this direction, so this issue moves 
to the top of priority list.

Original comment by yurkin on 2 Oct 2012 at 5:56

GoogleCodeExporter commented 9 years ago

Original comment by yurkin on 28 Mar 2013 at 2:40

GoogleCodeExporter commented 9 years ago
r1263 (v.1.3b1) contains a working FFT implementation of particle-near-surface 
functionality. This can be considered a beta version, which can be used for 
production runs with certain care and testing. It would be especially nice, if 
someone can test it against other methods (updated manual will be published 
within a couple of weeks).

Remaining things to be done prior to release 1.3:
1) Make it working in OpenCL mode.
2) Study the physical sense of computed Cext and Csca and correct formula, if 
needed. Currently Cext!=Csca even when both particle and substrate is 
non-absorbing (see also comments to r1257 and issue 133). However, scattering 
fields are expected to be already correct.

Other relevant issues will be addressed later: issue 171, issue 175, issue 176, 
issue 177, issue 178, issue 59.

Original comment by yurkin on 25 Sep 2013 at 10:29

GoogleCodeExporter commented 9 years ago
Another relevant issue is Gaussian beams in the presence of surface (issue 89).

Original comment by yurkin on 25 Sep 2013 at 11:11

GoogleCodeExporter commented 9 years ago
Another important point is issue 180, which should be fixed before release.

Also first promising comparison is available 
http://code.google.com/p/a-dda/wiki/ComparisonOtherCodes#Particles_near_surface

Original comment by yurkin on 6 Oct 2013 at 6:43

GoogleCodeExporter commented 9 years ago
Already one bug found (issue 184). It may explain Cext!=Csca discussed above.

Original comment by yurkin on 3 Dec 2013 at 4:43

GoogleCodeExporter commented 9 years ago
just commited r1295 containing first steps into a OpenCL version of the surface 
option. Currently an unrational bug preventing bufRmatrix from being uploaded 
or modified in any way and makes testing impossible. Therefore left OpenCL in 
in combination with surface disabled in param.c.
tried with AMD Radeon 7970 GHz ed. on Ubuntu 13.10 with 
amd-catalyst-13.11-beta-v9.4 (released 22.11.2013)
Testing this behavior on an Nvidia device is desired in order to find the issue 
here.

Original comment by Marcus.H...@gmail.com on 11 Dec 2013 at 6:50

GoogleCodeExporter commented 9 years ago
The problem with OpenCL implementation of surface mode seems to be solved by 
r1296.

Original comment by yurkin on 13 Dec 2013 at 4:19

GoogleCodeExporter commented 9 years ago
Definitions of scattered values were slightly changed by r1302. This only 
affects the cases where either incident or scattered direction is in the 
substrate.

Original comment by yurkin on 4 Feb 2014 at 7:59

GoogleCodeExporter commented 9 years ago
It is also interesting to implement alternative calculation of Cext for plane 
incoming wave, based on interference in the far-field (at both reflected and 
transmitted directions). See, e.g. 
http://dx.doi.org/10.1103/PhysRevE.71.056610
http://dx.doi.org/10.1364/JOSAA.30.002519

Nice to do before 1.3 release.

Original comment by yurkin on 12 Feb 2014 at 4:58

GoogleCodeExporter commented 9 years ago
r1308 fixed a bug that affected calculations of scattering into the absorbing 
substrate.

Original comment by yurkin on 16 Feb 2014 at 4:46

GoogleCodeExporter commented 9 years ago
With release 1.3b4 (see http://code.google.com/p/a-dda/wiki/Downloads ) this 
functionality is officially in beta-testing stage.

Original comment by yurkin on 20 Feb 2014 at 4:47