Light scattering calculator: coated sphere

Miroslaw Jonasz

Table of contents


This program calculates the scattering, absorption, and attenuation parameters, as well as the angular scattering patterns of a single coated sphere according to Aden-Kerker theory.

This program is intended to be used in the Windows environment. A minimum screen resolution of 1024 x 768 is expected.

Quick start

If needed, modify the calculation parameters displayed in the main form (see User Interface) and click on the "Run" button to calculate the scattering properties. The results will be displayed automatically. Results can be copied to the Windows clipboard ("Copy" button) and saved to a space-delimited text file ("Save" button).

If you have closed the output display form, you can view it again by clicking the "View" button.

User interface

Setting preferences

Preferences are a set of all user-adjustable calculation parameters. On program startup the default preferences are used. The preferences system, intended as a convenience, can also be used to document the calculations if the results file name is synchronized (by the user) with the preference file name.

The preferences are stored in a binary file (extension: "pre"). The preferences file name is displayed in the Preferences file name box. Long file names are cut to fit. Position the cursor over the cut name to display the full file name in a hint box that appears near the cursor tip.

The following choices are available in the Preferences menu:

  • Save - saves the current preference to the currectly active preferences file
  • Save As - saves the current preference to a file named by the user
  • Load - loads the preferences from a preferences file
  • Default - loads default pereferences.


Miscellaneous menu items

  • Limits - displays the limits of the calculation parameters.
  • About - displays the program info box.


Modifying program input data

Edit x button opens the coated sphere (whole) size range editor.

The Edit x caption is shown if the abs. size check box is unchecked. The whole sphere size (including the coating/shell thickness) is then expressed by the relative size parameter x (see also Definitions of the input data). In the following text, the whole sphere size is used interchangeably with the sphere size and sphere diameter. The button caption is modified to Edit diam if the abs. size check box is checked.

If the output is to be a function of the scattering angle (theta, see Setting output format) only the start parameter of the size range is displayed. If the output is requested to be a function of the particle size (see Setting output format), the remaining particle size range parameters: step, count, and end are also displayed (and need to be specified) in units implied by the status of the abs. size check box. Based on these parameters, the relative size list is generated and displayed (on the calculations' completion) in the output form as follows:

 x[0] = xstart  (1)
 x[m] = x[m - 1] + xstep  (2)

where m = 0 ... size_range_count - 1. The size range must fulfill this requirement: 0 < start <= end. See also the Range editors section.

abs. size check box toggles the absolute/relative particle size parameter definition.

If this box is checked, the particle size is expressed as the sphere diameter (in Ám). The wavelength edit box is then displayed and can be modified. Otherwise, the size is expressed as a relative size parameter, x. Checking or unchecking the abs. size check box does not affect the numerical value of the particle size as displayed in the main form. It is just taken to represent the absolute/relative particle diameter.

shell thickness / particle radius edit

This edit enables modifying the sphere coating (shell) thickness. The shell thickness is expressed as a fraction of the whole particle size.

wavelength edit

This edit is displayed only when the abs. size check box is checked. It enables editing of the wavelength of light in the medium surrounding the sphere (not in vacuum!). The relative size parameter, used internally by the program, is auto-calculated.

Core m' and m" edits

Enable setting the real (m') and imaginary parts (m") of the sphere core refractive index (defined as m' - i m") relative to the nonabsorbing medium (i.e., a medium with the imaginary part of the refractive index equal to 0) surrounding the sphere.

Shell m' and m" edits

Enable setting the real and imaginary parts of the sphere coating (shell) refractive index relative to the nonabsorbing medium surrounding the sphere.

Edit theta button opens the scattering angle (theta) range editor.

If the output is to depend on the particle size (see Setting output format), only the start parameter of the theta range is displayed in the main form and can be edited. If the output is requested to depend on the scattering angle (see Setting output format), the remaing angle range parameters: step [deg], count, and end [deg] are also displayed. The scattering angle list is generated and displayed in the output form according to the prescription used for the size range. The theta range parameters must fulfill this requirement: 0 <= start <= end <= 180 deg.


Range editors

Range editors for the particle size and scattering angle accept any inputs that are consistent with the abstract range definition. Thus, range definitions may be accepted (and displayed) in the main form that do not fulfill either the calculation parameters' limits (see Miscellaneous menu items) for the relevant variables or algorithm requirements. The data are verified for consistency with the light scattering algorithm only when the user clicks the Run button. The user is then advised about problems with the input data if any.

One of the range parameters is always calculated. You can force a parameter to be calculated (thus, not editable) by clicking on the corresponding radio button in the Calc column of the range editor form. You can preview the effects of changing a range parameter by clicking Apply to apply the change. If satisfied, click Ok to accept it. You can also click OK right away after any parameter changes.

Setting the output format

Output as a function of ...

Scattering angle-dependent format

Efficiencies and angular patterns are displayed for a single particle size if Scattering angle is selected. The angular patterns are each shown as a function of the scattering angle. The output also includes the attenuation, scattering, and absorption factors and (if the abs. size checkbox of the main form is checked) the scattering cross section of the particle (see Output for definitions of these quantities)

Size-dependent output formats

Part. size: const. shell thick. - the absolute shell thickness is fixed
Part. size: const. ratio shell thick. - the ratio of the shell thickness to the whole particle size is fixed
Part. size: const. core radius - the core radius (diameter) is fixed
Part. size: const. total var. shell - the total particle size (including the shell) is fixed, the shell thickness varies from 0 to 1; note that 1 is expressed as the relative shell thickness maximum listed in the limits form (shown on clicking the Limits menu item).

For the above formats, efficiencies and angular patterns (for a single scattering angle) are displayed for a single scattering angle as functions of the particle size.

Wavelength-dependent format

Efficiencies and angular patterns (for a single scattering angle) are displayed for a single scattering angle as functions of the wavelength when the Wavelength radio button is clicked. This output format contains more than row only when the refractive index is defined as a function of the wavelength, i.e. as a refractive index spectrum. The spectrum data can be loaded from a text file by using choices listed in the "Get refractive index spectra" group. Upon selecting the refractive index data file, the file path is displayed under the "File name:" heading of this group.

The following choices are available:

from file
Refractive index data are read from a tab-delimited text file formatted to contain the core and shell complex refractive indices (defined each as as m' - m"; see a sample of the refractive index definition file). The whole file is read in.
via form
Refractive index data are read from a text file which contain the complex refractive indices in a form of a table with columns containing the wavelength in micrometers, the core m', core m", and the shell m', core m". With this form you can specify which row of data to start reading from and whether to stop at the first empty row (or read till the end of the file. You can also specify the column delimiter(s): space, tab, or comma. While in that form, click Open file to select a file and preview its contents. Click Get data once the file reading parameters are selected according to your choice, and click OK.


Runing calculations, displaying, and saving results

Run button initiates the scattering properties calculations.

View opens the results display form.
Note that on clicking Run, the output form opens automatically once the calculations are completed. The View button is handy when you want to review a once-closed output form.

Copy copies the results to the Windows clipboard.

Save saves the results to a space-delimited text file.

If the above three buttons are disabled, no results are available.

The Messages box displays status of the calculations.



The coated sphere is assumed to be located in a plane monochromatic electromagnetic wave whose wavefront has infinite extent. In practical applications this condition requires that:

  • The light beam illuminating the particle has a plane wave front in the vicinity of the particle. Usually such a beam is "collimated" i.e. its divergence is limited. However, the wavefront in the focus of a lens is also plane. Therefore, the theory of light scattering by coated sphere applies to situations where the particle(s) is(are) illuminated by a focused beam - this can greatly increase the incident irradiance (power per unit area) and thus increase the power of light scattered by the particle.
  • The diameter of the beam is large as compared with the particle.
  • The particle is located near the beam axis to avoid edge effects.

It is important to note that the medium surrounding the sphere must not absorb light, i.e. its complex refractive index must be expressed as m' - i 0.


Definitions of the input data

The light scattering properties of a coated sphere are completely described by four parameters: the refractive indices of the sphere core and shell relative to that of the surrounding medium, as well as the whole sphere diameter and the shell thickness. Click the Limits item of the menu to view the limits of these parameters.

The refractive index is a complex number:

 m = m' - i m"  (3)

where i 2 = -1. The imaginary and real parts of the complex refractive index may also be referred to in some output forms as "ReN" and "ImN", respectively, with the refractive index as a whole referred to as "RI".

The real part of the refractive index characterizes the velocity of an electromagnetic wave in the sphere material. The imaginary part characterizes the absorption of light power by the sphere material. If the imaginary part is negative, i.e. m" > 0, then the material absorbs light. The refractive index is a function of the wavelength of the electromagnetic wave. If the absolute particle size mode is selected by clicking on the diam check box, the refractive index is expected, but not checked, to correspond to the wavelength value entered.

In this program, m' can assume walues from a range of 0 < m' < arbitray_value. The m" range is defined as 0 <= m" <= arbitrary_value (click the Limits item of the menu to view limits).

Spectral data for the complex refractive indices of the core and shell of the particle can be loaded from a text file (see Output as a function of).

The sphere size in the algorithm is represented by the relative particle size x [non-dimensional]

 x = π D / λ  (4)

where D is the sphere diameter and λ is the wavelength of light in the medium surrounding the sphere. The wavelength range is limited to a range that can be viewed by clicking the Limits item of the menu.

The program accepts the particle size as x (relative size) if the diam checkbox is not checked. Otherwise, the particle size is expected to be the absolute size (diameter) expressed in micrometers (10-6 m).

The shell thickness is expressed relative to the whole particle radius, i.e. the relative shell thickness = shell thickness [length unit] / particle radius [length unit].

The scattering angle, θ [deg], is defined as the angle between the direction of the incident wave (beam axis) and the observation direction. The angular pattern of light scattered by a sphere is axially symmerical about the direction of the incident light. Thus, theta is the only directional parameter required.



This program calculates the light scattering properties of a coated sphere following the Toon and Ackerman (1981) algorithm. A similar algorithm has been recently introduced by Kaiser and Schweiger (1993). These algorithms are based on the theory of light scattering by a coated sphere that was developed by Aden and Kerker (1951). In the notation borrowed from the theory of light scattering by homogeneous sphere, the nondimensional versions of these properties are defined as follows:

 AttFactor = SUMn = 1nMax( 2 n + 1) ( Re a[n] + Re b[n] )  (5)
 ScaFactor = SUMn = 1nMax( 2 n + 1) ( | a[n] | 2 + | b[n] | 2)  (6)
 AbsFactor = AttFactor - ScaFactor  (7)


 S1 = SUMn = 1nMax( 2 n + 1) ( a[n] π[n] + b[n] τ[n] )  (8)
 S2 = SUMn = 1nMax( 2 n + 1) ( a[n] τ[n] + b[n] π[n] )  (9)

where a[n] and b[n] are functions of the particle size and refractive index, and π[n] and τ[n] are functions of the scattering angle. These functions are defined, for example, by Bohren and Huffman (1983). S1 and S2 are complex functions. Thus, their (real) magnitudes |S1|2 and |S2|2 are of interest in comparing with results of an experiment and are displayed. M11, that is also displayed, is a real function of the scattering angle and is defined as follows:

 M11 = (1 / 2) ( | S2 |2 + | S1 |2 )  (10)

This latter quantity is the element [1][1] of the Mueller matrix, which completely describes the amplitude and polarization of light scattered by a particle. See, for example, Bohren and Huffman (1983), for an in-depth discussion of Mueller matrices and polarization effects.

Note that element M12 of the scattering matrix can also be calculated (by the user) from the output provided by the program with the help of the following formula:

 M12 = (1 / 2) ( | S2 |2 - | S1 |2 )  (10)

Angular patterns S1, S2, and M11 represent scattering of light polarized perpendicular to the scattering plane, parallel to the scattering plane, and unpolarized respectively. The scattering plane contains the incident beam and observation directions.

Particle size is always displayed in the output form as the relative size x [non-dim] of the whole particle.


The following efficiencies are calculated and displayed in the output form:

 Qatt = ( 2 / x 2) AttFactor  (11)
 Qsca = ( 2 / x 2) ScaFactor  (12)
 Qabs = Qatt - Qsca  (13)

Multiply these efficiencies by the geometric cross section of the sphere (π D 2/ 4), where D is the whole sphere diameter, in order to obtain the attenuation, scattering, and absorption cross sections, respectively.

Note that one can also define efficiencies for the scattering-angle-dependent quantities:

 QS1 = [ 1 / ( π x 2) ] | S1 | 2  (14)
 QS2 = [ 1 / ( π x 2 ) ] | S2 | 2  (15)
 QM11 = [ 1 / ( π x 2) ] | M11 | 2  (16)




The algorithms of the coated sphere theory involve, as it is also the case with the homogeneous sphere theory, recurrence-based calculations of functions related to Bessel functions. Such calculations are known to be unstable if traversed upwards, i.e. in the direction of the increasing summation index of the relevant series. With an increase in the numerical precision from single floating point precision to double and long double precision the onset of such instabilities in the upward recurrence algorithms is merely postponed for particles typical of many natural and industrial processes.

One way to counteract such instabilities is to use downward recurrence for the Bessel-derived functions of a complex argument or to use the Lentz (1976) algorithm that permits to calculate each of the values of the relevant functions independently. Downward recurrence in double precision is adopted in this program. The "initial" values of the functions at the maximum value of the summation index, n, are calculated by using the Lentz (1976) method, with the iteration precision set to 10-12.

The user is nevertheless advised to exert caution when using this program in the extremities of the nominally allowed input paramaters' ranges. As a guidance the following rules should be observed:

  • ScaFactor must equal AttFactor if m" = 0 for both the core and shell
  • ScaFactor must be less than AttFactor if m" > 0 for either or both the core and shell.


Comparison with other published results

Results of this program have been tested against the known behavior of the relevant functions and also compared with published results. Excellent correspondence has been obtained between this program results and those reported by Kaiser and Schweiger (1993), Bohren and Huffman (1983), and Fenn and Oser (1965). This correspondence attests to the capability of the downward recursion combined with the Lentz (1976) method for obtaining the initial values.

Homogeneous sphere limits

In addition, the results were checked against the results of the homogeneous sphere calculator, also available from MJC Optical Technology, for three cases:

  • vanishing shell
  • vanishing core
  • vanishing refractive index difference

The vanishing shell case was tested by using a composite water-carbon sphere with the carbon shell thickness decreasing to 0. The whole particle x = 70 was assumed, with the water refractive index N = 1.33 - i0, and the carbon refractive index N = 2 - i1. As expected, the efficiencies of the composite particle tend to the the limiting values for the homogeneous water sphere. These limiting efficiencies, obtained with both the homogeneous and coated sphere MJC Optical Technology calculators, assume values of Qatt = Qsca = 2.02147 and Qabs = 0.

The vanishing core case was tested by using a composite carbon-water sphere with the carbon core diameter decreasing to 0. The whole particle size was again x = 70, with the refractive index values the same as before. The limiting values of the efficiencies for the homogeneous sphere obtained with the coated sphere calculator for the shell thickness of 0.9999999 (maximum allowed) are Qatt = 2.02147, Qsca = 2.02147, and Qabs = 8.88178e-16, i.e. essentially 0 at the numerical precision involved.

The coated sphere calculator was also tested by vanishing the refractive index difference between the core and the shell in which case, the results should and do converge to the homogeneous particle case. For example, the efficiencies of a composite particle (water core, water shell) with x = 70, and a 50%-thick shell yield Qatt = 2.02147, Qsca = 2.02147, and Qabs = 4.4e-16, i.e. essentially 0 at the numerical precision involved. With the homogeneous sphere calculator we obtain Qatt = Qsca = 2.02147, and Qabs = 0.00000.

Sample results

The following figure shows angular patterns (M11, denoted by S11 in the vertical axis label; see the Output section for a definition of M11) for a water droplet with a whole x = 70, without and with a 1%-thick coating of carbon [core N = 1.33 - i 0 (water), shell N = 2 - i 1 (carbon, see Janzen, 1979)]. These results suggest a substantial effect of a highly absorbing thin shell around a non-absorbing core on light scattering by this composite particle at most scattering angles.

{short description of image}



Single particle

In practical applications one frequently needs to calculate the total power F [W] (flux) of light attenuated, scattered, or absorbed by a sphere. This can be accomplished with the use of the attenuation and scattering cross sections as follows:

 Fatt = AttCrossSec Ein  (17)
 Fsca= ScaCrossSec Ein  (18)
 Fabs = AbsCrossSec Ein  (19)

where Ein[W m-2] is the irradiance [power per unit area] of the light beam. Note that in physics, a quantity with a dimension of power per unit area is traditionally refered to as the intensity.

The cross sections [m2] are defined as follows:

 xxxCrossSec = ( 2 π / k2 ) xxxFactor  (20)

where "xxx" stands for "Abs", "Att", or "Sca" and k = 2 π / λ [m-1] is the wave number.

The cross sections can also be defined by using the efficiencies as follows:

 xxxCrossSec = ( π D2 / 4 ) Qxxx  (20a)

where "xxx" stands for "Abs", "Att", or "Sca" and D is the whole particle diameter.


For M [m-3] identical particles per unit volume of the suspension, we have

 Fatt = M V AttCrossSec Ein  
   = M A z AttCrossSec Ein  
   = ( Ein A )z M AttCrossSec  
   = Fin z M AttCrossSec  (21) 

where V [m3] is the illuminated volume of the suspension, A [m2] is the cross section area of the light beam, and z[m] is the thickness of the volume V measured along the beam axis. The power transmitted through a suspension volume of thickness z is reduced by Fatt. The effect of the suspension layer interfaces (for example, water/air) is not accounted for. The product M AttnCrossSec equals the attenuation coefficient, usually denoted by c [m-1].

 c = M AttnCrossSec  (21a)

In the limit of the small changes, a reduction, dF, in the transmitted power due to attenuation by a suspension slab of thickness dz, can be expressed as follows:

 dF = -F c dz  (22)

where F is the power incident at the entrance face of the slab. Again, the effect of reflection at the slab faces is not taken into account. The solution of this equation is

 F(z) = F(0) exp[-c z]  (23)

One can calculate in a similar manner the power scattered in all directions by the volume, V, of the suspension.

If the suspension consists of particles with various diameters and refractive indices, the particle concentration M is replaced by the size-refractive index distribution of the particles and the total powers become integrals of the respective cross sections weighed by that distribution. Such integration must at present be provided off line, for example by using a spreadsheet.

Angular scattering pattern

Similarly we can calculate the intensity (power per unit solid angle; W sr-1) of light scattered by a single sphere or suspension of spheres at a specific direction (θ, φ) relative to that of the incident wave. Given the axial symmetry of light scattering by a coated sphere (about the direction of the incident light beam), the direction can be defined by using only the scattering angle, θ. Hence:

 I(θ) = AngCrossSec(θ) Ein  (24)


 AngCrossSec(θ) = ( 1 / k2 ) M11(θ)  (25)

The dimension of AngCrossSec is m2sr-1. The azimuthal angle φ is measured in a plane perpendicular to the wave direction (beam axis). The scattering pattern of a sphere is independent of the azimuthal angle. Thus, we have:

 I(θ) = AngCrossSec(θ) Ein  (26)

Given the acceptance solid angle of a detector, Ωdet [sr], the power of scattered light received by that detector can be calculated as follows:

 Fsca(θ) = Ωdet I(θ)  (27)

One may also be interested in obtaining the power scattered into an annular region between the angles of θ1 and θ2. This power equals:

 F(θ1, θ2) = ∫θ1θ202 π I(θ)  
   = ∫θ1θ202 π I(θ) sin(θ)  
   = 2 πθ1θ2 I(θ) sin(θ)  (28)

where ∫t1t2 denotes integration over t in a range of t1 to t2.



Aden A. L., Kerker M. 1951. Scattering of electromagnetic waves from two concentric spheres. J. Appl. Phys. 22: 1242-1246.

Bohren C. F., Huffman D. 1983. Absorption and scattering of light by small particles. Wiley, New York.

Fenn R. W., Oser H. 1965. Scattering properties of concentric soot-water spheres for visible and infrared light. Appl. Opt. 4: 1504-1509.

Janzen J. 1979. The refractive index of colloidal carbon. J. Colloid Interface Sci. 69: 436-447.

Kaiser T., Schweiger G. 1993. Stable algorithm for computation of Mie coefficients for scattered and transmitted fields of a coated sphere. Computers in Physics 7: 682-686.

Lentz W. J. 1976. Generating Bessel functions in Mie scattering calculations using continued fractions. Appl. Opt. 15: 668-671.

Toon O. B., Ackerman T. P. 1981. Algorithms for the calculation of scattering by stratified sphere. Appl. Opt. 20: 3657-3660.

Refractive index file sample

Wavelength dependence of the complex refractive indices of the core and shell of the coated sphere can be supplied in a tab-delimited file, formatted as in the following sample (gold shell - silica core, in air). The first (heading) line is included only for the human user, it is not used by the program. Read in such a file by using either of the two options of the Get refractive index input group of the main form. This group is shown when Wavelenth is selected in the Output as a function of ... group.

wavelength_um shell_m' shell_m" core_m' core_m"
0.203276110 1.33 1.277 1.546235242 0
0.207355230 1.30 1.304 1.541324491 0
0.211963124 1.30 1.350 1.536256597 0
0.216402142 1.30 1.387 1.531797061 0
0.221425763 1.30 1.427 1.527188304 0
0.226274502 1.31 1.460 1.523127647 0
0.231340350 1.30 1.497 1.519242543 0
0.237090683 1.32 1.536 1.515221172 0
0.242658371 1.32 1.577 1.511673209 0
0.248992826 1.33 1.631 1.507998134 0
0.255140797 1.33 1.688 1.504753735 0
0.261600058 1.35 1.749 1.501644652 0
0.268977066 1.38 1.803 1.498422145 0
0.276165762 1.43 1.847 1.495575962 0
0.284400063 1.47 1.869 1.492625523 0
0.292449121 1.49 1.878 1.490019546 0
0.300967057 1.53 1.889 1.487521719 0
0.310773001 1.53 1.893 1.484932874 0
0.320409373 1.54 1.898 1.482647043 0
0.331546597 1.48 1.883 1.480278805 0
0.342537092 1.48 1.871 1.478188729 0
0.354281221 1.50 1.866 1.476187365 0
0.367947856 1.48 1.895 1.474115626 0
0.381533623 1.46 1.933 1.472288956 0
0.397430857 1.47 1.952 1.470399364 0
0.413328091 1.46 1.958 1.468734436 0
0.430550095 1.45 1.948 1.467142670 0
0.450903372 1.38 1.914 1.465497424 0
0.471476910 1.31 1.849 1.464048584 0
0.495993709 1.04 1.833 1.462550883 0
0.521001796 0.62 2.081 1.461231036 0
0.548665608 0.43 2.455 1.459967356 0
0.582152241 0.29 2.863 1.458656559 0
0.616907599 0.21 3.272 1.457494572 0
0.659566103 0.14 3.697 1.456279785 0
0.704536519 0.13 4.103 1.455189866 0
0.756087972 0.14 4.542 1.454118326 0
0.821181638 0.16 5.083 1.452959725 0
0.892075017 0.17 5.663 1.451867801 0
0.984114503 0.22 6.350 1.450619469 0
1.087705503 0.27 7.150 1.449348596 0

Contact info for comments and questions

Please direct your comments and questions regarding this software, as well as questions on other MJC Optical Technology software and services to:

Dr. Miroslaw Jonasz
MJC Optical Technology
217 Cadillac Street
Beaconsfield QC H9W 2W7

Internet: www.mjcopticaltech.com
e-mail: m.jonasz@mjcopticaltech.com

fax +1 514 695 3315


The information contained in this document is believed to be accurate. However, neither the author nor MJC Optical Technology guarantee the accuracy nor completeness of this information and neither the author nor MJC Optical Technology assumes responsibility for any omissions, and errors, or for damages which may result from using or misusing this information.

Last modified: . Copyright 2000-2014 MJC Optical Technology. All rights reserved.