Skip to main content

Light scattering by multiple particles in thin-film systems

Project description

https://gitlab.com/AmosEgel/smuthi/badges/master/pipeline.svg Documentation Status https://badge.fury.io/py/smuthi.svg

https://gitlab.com/AmosEgel/smuthi/raw/master/docs/_source/images/logo_cropped.png

SMUTHI stands for ‘scattering by multiple particles in thin-film systems’. The software allows to simulate light scattering by multiple particles near (or between) planar interfaces. It is based on the T-matrix method for the single particle scattering, and on the scattering-matrix method for the propagation through the layered medium.

Target group: Scientists and engineers in the field of optics and optoelectronics.

License: SMUTHI is provided under the MIT license.

Author: Amos Egel (amos.egel@gmail.com).

The following persons have contributed to the project: Amos Egel, Dominik Theobald, Krzysztof Czajkowski, Konstantin Ladutenko, Alexey Kuznetsov, Lorenzo Pattelli, Parker Wray.

We thank Adrian Doicu, Thomas Wriedt and Yuri Eremin for allowing us to use their NFM-DS Fortran code, Giacomo Mazzamuto, Ilia Rasskazov, Fabio Mangini, Refet Ali Yalcin, Johanne Heitmann Solheim, Tanay Paul and Christopher Gubbin for bug reports, useful comments and smaller code additions and Håkan T Johansson for making his pywigjxpf software availible through PyPi and also under Windows.

For a guide how to install and use the software, see the documentation or read our paper describing the software.

If you are using Smuthi, please subscribe to the Smuthi mailing list. The list is also a good place to ask for support from the developers or from experienced users.

To report a bug, you can also open an issue in Gitlab.

Contributions are highly welcome! Please refer to the contribution guidelines.

If you have used Smuthi for a publication, please cite us as: Amos Egel, Krzysztof M. Czajkowski, Dominik Theobald, Konstantin Ladutenko, Alexey S. Kuznetsov, Lorenzo Pattelli, “SMUTHI: A python package for the simulation of light scattering by multiple particles near or between planar interfaces”, Journal of Quantitative Spectroscopy and Radiative Transfer, Volume 273, 2021, 107846, ISSN 0022-4073, https://doi.org/10.1016/j.jqsrt.2021.107846.

If you use Smuthi to simulate periodic particle arrangements, please also cite: Dominik Theobald, Dominik Beutel, Luisa Borgmann, Henning Mescher, Guillaume Gomard, Carsten Rockstuhl, Uli Lemmer, “Simulation of light scattering in large, disordered nanostructures using a periodic T-matrix method”, Journal of Quantitative Spectroscopy and Radiative Transfer, Volume 272, 2021, 107802, ISSN 0022-4073, https://doi.org/10.1016/j.jqsrt.2021.107802.

If you use Smuthi to simulate non-spherical particles, please also cite: Doicu, Adrian, Thomas Wriedt, and Yuri A. Eremin, “Light scattering by systems of particles: null-field method with discrete sources: theory and programs”, Vol. 124. Springer, 2006, https://doi.org/10.1007/978-3-540-33697-6

What’s new in version 2.2

Fixing a bug in the layered spheroid T-matrix calculation, and a bug in the calculation of the scattering cross section (Krzysztof Czajkowski, Amos Egel).

What’s new in version 2.1

This version contains a couple of smaller bug fixes that allow Smuthi to run with newer Python and Numpy versions (Konstantin Ladutenko, Amos Egel).

What’s new in version 2.0

Simulation of periodic particle aggregates (Dominik Theobald). CYTHON acceleration for direct particle coupling. Skipping layer mediated coupling in case of trivial (i.e., homogeneous) background media (Parker Wray). MPI acceleration for near field evaluation (Alexey Kuznetsov).

What’s new in version 1.2

Several small bug fixes, support of STL-format for custom shaped particles, support for layered spheroids, accelerated near field evaluations in CPU mode, improved algorithms for automatic parameter selection, support for magnetic field calculations.

The following changes break backward compatibility: - Extinction cross section is now by default a single number, as opposed to a dictionary with “top” and “bottom” part - Angular resolution parameters are now provided in radians (like all other angular quantities).

What’s new in version 1.1

The interface to NFM-DS has undergone a major revision and is now offered in the form of an F2Py Fortran extension (no more dealing with input and output text files or temporary NFM-DS directories). Several new particle classes were added (anisotropic sphere, custom shape particles). Advanced automatic parameter selection. Binary wheels on PyPi, such that no Fortran compiler is necessary on Windows machines. The release workflow was automatized using GitLab CI and Appveyor. Revision of the graphical output. New application examples and user guide sections were added to the online documentation. The simulation from input data files (rather than Python scripts) is no longer supported. Several smaller changes and bug fixes.

What’s new in version 1.0

A major bug that significantly slowed down Smuthi under Windows was fixed. The module structure has undergone a major review (unfortunately, backwards compatibility cannot be granted and you might need to adapt some import statements in your scripts when updating to version 1.0). For spheres, the calculation of internal fields (i.e., inside the particle) was implemented. A module for automatic selection of numerical parameters has been added (still in beta). For non-spherical particles, Smuthi now requires the GNU Fortran compiler also under Windows (MinGW). The use of the precompiled executable is deprecated. Pywigxjpf is now also available for Windows - however, the sympy fallback solution for the calculation of the Wigner3j symbols is still provided. Convenience functions for the definition of reasonable Sommerfeld contours have been added and can be managed through the simulation class (call to “set_default_k_parallel” no more necessary). Plenty of smaller changes and bug fixes. Advanced logging.

What’s new in version 0.9

MPI support for the parallel execution of many simulations, acceleration with Numba JIT, faster evaluation of Wigner3j symbols through pywigxjpf

What’s new in version 0.8

Support for rotated particles, GPU support for the calculation of the near field.

What’s new in version 0.7

Iterative solver (GMRES), lookup tables and GPU support were added for fast simulations including large particle numbers.

What’s new in version 0.6

Dipole sources are supported as initial field.

What’s new in version 0.5

Gaussian beams (more precisely: beams with transverse Gaussian footprint) are supported as initial field.

What’s new in version 0.4

The data structure has been updated to a more consequent object oriented approach, including a PlaneWaveExpansion class and a SphericalWaveExpansion class. Smuthi’s API is now also documented.

What’s new in version 0.3

The software now allows to compute the electric near field. The fields can be plotted as png figure files and as gif animations. All generated output can be stored as figure files or as text files. The simulation object can be exported as binary file.

What’s new in version 0.2.2

Finite cylinders were added.

What’s new in version 0.2

In addition to spherical particles, spheroids can now be selected as scattering particles, too. Spheroids are ellipsoidal particles with one axis of rotational symmetry (which is currently fixed to be the direction perpendicular to the layer interfaces).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

SMUTHI-2.2.4.tar.gz (515.0 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

SMUTHI-2.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

SMUTHI-2.2.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

SMUTHI-2.2.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl (3.7 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.17+ x86-64

File details

Details for the file SMUTHI-2.2.4.tar.gz.

File metadata

  • Download URL: SMUTHI-2.2.4.tar.gz
  • Upload date:
  • Size: 515.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.10.19

File hashes

Hashes for SMUTHI-2.2.4.tar.gz
Algorithm Hash digest
SHA256 f6d775fac13c4fea2a7a094cbd11aa6c6148052ab70c215873782a32e2b7f247
MD5 1215b232efd7688bc3721219666b7fcb
BLAKE2b-256 eb914614ddffd7bdac84aceec1bd7abb9445329a88453b18833c8dd8bd8a8a2c

See more details on using hashes here.

File details

Details for the file SMUTHI-2.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for SMUTHI-2.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 d75c6e44b64be715fc11dcf2fce4d79828400b41179f7474b3f0f16f2bf2120c
MD5 eb1043a650debf5dac680c3af15f7288
BLAKE2b-256 71b677043835fe2732fbb5ea8324e2f39ae2fc7388fe774c9db4be1a5d34c22a

See more details on using hashes here.

File details

Details for the file SMUTHI-2.2.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for SMUTHI-2.2.4-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 14df9cec5cb142efea0560b40b53b00e305025a558ccf7edd2b8f2a3ed4d280f
MD5 7da80a53db6d1e5bb59c930074855113
BLAKE2b-256 d3924137026adbf79a8ce97365d5374893c5b281208c46373653b31a63cd570a

See more details on using hashes here.

File details

Details for the file SMUTHI-2.2.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl.

File metadata

File hashes

Hashes for SMUTHI-2.2.4-cp38-cp38-manylinux2014_x86_64.manylinux_2_17_x86_64.whl
Algorithm Hash digest
SHA256 ad9672a46699751159481b6df18c9f8c687645d4d2689675347259efda9a678c
MD5 8d650c05b5d40fa3d63cf5c20fe26e7a
BLAKE2b-256 8eba0e081686bb5c3938fa1d9c80c1360ddc10d0fea1dbfe6a273131d80dd4ba

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page