Electromagnetic Scattering by Particles and Surfaces
TMatrix Codes for Computing Electromagnetic Scattering by Nonspherical and Aggregated Particles
This webpage is dedicated to the creator of the Tmatrix method Peter Waterman. It provides free public access to Tmatrix codes for the computation of electromagnetic scattering by homogeneous, rotationally symmetric nonspherical particles in fixed and random orientations, a superposition Tmatrix code for randomly oriented twosphere clusters with touching or separated components, and superposition Tmatrix codes for multisphere clusters in fixed and random orientations. All codes are written in Fortran77. Each code is extensively documented and provides all necessary references to relevant publications.
The doubleprecision and extendedprecision versions of the regular Tmatrix codes are essentially identical. The extendedprecision versions are a factor of 58 slower than their doubleprecision equivalents, but allow computations for larger (a factor of 23) particles. The extendedprecision codes have a more detailed documentation of all the subroutines used.
The regular Tmatrix codes are applicable to rotationally symmetric particles with equivalentsphere size parameters exceeding 100. At present, the Tmatrix method is the fastest exact technique for the computation of nonspherical scattering based on a direct solution of Maxwell's equations. The Tmatrix codes are orders of magnitude faster than those based on the DDA, VIEF, and FDTD techniques.
The regular Tmatrix codes for randomly oriented particles are based on the analytical orientation averaging procedure described in the paper M. I. Mishchenko, J. Opt. Soc. Am. A 8, 871882 (1991). This efficient procedure makes the codes 1 to 2 orders of magnitude faster than Tmatrix codes based on the standard numerical averaging approach. The superposition bisphere and multisphere Tmatrix codes are based on similar analytical approaches and are described in the papers M. I. Mishchenko and D. W. Mackowski, Opt. Lett., vol. 19, 16041606 (1994) and D. W. Mackowski and M. I. Mishchenko, J. Opt. Soc. Amer. A., vol. 13, 22662278 (1996). In application to bispheres, the multisphere Tmatrix code is slower than the bisphere code. However, it can be applied to clusters with a number of components larger than 2.
A general review of the Waterman's Tmatrix method can be found in the paper M. I. Mishchenko, L. D. Travis, and D. W. Mackowski, Tmatrix computations of light scattering by nonspherical particles: A review, J. Quant. Spectrosc. Radiat. Transfer, 55, 535575 (1996).
A detailed user guide to the regular randomorientation Tmatrix codes was also published as Capabilities and limitations of a current FORTRAN implementation of the Tmatrix method for randomly oriented, rotationally symmetric scatterers, [J. Quant. Spectrosc. Radiat. Transfer, 60, 309324 (1998)] .
A user guide to the Tmatrix codes for nonspherical particles in a fixed orientation was published as Calculation of the amplitude matrix for a nonspherical particle in a fixed orientation [Appl. Opt., 39, 10261031 (2000)].
A comprehensive account of light scattering, including a detailed description of the Tmatrix codes, can be found in the book Scattering, Absorption, and Emission of Light by Small Particles, Cambridge University Press, Cambridge (2002).
The users of the codes are encouraged to visit this page on a regular basis for information on latests developments, warnings, and/or errors found.
We would highly appreciate informing us of any problems and errors encountered with these codes. Please email your questions and comments to michael.i.mishchenko@nasa.gov.
To retrieve a code, click on the code name and use the "Save As..." option from the "File" menu.
New LAPACKbased Tmatrix codesThese codes are based on the LAPACK version of the LUfactorization procedure, contain no proprietary components, and are equivalent to the old NAGbased codes in terms of efficiency and performance. We thank Cory Davis (University of Edinburgh) for pointing out the possibility of replacing the proprietary NAG matrix inversion routine by the publicdomain LAPACK equivalent. The extendedprecision codes require a FORTRAN compiler supporting REAL*16 and COMPLEX*32 variables, e.g., Intel Fortran Compiler version 12.1.2 for Linux or Visual Fortran Intel(R) 64 Compiler XE version 13.0.1 for WINDOWS7(x64).
 Extendedprecision Tmatrix code for randomly oriented nonspherical particles: tmq.lp.f, lpq.f, and tmq.par.f
 Extendedprecision Tmatrix code for nonspherical particles in a fixed orientation: amplq.lp.f, lpq.f, and amplq.par.f
 Doubleprecision Tmatrix code for randomly oriented nonspherical particles: tmd.lp.f, lpd.f, and tmd.par.f
 Double precision Tmatrix code for nonspherical particles in a fixed orientation: ampld.lp.f, lpd.f, and ampld.par.f
 Extendedprecision Tmatrix code for randomly oriented nonspherical particles: tmq.new.f and tmq.par.f
 Extendedprecision Tmatrix code for nonspherical particles in a fixed orientation: amplq.new.f and amplq.par.f
 Doubleprecision Tmatrix code for randomly oriented nonspherical particles: tmd.new.f and tmd.par.f
 Doubleprecision Tmatrix code for nonspherical particles in a fixed orientation: ampld.new.f and ampld.par.f
 Doubleprecision superposition Tmatrix code for randomly oriented twosphere clusters with externally touching or separated components: bisphere.f
 Doubleprecision superposition codes for externally aggregated multisphere clusters in fixed and random orientations
 New parallelized doubleprecision Tmatrix Fortran code for multisphere clusters with separated, externally touching, and/or nested components. Download the PDF of the corresponding JQSRT papers serving as user guides.
Codes for the computation of the coefficients for the generalized Chebyshev shape by interpolating the values given in Table 1 of Chuang and Beard (1990), modified_double_precision_drop.f, modified_extended_precision_drop.f, developed by Dr. Hidde Leijnse
Contact
Please address all inquires about this research to Michael Mishchenko.
Scattering Home
Books 
Publications OnLine

TMatrix Database
Electromagnetics Community Directory
Codes: TMatrix 
Bidirectional Reflectance 
LorenzMie
Related Codes and Databases