Description
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
max=90
Jmax=Jmax-1
gamma:
max=45
Jmax=Jmax-3
equiv=false
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.