 They distributed discrete dipole approximation open source code DDSCAT.There are now several DDA implementations.There are extensions to periodic targets  and particles placed on or near a plane substrate.