MiePy is a Python module for the generalized multiparticle Mie theory (GMMT), also known as the aggregate T-matrix method. MiePy solves the electrodynamics of a collection of spherical or non-spherical scatterers with an arbitrary incident source.
Electric field around a 37 particle cluster
3D electric field contours around three metal nanoparticles
- Non-spherical particles using the T-matrix formulation via the null-field method with discrete sources (NFM-DS). Includes cylinders, spheroids, ellipsoids, cubes and polygonal prisms
- Arbitrary incident sources (plane waves, Gaussian beams, HG and LG beams, point dipoles)
- Evaluation of cluster cross-sections and optical force and torque on individual particles
- Periodic boundary conditions with various lattice types (square, hexagonal, etc.) and mirror and discrete rotational symmetries for faster calculations
- Optional planar interface (substrate)
- 3D scene visualization using the VPython library
- Image clusters using a simulated microscope
- OpenMP parallelization for systems with larger numbers of particles
pip install miepy
If using uv
:
uv venv --python 3.13
uv pip install miepy
source .venv/bin/activate
For examples and use cases, see examples folder.
For an overview of the theory, see docs folder.
MiePy uses vcpkg for C++ dependency management and uv for Python management, which simplifies building across platforms.
Prerequisites:
- GCC and GFORTRAN
- uv
Build steps:
- Clone MiePy and its submodules:
git clone https://github.com/johnaparker/miepy.git miepy --recurse-submodules && cd miepy
- Bootstrap vcpkg (first time only):
./vcpkg/bootstrap-vcpkg.sh
- Install MiePy using uv:
uv sync
- Optionally, run the tests to verify correctness:
uv run pytest tests
MiePy is licensed under the terms of the GPLv3 license.