This page's content is no longer actively maintained, but the material has been kept on-line for historical purposes.
The page may contain broken links or outdated information, and parts may not function in current web browsers.

Electromagnetic Scattering by Particles and Surfaces

Fortran Codes for the Computation of (Polarized) Bidirectional Reflectance of Flat Particulate Layers and Rough Surfaces

Please note that Dr. Michael I. Mishchenko passed away in July 2020. We do not expect that the information presented on these Electromagnetic Scattering research pages will be updated with new data.

This webpage provides access to three collections of Fortran codes.

Sample BRF plot

The first one can be used to compute the scalar bidirectional reflectance of a semi-infinite homogeneous slab composed of arbitrarily shaped, randomly oriented particles based on a rigorous numerical solution of the radiative transfer equation.

The second one can be used to compute the polarized bidirectional reflectance of a semi-infinite homogeneous slab composed of arbitrarily shaped, randomly oriented particles based on a rigorous numerical solution of the vector radiative transfer equation.

The third one can be used to compute the Stokes reflection matrix of a rough interface separating two homogeneous half-spaces with different refractive indices (e.g., a rough ocean surface).

Particulate Semi-Infinite Layers: Scalar Case

The code brf.f solves the Ambartsumian's nonlinear integral equation for the reflection function using a simple iterative method. Since this technique bypasses the computation of the internal field, it is by far the fastest and most accurate numerical approach available.

The codes are ideally suitable to computing the BRF for flat snow, soil, and powder surfaces and optically thick clouds and may find applications in geophysics, physics, biophysics, and industrial research.

A detailed user manual to the codes is provided by M. I. Mishchenko, J. M. Dlugach, E. G. Yanovitskij, and N. T. Zakharova, 1999: Bidirectional reflectance of flat, optically thick particulate layers: An efficient radiative transfer solution and applications to snow and soil surfaces, J. Quant. Spectrosc. Radiat. Transfer, 63, 409-432, doi:10.1016/S0022-4073(99)00028-X.

The users of the code are encouraged to visit this page on a regular basis for information on latest developments, warnings, and/or errors found. We would highly appreciate informing us of any problems and errors encountered with these codes.

Fortran codes

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

  • refl.f - This code computes Fourier components of the reflection function
  • interp.f - This code computes the bidirectional reflection function for a given set of scattering geometries
  • spher.f - This code computes the Legendre expansion coefficients for polydisperse spherical particles using the standard Lorenz-Mie theory

The codes must be run in the following sequence: spher.f -> refl.f -> interp.f.

Note that the Legendre expansion coefficients for polydisperse, randomly oriented nonspherical particles and sphere aggregates can be computed using T-matrix codes. The expansion coefficients for the standard and double-peaked Henyey-Greenstein phase functions are computed using Eqs. (15) and (19) of the manual. Below we also provide the Legendre expansion coefficients for two nonspherical ice particle models described in the manual.

Benchmark Results

The following output files were computed by the codes in their current settings and may provide a useful test of the performance of the codes on different computers:

The file refl.write is not given here because of its large size.

Legendre coefficients for two ice particle models

Particulate Semi-Infinite Layers: Full Vector Case

The Fortran program pbrf.f solves the vector Ambartsumian's nonlinear integral equation for the Stokes reflection matrix using a simple iterative method. Since this technique bypasses the computation of the internal field, it is by far the fastest and most accurate numerical approach available.

A detailed user manual to the code is provided by Mishchenko, M.I., J.M. Dlugach, J. Chowdhary, and N.T. Zakharova, 2015: Polarized bidirectional reflectance of optically thick sparse particulate layers: An efficient numerically exact radiative-transfer solution. J. Quant. Spectrosc. Radiat. Transfer, 156, 97-108, doi:10.1016/j.jqsrt.2015.02.003.

The users of the program are encouraged to visit this page on a regular basis for information on latests developments, warnings, and/or errors found. We would highly appreciate informing us of any problems and errors encountered with this program.

Fortran codes

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

  • pbrf.f - This code computes Fourier components of the reflection matrix
  • pbrf.par.f - This code must be stored in the same directory as pbrf.f
  • spher.pbrf.f - This code computes the expansion of the Stokes scattering matrix in generalized spherical functions for polydisperse spherical particles using the standard Lorenz-Mie theory

The codes must be run in the following sequence: spher.f -> pbrf.f

Note that the expansion coefficients for polydisperse, randomly oriented nonspherical particles and sphere aggregates can be computed using T-matrix codes.

Benchmark results

The following output files were computed by the codes in their current settings and may provide a useful test of the performance of the codes on different computers:

The file pbrf.write is not given here because of its large size.

Expansion of Tabulated Scattering Matrices in Generalized Spherical Functions

A detailed user manual to the computer program is provided by Mishchenko, M.I., I.V. Geogdzhayev, and P. Yang, 2016: Expansion of tabulated scattering matrices in generalized spherical functions. J. Quant. Spectrosc. Radiat. Transfer, 183, 78-84, doi:10.1016/j.jqsrt.2016.05.015.

Fortran codes

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

  • spher_expan.f - This code computes the generalized-function expansion of a tabulated scattering matrix.
  • params.h - This code must be stored in the same directory as spher_expan.f

Re-Expansion of a Scattering Matrix in Generalized Spherical Functions with Packing Density Correction

A detailed user manual to the computer program is provided by Ito, G., M.I. Mishchenko, and T.D. Glotch, 2018: Radiative-transfer modeling of spectra of planetary regoliths using cluster- based dense packing modifications. J. Geophys. Res. Planets, 123, no. 5, 1203-1220, doi:10.1029/2018JE005532.

Fortran code

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

  • PackedMedia.f This code re-computes the generalized-function expansion of a "low-density" scattering matrix by incorporating dense-packing effects based on the static structure factor.

Rough Surfaces

The code ocean.shadow.f calculates the Stokes reflection matrix for illumination from above for a statistically rough surface separating two half-spaces with different refractive indices. The effect of shadowing is included.

The code ocean.phase.f calculates Fourier components of the Stokes reflection matrix for illumination from above for a statistically rough surface separating two half-spaces with different refractive indices. The effect of shadowing is included.

A detailed user manual to the codes is provided by M. I. Mishchenko and L. D. Travis, 1997: Satellite retrieval of aerosol properties over the ocean using polarization as well as intensity of reflected sunlight, J. Geophys. Res., 102, 16989-17013, doi:10.1029/96JD02425.

The users of the codes are encouraged to visit this page on a regular basis for information on latests developments, warnings, and/or errors found. We would highly appreciate informing us of any problems and errors encountered with these codes.

Fortran codes

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

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