MSTM Version 4.0: January  2022

The code has been extended to allow for multiple plane boundaries, 2-D periodic structures, and fast solutions via a discrete Fourier transform algorithm.   The code can be downloaded here.   I will keep the old versions of MSTM on this site, but will no longer update them.      


MSTM Version 3.0: April 2013

MSTM (Multiple Sphere T Matrix) is a fortran-90 code for calculation of the electromagnetic scattering and absorption properties of a system of spherical surfaces.  The code is designed to run either on serial platforms or distributed—memory compute clusters.  

The 3.0 version of MSTM extends the formulation to arbitrary configurations of spherical surfaces.    The spheres can now be located internally or externally to each other,  subject to the constraint that a surface cannot intersect (or cut) any other surface.      

All material – including the external medium – can be optically active, i.e., characterized by L and R refractive index values.    

The MSTM code can compute both near and far—field properties of the spherical surface system.     The plot on the right, for example, shows electric field amplitude within and about a sphere with 40 eccentrically—positioned layers, each with progressively larger real refractive index, and excited by a plane wave.  

The exciting field can be a plane wave or a Gaussian—profile beam.      The code can calculate properties for a fixed orientation of the target with respect to the incident direction, or, via analytical T matrix methods, the random orientation cross sections and scattering matrix values of the target.

Version 3.0 includes many new input file options, including the ability to perform multiple runs over looped parameter values.  


The 3.0 code has been modified considerably from version 2.2.     I am going to keep the old 2.2 package available on the site, yet it will no longer be maintained.    

I have compiled and run the code on a serial windows machine using gfortran, and on a parallel compute cluster using mpich + gfortran.    So far so good.

Please be advised that the initial release of MSTM 3.0 is likely to have bugs.     There is a very wide parameter space and it is impossible for me to check all possible combinations of input and output variables.    And in this respect I need your help: please alert me to any errors, glitches, hangups, and other problems you encounter with the code, and I will try to fix them as quickly as possible.     I will post the bug fixes to MSTM 3.0 as they occur.    I much appreciate your patience.        

The version 3.0 package (codes, documentation, input files, and executables for serial windows machines) can be downloaded from here.       The manual will, hopefully, answer all of your questions regarding the use and capabilities of the code.   If it does not answer all questions, or if you have problems or detect a bug, or if you want to offer suggestions for improvements, the number to call is      

Please send bug reports, comments, questions, etc., to