Yu-lin Xu's Fortran codes for multi-particle light-scattering calculations

    Scattering of electromagnetic radiation by wavelength-sized particles is a common subject for nearly all scientific disciplines. Light-scattering theories are of essential importance to numerous practical applications in a wide range of scientific and technical fields. One of the present frontier problems in this interdisciplinary area of research is concerned with rigorous solution to the scattering by an ensemble of particles. 

   This web site provides source codes for calculation of radiative scattering by aggregated particles in both fixed and random orientations:

 ·  fixed-orientation codes for homogeneous spheres :  

                         gmm01f.f       gmm01s.f        (last updated  5/2003)

 ·  fixed-orientation codes for core-mantle and/or homogeneous spheres:

                         gmm02f.f       gmm02s.f        (last updated  5/2003)

 ·  fixed-orientation codes for ensembles of variously shaped particles:

                         gmm03f.f       gmm03s.f      gmm03fq.f      gmm03sq.f

 ·  random-orientation codes for homogeneous spheres;

                         gmm01TrA.f

 ·  random-orientation codes for core-mantle and/or homogeneous spheres:

                         gmm02TrA.f

 ·  random-orientation codes for ensembles of variously shaped particles:

                         gmm03Trd.f     gmm03Trq.f

 

(1)   gmm01f

Fortran code gmm01f.f  calculates electromagnetic scattering by an aggregate of homogeneous spheres in a single orientation or at an average over individual orientations. This code calculates both scattered properties and internal field distributions. It is written in double precision arithmetic. The largest size parameter of an individual sphere can be way beyond 200. There is no restriction to the overall aggregate size.

            Files provided include

§         gmm01f.f  (Fortran source codes)

§         description.pdf  (a large-size file in the pdf format for a brief description of the scattering formulation used in the code)

§         description.pdf.tar.gz  (a compressed tar file for description.pdf)

§         description.ps (a large-size file in the postscript format for a brief description of the scattering formulation used in the code)

§         description.ps.tar.gz  (a compressed tar file for description.ps)

§         Practical calculation examples, including input and output files as well as laboratory scattering measurements for comparison between theory and experiment (see description.pdf or description.ps for details)

Example 1

Example 2

Example 3

Example 4

Example 5

Example 6

Example 7

Example 8

Example 9_1

Example 9_2

§         Examples 10-15 below are for the calculation of internal  field distributions (see description.pdf or description.ps for details)

Example 10

Example 11

Example 12

Example 13

Example 14

Example 15

 

(2)   gmm01s.f 

Fortran code gmm01s.f  is the same as gmm01f  in all aspects including input and output file formats as well as usage. The only difference is that this gmm01s code is not computer-memory demanding and can thus calculate scattering by aggregates of a very large number of component particles that would require an excessive computer memory by the gmm01f code. As a consequence, it is a few times slower than  the gmm01f.f code. This gmm01s code is suitable especially for running on small computers and for calculating large aggregates that code gmm01f cannot handle.

 

(3)   gmm02f.f 

Fortran code gmm02f.f calculates radiative scattering by aggregated homogeneous and/or core-mantle spheres. The usage of this code is exactly the same as codes gmm01f and gmm01s except that the input configuration file needs to include data for the core of a sphere.

 

(4)   gmm02s.f  

Fortran code gmm02s  is the same as gmm02f  in all aspects including input and output file formats as well as usage. Its only difference from code gmm02f is that it is not demanding on computer-memory and thus able to calculate aggregates consisting of a very large number of particles. As a consequence, it is slower than code gmm02f.

 

(5)   gmm03f.f, gmm03fq.f, gmm03s.f, gmm03sq.f

These codes calculate scattering from ensembles of variously shaped particles in a fixed orientation.

   

(6)   gmm01TrA.f 

Fortran code  gmm01TrA.f  calculates the scattering by a randomly oriented aggregate of homogeneous spheres at an analytical averaging over all possible particle-orientations.

 

(7)   gmm02TrA.f

Fortran code  gmm02TrA.f  is for calculation of the scattering by a randomly oriented aggregate of an arbitrary mixture of core-mantle and/or homogeneous spheres at an analytical average over all possible particle-orientations.

 

(8)   gmm03Trd.f, gmm03Trq.f  

These two Fortran codes calculate random-orientation averaged scattering by ensembles of variously shaped  particles.