User Guide for the Discrete Dipole Approximation Code DDSCAT 6.1
  DDSCAT 6.1 is a software package which applies the discrete dipole approximation (DDA) to calculate scattering and absorption of electromagnetic waves by targets with arbitrary geometries and complex refractive index. DDSCAT 6.1 allows accurate calculations of electromagnetic scattering from targets with size parameters 2 pi a_eff/lambda < 15 provided the refractive index m is not large compared to unity (|m-1| < 2). DDSCAT 6.1 includes support for MPI and FFTW. We also make available a "plain" distribution of DDSCAT 6.1 that does not include support for MPI, FFTW, or netCDF, but is much simpler to install than the full distribution.   The DDSCAT package is written in Fortran and is highly portable. The program supports calculations for a variety of target geometries (e.g., ellipsoids, regular tetrahedra, rectangular solids, finite cylinders, hexagonal prisms, etc.). Target materials may be both inhomogeneous and anisotropic. It is straightforward for the user to import arbitrary target geometries into the code, and relatively straightforward to add new target generation capability to the package. DDSCAT automatically calculates total cross sections for absorption and scattering and selected elements of the Mueller scattering intensity matrix for specified orientation of the target relative to the incident wave, and for specified scattering directions. 
Bruce T. Draine and Piotr J. Flatau