Optimize orientation averaging for symmetric particles #278
Labels
accuracy
Improves simulation accuracy
comp-Logic
Related to internal code logic
comp-UI
Related to user interface (command line, input files)
performance
Simulation speed, memory consumption
pri-Medium
Worth assigning to a milestone
Milestone
Is your feature request related to a problem? Please describe.
Automatic orientation averaging in ADDA can be very inefficient, when applied to symmetric shapes. In short, ADDA places the particle in many equivalent orientations, wasting computations and leading to poor accuracy. That has been noted long ago, see e.g. this case, and there are some comments about it in
avg_params.dat
, but only for the case of axisymmetric particles.Describe the solution you'd like
The more automatic - the better for the users. But the simplest solution is to provide optimal
avg_params.dat
(or comments inside this file) for various point group symmetries. These files will have a reduced angular ranges (mainly beta and gamma). It is important to note (for users) that the optimal (the largest) angular reduction will be based on reflection symmetries, and, thus, cause some elements of the Mueller matrix (that must be zero after averaging, like S14) to be non-zero. In other words, such elements must be manually discarded afterwards.For example, a solution for the cube is to use
which is approximately 16 times reduction in simulation time (not clear if can be made better, the total order of the cubical symmetry group with reflections is 48).
Alternative (or supplementary) solutions may be related to changing the averaging scheme inside ADDA, so it would be more robust with respect to particle symmetries. For instance, the averaging over gamma can be changed to simple trapezoid rule using some prime number of points.
The text was updated successfully, but these errors were encountered: