No Description

Ovidio Peña Rodríguez 5f17f9a284 Fixed a bug in the code that would introduce an error in the calculation of Qpr (Issue #10). 7 years ago
debian 0d00d66539 Updated version number and modified the code to allow compilation in Launchpad. 8 years ago
doc 0d00d66539 Updated version number and modified the code to allow compilation in Launchpad. 8 years ago
examples 0d00d66539 Updated version number and modified the code to allow compilation in Launchpad. 8 years ago
src 5f17f9a284 Fixed a bug in the code that would introduce an error in the calculation of Qpr (Issue #10). 7 years ago
tests 0d00d66539 Updated version number and modified the code to allow compilation in Launchpad. 8 years ago
utils 098e75e02b Even more changes. Reorganized code. 9 years ago
.gitignore 55496bd28e Gauss integration verified vs Gauss law 8 years ago
CHANGES 1b7786ad5a Initial commit based on Ovidio version of python-scattnlay 0.3.0 10 years ago
COPYING c23b1aae05 Reorganized source code 9 years ago
LICENSE 1b7786ad5a Initial commit based on Ovidio version of python-scattnlay 0.3.0 10 years ago
MANIFEST.in 0d00d66539 Updated version number and modified the code to allow compilation in Launchpad. 8 years ago
Makefile 0d00d66539 Updated version number and modified the code to allow compilation in Launchpad. 8 years ago
PKG-INFO 0d00d66539 Updated version number and modified the code to allow compilation in Launchpad. 8 years ago
README.md 5a74126b4b Added instructions for installing binary files. 8 years ago
go.sh 0d00d66539 Updated version number and modified the code to allow compilation in Launchpad. 8 years ago
push-to-github.sh 0d00d66539 Updated version number and modified the code to allow compilation in Launchpad. 8 years ago
scattnlay.pyx f4efce1cd4 Several changes to complete the features 9 years ago
setup.py 0d00d66539 Updated version number and modified the code to allow compilation in Launchpad. 8 years ago
setup_cython.py ae294b55fd Changed version number to '2.0'. 9 years ago

README.md

output example Output example: Field distribution inside layered Si\Ag\Si sphere and Poynting vector distribution in Ag sphere with poweflow lines calculated with Scattnlay.

How to use scattnlay

Table of contents:

Compile Code:

To compile the source you will need C++11 capable compiler.

To compile the Python extension you also need the following packages:

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

To compile the Debian package you also need the following packages:

  • debhelper (>=7.0.0)
  • cdbs (>= 0.4.49)

Compilation options

  • make source - Create source package for Python extension
  • make cython - Convert Cython code to C++
  • make python_ext - Create Python extension using C++ code
  • make cython_ext - Create Python extension using Cython code
  • make install - Install Python extension on local system
  • make buildrpm - Generate a rpm package for Python extension
  • make builddeb - Generate a deb package for Python extension
  • make standalone - Create standalone programs (scattnlay and fieldnlay)
  • make clean - Delete temporal files

Binary install:

Binary files for Ubuntu 14.04 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-get update

and then you simply install the package:

sudo apt-get install python-scattnlay

For other versions of Ubuntu you can download the *.deb file for your OS (e.g. it can be python-scattnlay_2.0.1-1_amd64.deb for 64-bit OS) and install it using:

sudo dpkg -i python-scattnlay_2.0.1-1_amd64.deb

In Ubuntu 16.04 you may need to download and manually install python-support package beforehand (it depends on your OS) to satisfy the dependencies.

sudo dpkg -i python-support_1.0.15_all.deb

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
    try {
      MultiLayerMie multi_layer_mie;
      multi_layer_mie.SetLayersSize(x);
      multi_layer_mie.SetLayersIndex(m);

      multi_layer_mie.RunMieCalculation();

      *Qsca = multi_layer_mie.GetQsca();
      *Qabs = multi_layer_mie.GetQabs();
    } catch(const std::invalid_argument& ia) {
      // Will catch if  multi_layer_mie fails or other errors.
      std::cerr << "Invalid argument: " << ia.what() << std::endl;
      throw std::invalid_argument(ia);
      return -1;
    }

Papers

  1. "Scattering of electromagnetic radiation by a multilayered sphere" O. Pena and U. Pal, Computer Physics Communications, vol. 180, Nov. 2009, pp. 2348-2354. http://dx.doi.org/10.1016/j.cpc.2009.07.010

  2. "Reduction of scattering using thin all-dielectric shells designed by stochastic optimizer" Konstantin Ladutenko, Ovidio Peña-Rodríguez, Irina Melchakova, Ilya Yagupov, and Pavel Belov J. Appl. Phys., vol. 116, pp. 184508, 2014 http://dx.doi.org/10.1063/1.4900529

Acknowledgment

We expect that all publications describing work using this software, or all commercial products using it, cite the following reference:

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

License

GPL v3+