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 | 8 years ago | |
doc | 8 years ago | |
examples | 8 years ago | |
src | 7 years ago | |
tests | 8 years ago | |
utils | 9 years ago | |
.gitignore | 8 years ago | |
CHANGES | 10 years ago | |
COPYING | 9 years ago | |
LICENSE | 10 years ago | |
MANIFEST.in | 8 years ago | |
Makefile | 8 years ago | |
PKG-INFO | 8 years ago | |
README.md | 8 years ago | |
go.sh | 8 years ago | |
push-to-github.sh | 8 years ago | |
scattnlay.pyx | 9 years ago | |
setup.py | 8 years ago | |
setup_cython.py | 9 years ago |
Output example: Field distribution inside layered Si\Ag\Si sphere and Poynting vector distribution in Ag sphere with poweflow lines calculated with Scattnlay.
Table of contents:
To compile the source you will need C++11 capable compiler.
To compile the Python extension you also need the following packages:
To compile the Debian package you also need the following packages:
Compilation options
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
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)
...
./test01.py
scattnlay -l Layers x1 m1.r m1.i [x2 m2.r m2.i ...] [-t ti tf nt] [-c comment]
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]
./test01.sh > test01.csv
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;
}
"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
"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
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.
GPL v3+