Function package for calculating light transport in multiple scattering media.
Find a file
eric F ba7abcafa7 Merging...
Merge branch 'main' of https://github.com/emfurst/DWS
2022-06-02 08:45:05 -04:00
Examples Rename mie_vs_rayleigh.py 2021-08-16 12:48:01 -04:00
.gitattributes Initial commit 2021-08-15 17:22:27 -04:00
README.md Update README.md 2022-06-02 06:51:18 -04:00
scattering.py Edit out test import 2022-06-02 08:41:30 -04:00

DWS

Function package for generating light transport properties in multiple scattering media
Nicholas Sbalbi, Qi Li, and Eric M. Furst

Usage

The functions mie_scattering and rayleigh_scattering calculate light scattering properties for scatterers, including scattering intensities and photon mean-free path. The input parameters are the particle and medium refractive indeces, particle radii, and incident light wavelength along with the desired structure factor model. The default is to assume non-interacting particles by setting the structure factor S(q)=1. See the documentation within scattering.py for further details. Examples are given below and example scripts can be found in the "Examples" folder.

Examples

In the simplest case, only the following system parameters meed to be input:

  • particle refractive index, n_p
  • medium refractive index, n_s
  • particle radii, a_p
  • wavelength of the incident light in a vacuum, lambda_vac
  • particle volume fraction, phi
theta, i1, i2, l_star, stats = mie_scattering(n_p, n_s, a_p, lambda_vac, phi)

Plotting i1 and i2 versus theta generated the polar plots seen above.

To specify the structure factor, the argument "struct" can be used. Currently implimented is a Percus-Yevick hard sphere structure factor ('PY'), a hard sphere with an excluded annulus ('PYAnnulus'), and a sticky hard sphere model with a square potential well ('SHS'). For some models, additional parameters must be specified using the "optional_params" arguement. Examples of each are seen below along with an plot of example parameters. See the documentation of scattering.py for parameter details and citations.

_, _, _, _, [q, _, s_q, _, _, _, _, _] = mie_scattering(n_p, n_s, a_p, lambda_vac, phi, struct='PY')
...  = mie_scattering(n_p, n_s, a_p, lambda_vac, phi, sruct='PYAnnulus', optional_params=[1.2*a_p])
...  = mie_scattering(n_p, n_s, a_p, lambda_vac, phi, sruct='SHS', optional_params=[0.2, 0.05])

The code is sufficiently optimized so that 100+ calls to mie/rayleigh_scattering can occur in under a second. See mie_vs_rayleigh_l_star.py for an example of such, the results of which are shown below.

Other Resources

Other great resources for scattering calculations can be found here:

License

GNU General Public License v3.0

Acknoledgments

The development of this code was primarily supported by NSF through the University of Delaware Materials Research Science and Engineering Center DMR-2011824. Additional financial support was received from the Chemours Company, Wilmington, DE.