Code organisation

organisation of the code
organisation of the code

Main program termsProgram

termsProgram is the main module, with subroutines listed below; it reads the keywords and their corresponding values in the input file and then calls different subroutines of multiscat module for the calculation of requested outputs.

multiscat module

This module consists of a mix of high-level, core, low-level and supplementary routines for solving a multiple scattering problem using the T-matrix formalism. We list below the subroutines of the multiscat module with a brief explanation. A list of common arguments and their brief description is at the end of this section. The other arguments are explained after each subroutine.

List of common arguments

miet module

This module contains routines for calculating one-body T-matrices (currently limited to spherical scatterers, using Mie theory).

swav module

This module contains routines for calculating and transforming scalar (SSWs) and vector spherical waves (VSWFs). It depends on Amos (toms644.f) to calculate spherical Bessel and Hankel functions using recurrence. In order to limit redundancy, parameter definitions are renewed only where they are changed.

sphmsv module

This module contains routines for calculating Stokes incident vector, Stokes phase matrix and scattering matrix for an input T-matrix. The formulae are based on Mishchenko.

linalg module

This module contains wrappers to drive LAPACK’s square-matrix inversion routines and linear solvers.

eps module

This module contains wavelength-dependent dielectric functions epsXX(lambda) for various materials including Au, Ag, Al, Cr, Pd, Pt, Si, and Water).

HDFfive module

This module contains subroutines for reading and writing data in HDF5 format.