## Electromagnetic Scattering by Particles and Surfaces

*T*-Matrix Codes for Computing Electromagnetic Scattering by Nonspherical and Aggregated Particles

This webpage is dedicated to the creator of the *T*-matrix method, **Peter Waterman**. It provides free public access to
*T*-matrix codes for the computation of electromagnetic
scattering by homogeneous, rotationally symmetric nonspherical particles in
fixed and random orientations,
a superposition *T*-matrix code for
randomly oriented two-sphere clusters with touching or separated
components, and superposition *T*-matrix codes for multi-sphere
clusters in fixed and random orientations. All codes are written in Fortran-77.
Each code is extensively documented and provides all necessary references
to relevant publications.

The double-precision and extended-precision versions of the
regular *T*-matrix codes
are essentially identical. The extended-precision versions
are a factor of 5-8 slower than their double-precision equivalents, but
allow computations for larger (a factor of 2-3) particles.
The extended-precision
codes have a more detailed documentation of all the subroutines used.

The regular *T*-matrix codes are applicable to
rotationally symmetric particles with
equivalent-sphere size parameters exceeding 100. At present, the
*T*-matrix method is the fastest exact technique for the computation of
nonspherical scattering based on a direct solution of Maxwell's equations.
The *T*-matrix codes are orders of magnitude faster than those based on the
DDA, VIEF, and FDTD techniques.

The regular *T*-matrix 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, 871-882 (1991). This efficient procedure
makes the codes 1 to 2 orders of magnitude faster than *T*-matrix codes
based on the standard numerical averaging approach. The superposition
bisphere and multi-sphere *T*-matrix codes are based on similar analytical approaches and are
described in the papers M. I. Mishchenko and D. W. Mackowski,
Opt. Lett., vol. 19, 1604-1606 (1994) and D. W. Mackowski and M. I. Mishchenko,
J. Opt. Soc. Amer. A., vol. 13, 2266-2278 (1996). In application to bispheres, the multi-sphere
*T*-matrix 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 *T*-matrix method can be found in the paper
M. I. Mishchenko, L. D. Travis, and D. W. Mackowski,
T-matrix computations of light scattering by nonspherical particles: A review,
J. Quant. Spectrosc. Radiat. Transfer, **55**, 535-575 (1996).

A detailed **user guide** to the regular random-orientation *T*-matrix codes
was also published as
Capabilities and limitations of a current FORTRAN implementation of the T-matrix method for randomly oriented, rotationally symmetric scatterers,
[J. Quant. Spectrosc. Radiat. Transfer, **60**, 309-324 (1998)] .

A **user guide ** to the *T*-matrix 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**, 1026-1031 (2000)].

A comprehensive account of light scattering, including a detailed description of
the *T*-matrix 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 latest developments, warnings, and/or errors found.

To retrieve a code, right-click on the code name and use the "Save As..." option from the menu.

#### New LAPACK-based *T*-matrix codes

These codes are based on the LAPACK version of the LU-factorization procedure, contain no proprietary components, and are equivalent to the old NAG-based 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 public-domain LAPACK equivalent. The extended-precision 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 WINDOWS-7(x64).

**Extended-precision***T*-matrix code for**randomly**oriented nonspherical particles: tmq.lp.f, lpq.f, and tmq.par.f

**Extended-precision***T*-matrix code for nonspherical particles in a**fixed**orientation: amplq.lp.f, lpq.f, and amplq.par.f

**Double-precision***T*-matrix code for**randomly**oriented nonspherical particles: tmd.lp.f, lpd.f, and tmd.par.f

**Double precision***T*-matrix code for nonspherical particles in a**fixed**orientation: ampld.lp.f, lpd.f, and ampld.par.f

#### Old Gauss-elimination- and NAG-based *T*-matrix codes

**Extended-precision***T*-matrix code for**randomly**oriented nonspherical particles: tmq.new.f and tmq.par.f

**Extended-precision***T*-matrix code for nonspherical particles in a**fixed**orientation: amplq.new.f and amplq.par.f

**Double-precision***T*-matrix code for**randomly**oriented nonspherical particles: tmd.new.f and tmd.par.f

**Double-precision***T*-matrix code for nonspherical particles in a**fixed**orientation: ampld.new.f and ampld.par.f

#### Superposition *T*-matrix codes

- Double-precision superposition
*T*-matrix code for randomly oriented two-sphere clusters with externally touching or separated components: bisphere.f

- New parallelized double-precision
*T*-matrix Fortran code for multi-sphere clusters with separated, externally touching, and/or nested components. Download the PDF of the corresponding JQSRT papers serving as user guides.

**Double-precision Lorenz-Mie scattering code** for polydisperse spherical particles:
spher.f

**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

PDF documents linked on these scattering pages may be viewed using Adobe's free Acrobat Reader.

**Michael Mishchenko**

Publications On-Line |
Books |
*T*-Matrix Database

Codes: *T*-Matrix |
Bidirectional Reflectance |
Lorenz-Mie