Dear ADDA users,
We have uncovered several bugs in calculation of Sommerfeld integrals, which is relevant for the surface mode (particles 
near a substrate). They are related to standalone somnec.c from the independent package NEC2C that we used for these 
calculations. While this routine was considered reliable, it happened to be not suitable for all possible input 
parameters, especially with respect to substrate refractive index. All the details are given in 
https://github.com/adda-team/adda/issues/326. Most of the several uncovered issues lead only to minor errors (around 
1%), but we have observed 10% and larger errors for very oblate particles lying on plasmonic (metallic) substrates. So 
all previous ADDA calculations for such configurations must be reconsidered.
To fix these issues, we had to modify the somnec.c itself. The main round of the fixes is complete and tested, it is 
already present in the master branch of ADDA. It should work for any passive substrate and in wide range of particle 
sizes with relative accuracies of Sommerfeld-integral calculation on the order of 0.0001 (much smaller than the expected 
accuracy of computed scattering quantities). So it is highly recommended to use this version for simulations in surface 
mode instead of the latest release. Moreover, we would appreciate any comparisons with other simulation methods, 
especially for metallic substrates, similarly as was done for dielectric substrates in 
https://github.com/adda-team/adda/wiki/ComparisonOtherCodes#particles-near-surface . If you perform such a comparison, 
please share the results with me or at 
adda-d...@googlegroups.com .
Since we already had to understand the inner algorithms in somnec.c, we further plan to polish these routines and make 
it fully conforming with the ADDA style. Hopefully, we can tune it to make even better accuracies possible (say, 1e-10), 
although that is not really needed in practice. And maybe also accelerate the computations somewhat when the default 
accuracy is desired. But these should not affect the ADDA results in any visible way. And we will keep this routine 
standalone, so it can be easily used in any other code. If you want to play with it, we also provide the separate 
testing program (somnec_test.c), which compares different ways to calculate the Sommerfeld integrals, that are 
implemented in somnec.c, both in terms of results and timing.
Best regards,
Maxim Yurkin.