next up previous contents
Next: Calculation of Radiative Force Up: User Guide for Previous: Choice of FFT Algorithm

 

Choice of Iterative Algorithm

As discussed elsewhere (e.g., Draine 1988), the problem of electromagnetic scattering of an incident wave tex2html_wrap_inline3437 by an array of N point dipoles can be cast in the form
 
where tex2html_wrap_inline3441 is a 3N-dimensional (complex) vector of the incident electric field tex2html_wrap_inline3437 at the N lattice sites, tex2html_wrap_inline3449 is a 3N-dimensional (complex) vector of the (unknown) dipole polarizations, and tex2html_wrap_inline3453 is a tex2html_wrap_inline3455 complex matrix.

Because 3N is a large number, direct methods for solving this system of equations for the unknown vector tex2html_wrap_inline3449 are impractical, but iterative methods are useful: we begin with a guess (typically, tex2html_wrap_inline3461) for the unknown polarization vector, and then iteratively improve the estimate for tex2html_wrap_inline3449 until equation (10) is solved to some error criterion. The error tolerance may be specified as
 
where tex2html_wrap_inline3465 is the Hermitian conjugate of tex2html_wrap_inline3453 [tex2html_wrap_inline3469], and h is the error tolerance. We typically use tex2html_wrap_inline3473 in order to satisfy eq.(10) to high accuracy. The error tolerance h can be specified by the user (see Appendix A).

A major change in going from DDSCAT.4b to 5a is the implementation of several different algorithms for iterative solution of the system of complex linear equations. DDSCAT.5a has been modified to permit solution algorithms to be treated in a fairly ``modular'' fashion, facilitating the testing of different algorithms. Many algorithms were compared by Flatau (1997)gif; two of them performed well and are made available to the user in DDSCAT.5a. The choice of algorithm is made by specifying one of the options:

Both methods work well. Our experience suggests that PBCGST is often faster than PETRKP, by perhaps a factor of two. We therefore recommend it, but include the PETRKP method as an alternative.

The Parallel Iterative Methods (PIM) by Rudnei Dias da Cunha (rdd@ukc.ac.uk) and Tim Hopkins (trh@ukc.ac.uk) is a collection of Fortran 77 routines designed to solve systems of linear equations on parallel and scalar computers using a variety of iterative methods (available at http://www.mat.ufrgs.br/pim-e.html). PIM offers a number of iterative methods, including

The source code for these methods is distributed with DDSCAT but only PBCGST and PETRKP can be called directly via ddscat.par. It is possible (and was done) to add other options by changing the code in getfml.f . A helpful introduction to conjugate gradient methods is provided by the report ``Conjugate Gradient Method Without Agonizing Pain" by Jonathan R. Shewchuk, available as a postscript file: ftp://REPORTS.ADM.CS.CMU.EDU/usr0/anon/1994/CMU-CS-94-125.ps.


next up previous contents
Next: Calculation of Radiative Force Up: User Guide for Previous: Choice of FFT Algorithm

Bruce Draine
Thu Aug 10 09:34:16 EDT 2000