Go to file
Marek Nečada b8b4497b12 vector.h new features (complex-kr) and syntax fixes
Former-commit-id: adc38be811b059f9eca4a119131da7250b709eec
2019-06-24 14:59:37 +03:00
amos Using d1mach.f, i1mach.f copied from scipy/scipy/special/mach/. 2019-03-20 21:02:28 +02:00
apps/transop-ewald transop_ewald.c continue parsing 2019-06-20 06:56:54 +03:00
besseltransforms Mathematica bessel transforms 2018-03-28 11:52:50 +03:00
lepaper Paper outline update 2019-05-13 17:34:50 +03:00
misc Comment out debug prints 2019-06-19 15:09:16 +03:00
notes File cleanup. 2019-02-18 15:01:15 +02:00
qpms vector.h new features (complex-kr) and syntax fixes 2019-06-24 14:59:37 +03:00
tests C Mie T-matrices but demand yet Bessel functions of complex arguments. 2019-03-18 19:54:29 +02:00
.gitignore scatsystem.h new prototype drafts and misc. 2019-03-07 07:10:43 +00:00
BUGS.rst Note smash stacking bug 2018-05-18 07:12:15 +03:00
CMakeLists.txt Generate a C file with git revision string 2019-06-17 17:22:33 +03:00
Doxyfile README update, include to Doxyfile. 2019-06-11 17:28:15 +03:00
README.Triton.md README update, include to Doxyfile. 2019-06-11 17:28:15 +03:00
README.md Docs update 2019-06-13 12:37:31 +03:00
TODOs.rst scatsys orbit base generator 2019-03-07 04:46:19 +00:00
finite_systems.md Docs update 2019-06-13 12:37:31 +03:00
lattices.md Docs update 2019-06-13 12:37:31 +03:00
setup.cfg Balíčkování 2016-03-27 12:56:54 +03:00
setup.py Try whether Triton behaves better if the parallelized code uses no OpenBLAS. 2019-03-29 13:17:28 +02:00
version.cmake version.cpp -> qpms_version.c 2019-06-17 17:28:43 +03:00

README.md

QPMS README

QPMS is a toolkit for frequency-domain simulations of photonic systems consisting of compact objects (particles) inside a homogeneous medium. Scattering properties of the individual particles are described by their T-matrices (which can be obtained e.g. with the scuff-tmatrix tool from the SCUFF-EM suite).

QPMS handles the multiple scattering of electromagnetic radiation between the particles. The system can consist either of a finite number of particles or an infinite number of periodically arranged lattices (with finite number of particles in a single unit cell).

Features

Finite systems

  • Computing multipole excitations and fields (TODO) scattered from nanoparticle clusters illuminated by plane, spherical or cylindrical (TODO) waves.
  • Finding eigenmodes.
  • Calculating cross sections (TODO).
  • Reducing numerical complexity of the computations by exploiting symmetries of the cluster (decomposition to irreducible representations).

Infinite systems (lattices)

  • 2D-periodic systems supported. (TODO 1D and 3D.)
  • Calculation of transmission and reflection properties (TODO).
  • Finding eigenmodes and calculating dispersion relations.
  • Calculation of far-field radiation patterns of an excited array (TODO).
  • Reducing numerical complexity of the computations by exploiting symmetries of the lattice (decomposition to irreducible representations).

Installation

The package depends on several python modules and GSL (>= 2.0). The python module dependencies should be installed automatically when running the installation script. If you have a recent enough OS, you can get GSL easily from the repositories; on Debian and derivatives, just run apt-get install libgsl-dev under root. Alternatively, you can get the source and compile it yourself.

You also need a fresh enough version of cmake.

After GSL is installed, you can install qpms to your local python library using::

  cmake .
  make amos
  python3 setup.py install --user

If GSL is not installed the standard library path on your system, you might need to pass it to the installation script using the LIBRARY_PATH and LD_LIBRARY_PATH environment variables.

Special care has often be taken when installing QPMS in cluster environments. Specific installation instructions for Aalto University's Triton cluster can be found in a separate document.

Documentation

Documentation of QPMS is a work in progress. Most of the newer code is documented using doxygen comments. To build the documentation, just run doxygen in the root directory; the documentation will then be found in docs/html/index.html.

Of course, the prerequisite of this is having doxygen installed. If you don't, you will probably find it easily in your OS's repositories. On Debian and derivatives, simply run apt-get install doxygen under root.

Tutorials