https://github.com/scottprahl/miepython
Mie scattering of light by perfect spheres
https://github.com/scottprahl/miepython
jupyter-notebook python scattering
Last synced: 20 days ago
JSON representation
Mie scattering of light by perfect spheres
- Host: GitHub
- URL: https://github.com/scottprahl/miepython
- Owner: scottprahl
- License: mit
- Created: 2017-08-03T17:43:32.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2025-03-16T16:38:57.000Z (about 1 month ago)
- Last Synced: 2025-04-01T05:32:26.660Z (27 days ago)
- Topics: jupyter-notebook, python, scattering
- Language: Python
- Homepage:
- Size: 24 MB
- Stars: 177
- Watchers: 10
- Forks: 57
- Open Issues: 3
-
Metadata Files:
- Readme: README.rst
- Changelog: CHANGELOG.rst
- License: LICENSE.txt
- Citation: CITATION.cff
Awesome Lists containing this project
README
.. |pypi| image:: https://img.shields.io/pypi/v/miepython?color=68CA66
:target: https://pypi.org/project/miepython/
:alt: pypi.. |github| image:: https://img.shields.io/github/v/tag/scottprahl/miepython?label=github&color=68CA66
:target: https://github.com/scottprahl/miepython
:alt: github.. |conda| image:: https://img.shields.io/conda/vn/conda-forge/miepython?label=conda&color=68CA66
:target: https://github.com/conda-forge/miepython-feedstock
:alt: conda.. |doi| image:: https://zenodo.org/badge/99259684.svg
:target: https://zenodo.org/badge/latestdoi/99259684
:alt: doi.. |license| image:: https://img.shields.io/github/license/scottprahl/miepython?color=68CA66
:target: https://github.com/scottprahl/miepython/blob/master/LICENSE.txt
:alt: License.. |test| image:: https://github.com/scottprahl/miepython/actions/workflows/test.yml/badge.svg
:target: https://github.com/scottprahl/miepython/actions/workflows/test.yml
:alt: Testing.. |docs| image:: https://readthedocs.org/projects/miepython/badge?color=68CA66
:target: https://miepython.readthedocs.io
:alt: Docs.. |downloads| image:: https://img.shields.io/pypi/dm/miepython?color=68CA66
:target: https://pypi.org/project/miepython/
:alt: Downloads.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg
:target: https://github.com/psf/black
:alt: code style: blackmiepython
=========by Scott Prahl
|pypi| |github| |conda| |doi|
|license| |test| |docs| |downloads| |black|
________
``miepython`` is a pure Python module to calculate light scattering for
non-absorbing, partially-absorbing, or perfectly-conducting spheres.This code provides functions for calculating the extinction efficiency,
scattering efficiency, backscattering, and scattering asymmetry. Moreover, a set
of angles can be given to calculate the scattering for a sphere at each of those
angles.Mie computations are done following `the procedure described by Wiscombe
`_. This code has
been validated against his results.Full documentation at
Version 3 changes
-----------------This version contains major changes to the code base and **has API breaking changes**.
If you don't need the new functionality for fields, then you can continue to use the
last version with the old API: 2.5.5Version 3.0 has many changes, but the major ones are:
* a complete overhaul of API
* added support to calculate Mie coefficients for fields inside sphere
* future work will implement calculating electric and magnetic fieldsPay Attention!
--------------When comparing different Mie scattering codes, make sure that you're aware of the conventions used by each code. ``miepython`` makes the following assumptions:
#. The imaginary part of the complex index of refraction for absorbing spheres is *negative*.
Currently if you pass refractive indicies with a positive imaginary value, the refractive
index is silently converted to a negative value before calculation.#. The scattering phase function is normalized so it equals the *single scattering albedo* when
integrated over 4π steradians. The default normalization can now be changed.Installation
---------------Use ``pip``::
pip install miepython
or ``conda``::
conda install -c conda-forge miepython
An example
----------The following code::
import miepython as mie
m = 1.5 - 1j # refractive index of sphere
d = 100 # nm diameter of sphere
lambda0 = 314.15 # nm wavelength in vacuumqext, qsca, qback, g = mie.efficiencies(m, d, lambda0)
print("The extinction efficiency is %.3f" % qext)
print("The scattering efficiency is %.3f" % qsca)
print("The backscatter efficiency is %.3f" % qback)
print("The scattering anisotropy is %.3f" % g)should produce::
The extinction efficiency is 2.336
The scattering efficiency is 0.663
The backscatter efficiency is 0.573
The scattering anisotropy is 0.192There are a few short python scripts in the github repository.
* `Extinction Efficiency of Absorbing and Non-Absorbing Spheres `_
.. image:: https://raw.githubusercontent.com/scottprahl/miepython/main/docs/01.svg
:alt: Absorbing and non-absorbing spheres
* `Four Micron Glass Spheres `_.. image:: https://raw.githubusercontent.com/scottprahl/miepython/main/docs/02.svg
:alt: Glass spheres with resonance spike* `One Micron Water Droplets `_
.. image:: https://raw.githubusercontent.com/scottprahl/miepython/main/docs/03.svg
:alt: Water Droplets* `Gold Nanospheres `_
.. image:: https://raw.githubusercontent.com/scottprahl/miepython/main/docs/04.svg
:alt: Gold nanospheresLicense
-------``miepython`` is licensed under the terms of the MIT license.