T-matrix and related computer codes

This is Arturo Quirantes' webpage in computer codes.  Here you will find a compilation of the main programs I've used on my light scattering research.  I´ve decided to make them available to the scientific community.  You can freely use them for non-profit purpuses, acknowledging original source and author.

All programs are written in Fortran language, and have been tested on Windows (sometimes also Linux) platforms.
My codes are not static, and improvements are made from time to time.  Check the Updates section -at the bottom of this page- to see if new versions have been made.  And don´t forget to take a look at the Graphics, too.
All codes are signed with my PGP Key (ID 0x4E2031EC)
Feel free to send me any comments, suggestions or additions.

Fax: +34-958-243214
e-mail: aquiran at ugr dot es
Snail Mail:   Departamento de Física Aplicada, Facultad de Ciencias
                     Campus Universitario Fuentenueva
                      18071 Granada (Spain)

Main computer programs

HOMER HOMER  (Fortran code).
HOMER calculates cross-efficiencies (extinction, scattering, absorption) for homogeneous spheres under the Mie theory. It´s adapted for a whole size range (not just one single size parameter), and can even be used for magnetic particles.  No more.  I could also add polarization or phase function capabilities, but I decided to leave it deliberately simple.  After all, simplicity is beauty, and HOMER is  ... D' oh!

BART BART  (Fortran code).
Not so complex as his sister, BART is based on the Aden-Kerker theory to calculate light-scattering properties for coated spherical particles.  Polydispersity is included for either core, coating or entire particle (your pick), but it can also be used for monodisperse calculations.  It´s an old code, and I did not try hard to optimize it.  You now, BART is an underachiver ... and proud of it.

MARGE MARGE  (Fortran code).
MARGE uses T-matrix methods plus analytical orientation averaging to yield light-scattering data for a collection of randomly oriented, axially-symmetric nonspherical, homogeneous particles.  It´s the basic code LISA came from.  It´s default-set to spheroids, but any other axisymmetrical particle shape will do.  Battle-hardened, efficient, all-terrain, reliable ... reminds me of a Canyonero.

LISA LISA  (Fortran code).
An extension of MARGE, this program calculates light-scattering parameters (Cross sections, Müller matrix elements) for a collection of randomly-oriented, axially-symmetric nonspherical, coated particles using the T-matrix method.  Remarks and comments are included in the code.  A remarkable offspring, don´t you think?
NEW: Get your JQSRT paper describing the code here

graphic data ...

 Here´s some graphics I´ve done from my computer codes.  You might want to use them to compare to your own data; plus, they look cool!

1) Scatering matriz elements for coated spheroids.  In all cases q is the core/particle ratio, kr is the equivalent-volume outer size parameter, the refractive indices are 2.32+i0.36 (core) and 1.2 (coating), and eps is the axial ratio (<1 for prolate spheroids, >1 for oblate, =1 for spheres).  3-D graphics for kr=8 have been published in Arturo Quirantes: "Light scattering properties of spheroidal coated particles in random orientation" J. Quant. Spectros. Radiat. Transfer 63, 263-275 (1999) (See my Research file page for the full paper in pdf format).

All figures are jpg.  Please note that their sizes range from 300 to 700 kB.





















... and some useful subroutines

MOE MOE  (Fortran code).
You need a subroutine to multiply and invert matrices?  MOE is your choice.  You can do B * (A^-1), or (B^-1) * A, whatever you need. Pity it doesn´t come with a cold Duff... oh yeah!

WILLIW WILLIE  (Fortran code.
This subroutine does the same job as MOE, but the input and output matrices are specifically declared as real: AR+iAI, BR+iBI.  Sipping Scotch while running it is optional.  Ach!

NED NED  (Fortran code).
If you need to calculate Clebsch-Gordan coefficients, this is what you´re looking for. Just use NED in your main program, and everything will be pretty okilly-dokilly

APU APU  (Fortran code).
For a single Clebsch-Gordan coefficiente, NED will do.  But if you want to do calculations for a set of am values, APU might do better.  It works fine, fast, 24/7.  Just like a Kwik-E-Mart

BURNS BURNS  (Fortran code).
This subroutine gives abscissas and weights for a Gauss quadrature.  Yes, I copied it from the Barber-Hill book.  So what?  You don´t want to mess with me, do you?

Back to Arturo Quirantes' research file