Skip to main content

output example Output example: Field distribution inside layered Si\Ag\Si sphere and Poynting vector distribution in Ag sphere with powerflow lines calculated with Scattnlay (scripts field-SiAgSi-flow.py and field-Ag-flow.py from example section as revision ).

Discuss:

Try to join our Gitter chat: Join the chat at https://gitter.im/scattnlay/Lobby

Fill the issue here: Issues.

Stable releases

  • Version 2.0.1 (Jan 17, 2017). DOI
  • Version 2.0.0 (Apr 1, 2016).
  • Version 1.0.0 (Nov 22, 2014).

How to use scattnlay

Table of contents:

Mie theory calculator web application

Limited web version is available at https://physics.ifmo.ru/mie/

Compile Code

To compile the source you will need a C++11 capable compiler. To use optional MultiPrecision feature you need to install Boost.Multiprecision library (package names are given in Ubuntu\Debian notation):

  • libboost-all-dev (>= 1.58.0)

To compile the Python extension you need NumPy:

  • python-numpy (>= 1.0)
  • python-all-dev (any version)
  • python-numpy-dev (any version)
  • pybind11 (any version)

And to compile the Debian package you need some tools:

  • debhelper (>=7.0.0)
  • dh-python (any version)
  • cdbs (>= 0.4.49)

Compilation options

  • make source - Create source package for Python extension
  • make ext - Create Python extension using C++ code
  • make install - Install Python extension on local system
  • make rpm - Generate a rpm package for Python extension
  • make deb - Generate a deb package for Python extension
  • make standalone - Create standalone programs (scattnlay and fieldnlay)
  • make clean - Delete temporal files

There are also an experimental CMake project and it is possible to compile into JavaScript module (using Emscripten compiler).

Python module

To build and install Python module run from the source code directory:

pip install . --user

Binary install

Binary files for Ubuntu and derivative distributions can be found at Launchpad To install it you must configure the repository:

sudo add-apt-repository ppa:ovidio/scattering
sudo apt update

and then you simply install the package:

sudo apt install python-scattnlay

You can also install it from PyPi via

sudo pip install python-scattnlay

You can also git clone and pip install -e . to develop python package.

Use

  1. Python library
  • Use scattnlay directly
from scattnlay import scattnlay, fieldnlay
...
x = ...
m = ...
coords = ...
terms, Qext, Qsca, Qabs, Qbk, Qpr, g, Albedo, S1, S2 = scattnlay(x, m)
terms, E, H = fieldnlay(x, m, coords)
...
  • Execute some of the test scripts (located in the folder 'tests/python') Example:
./test01.py
  1. Standalone program
  • Execute scattnlay directly:
scattnlay -l Layers x1 m1.r m1.i [x2 m2.r m2.i ...] [-t ti tf nt] [-c comment]
  • Execute fieldnlay directly:
fieldnlay -l Layers x1 m1.r m1.i [x2 m2.r m2.i ...] -p xi xf nx yi yf ny zi zf nz [-c comment]
  • Execute some of the test scripts (located in the folder 'tests/shell'):
./test01.sh > test01.csv
  1. C++ library

Scattnlay "Hello world!" example:

    try {
      nmie::MultiLayerMieApplied<double> multi_layer_mie; 
      multi_layer_mie.AddTargetLayer(core_width, index_Si);
      multi_layer_mie.AddTargetLayer(inner_width, index_Ag);
      multi_layer_mie.AddTargetLayer(outer_width, index_Si);
      multi_layer_mie.SetWavelength(WL);
      multi_layer_mie.RunMieCalculation();
      double Qabs = multi_layer_mie.GetQabs();
      printf("Qabs = %g\n", Qabs);
    } catch( const std::invalid_argument& ia ) {
      // Will catch if  multi_layer_mie fails or other errors.
      std::cerr << "Invalid argument: " << ia.what() << std::endl;
      return -1;
    }

The complete example-minimal.cc and a bit more complicated example-get-Mie.cc can be found in example directory along with go-cc-examples.sh script with build commands.

example-get-Mie.cc can be compiled using double precision or multiple precision (just include -DMULTI_PRECISION=200 to use 200 digits for calculations).

  1. O. Peña and U. Pal, "Scattering of electromagnetic radiation by a multilayered sphere," Comput. Phys. Commun. 180, 2348-2354 (2009). http://dx.doi.org/10.1016/j.cpc.2009.07.010

  2. K. Ladutenko, O. Peña-Rodríguez, I. Melchakova, I. Yagupov and P. Belov, "Reduction of scattering using thin all-dielectric shells designed by stochastic optimizer," J. Appl. Phys. 116, 184508 (2014). http://dx.doi.org/10.1063/1.4900529

  3. K. Ladutenko, P. Belov, O. Peña-Rodríguez, A. Mirzaei, A. Miroshnichenko and I. Shadrivov, "Superabsorption of light by nanoparticles," Nanoscale 7, 18897-18901 (2015). http://dx.doi.org/10.1039/C5NR05468K

  4. K. Ladutenko, U. Pal, A. Rivera, and O. Peña-Rodríguez, "Mie calculation of electromagnetic near-field for a multilayered sphere," Comp. Phys. Comm. 214, 225-230 (2017). http://dx.doi.org/j.cpc.2017.01.017

Acknowledgment

We expect that all publications describing work using this software, or all commercial products using it, cite at least one of the following references:

[1] O. Peña and U. Pal, "Scattering of electromagnetic radiation by a multilayered sphere," Computer Physics Communications, vol. 180, Nov. 2009, pp. 2348-2354.

[2] K. Ladutenko, U. Pal, A. Rivera and O. Peña-Rodríguez, "Mie calculation of electromagnetic near-field for a multilayered sphere," Computer Physics Communications, vol. 214, May 2017, pp. 225-230.

License

GPL v3+

Metadata

Release files for scattnlay 2.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for scattnlay 2.4
File Size Uploaded Provenance Actions
scattnlay-2.4.tar.gz 2.1 MB Without provenance Details for scattnlay-2.4.tar.gz

Built distributions (wheels)

Table of built distributions (wheels) for scattnlay 2.4
File Interpreter ABI Platform Actions
scattnlay-2.4-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details for scattnlay-2.4-cp312-cp312-win_amd64.whl
scattnlay-2.4-cp311-cp311-macosx_14_0_arm64.whl CPython 3.11 CPython 3.11 macOS 14.0+ ARM64 Details for scattnlay-2.4-cp311-cp311-macosx_14_0_arm64.whl

Total release size: 2.5 MB

Release files / scattnlay-2.4.tar.gz

Download URL scattnlay-2.4.tar.gz
Size 2.1 MB
Tags Source
SHA-256 checksum
How to use checksums
421deee544b442d9210f312484d1841a9d6abfdaec41368f409c1bdcce88d99a
BLAKE2b-256 checksum
How to use checksums
3eaab6c1033cf4cb7a232d5cf64699b90f246903cbb80fae79d3c8da0114d40e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.2

Release files / scattnlay-2.4-cp312-cp312-win_amd64.whl

Download URL scattnlay-2.4-cp312-cp312-win_amd64.whl
Size 162.2 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
4fa9304192e9af65ed92f03aa430ce438b8db58c7f7f646c08117174e03b7750
BLAKE2b-256 checksum
How to use checksums
746ba30385827411d1e0fbab53089ed271a44e7c0d7c712ec56959266ca23495
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.2

Release files / scattnlay-2.4-cp311-cp311-macosx_14_0_arm64.whl

Download URL scattnlay-2.4-cp311-cp311-macosx_14_0_arm64.whl
Size 182.5 kB
Tags CPython 3.11 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
cb22767209fa91ee627c6908010b9c8ef1a9e6c2c88abe9bb10a1ce51fee46e0
BLAKE2b-256 checksum
How to use checksums
7183e0ffa7632f18dcb67f6f842aa93c742e22abf162c8faaa3bd6b3a7cfd7ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.0.0 CPython/3.12.2

Security for scattnlay 2.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

2.4 This release

3 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page