Ovidio Peña Rodríguez 484ddc8b7b Revert "Revert "Merge branch 'quasar' of github.com:ovidiopr/scattnlay into quasar"" | vor 2 Jahren | |
---|---|---|
debian | vor 4 Jahren | |
doc | vor 9 Jahren | |
examples | vor 2 Jahren | |
guiapp | vor 2 Jahren | |
scattnlay | vor 2 Jahren | |
src | vor 2 Jahren | |
tests | vor 2 Jahren | |
utils | vor 2 Jahren | |
vue-cli3-webapp | vor 2 Jahren | |
.gitignore | vor 2 Jahren | |
.gitmodules | vor 2 Jahren | |
CHANGES | vor 10 Jahren | |
CMakeLists.txt | vor 2 Jahren | |
COPYING | vor 5 Jahren | |
LICENSE | vor 10 Jahren | |
MANIFEST.in | vor 5 Jahren | |
Makefile | vor 2 Jahren | |
PKG-INFO | vor 5 Jahren | |
README.md | vor 3 Jahren | |
go.sh | vor 8 Jahren | |
push-to-github.sh | vor 10 Jahren | |
requirements.txt | vor 3 Jahren | |
setup.cfg | vor 6 Jahren | |
setup.py | vor 2 Jahren |
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 ).
Fill the issue here: Issues.
Table of contents:
Limited web version is available at https://physics.ifmo.ru/mie/
To compile the source you will need a C++11 capable compiler. To use MultiPrecision feature you need to install Boost.Multiprecision library:
To compile the Python extension you need NumPy:
And to compile the Debian package you need some tools:
Compilation options
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.
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
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).
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
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
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
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
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.
GPL v3+