Go to file
Marek Nečada 9d8a0c1d45 Replace Amos with zbessel (shared version)
zbessel as shared library can be found e.g. here:
https://github.com/texnokrates/zbessel

Former-commit-id: 3cc66da970731e37a242459f8af3d4b68f362c75
2020-03-12 21:09:20 +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
cmake-scripts Replace Amos with zbessel (shared version) 2020-03-12 21:09:20 +02:00
examples/scuff-em-benchmarks (Temporary) Makefile for calculating benchmark T-matrices 2019-12-14 10:22:48 +02:00
lepaper Orbit figure draft 2019-08-02 10:01:22 +03:00
misc xy-periodic lattice Beyn algorithm support in ScatteringSystem 2020-03-09 10:14:40 +02:00
notes Additional notes for axially symmetric particles 2019-08-16 12:57:40 +03:00
oldtests Start modifying the tests structure. 2019-08-17 13:57:24 +03:00
qpms Replace Amos with zbessel (shared version) 2020-03-12 21:09:20 +02:00
tests Merge branch 'beyn_rework' 2019-11-04 09:43:44 +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 Replace Amos with zbessel (shared version) 2020-03-12 21:09:20 +02:00
Doxyfile docs: table with vswf conventions 2019-07-08 16:01:08 +03:00
README.Triton.md README update, include to Doxyfile. 2019-06-11 17:28:15 +03:00
README.md Build libqpms as shared library. 2019-08-12 16:33:54 +03:00
TODO.md Extend hardcoded T-matrix similarity tolerance. 2019-10-07 15:15:34 +03: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 Expose single vswf functions to cython. 2019-08-14 11:04:42 +03: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, a BLAS/LAPACK library with the respective C bindings (incl. the lapacke.h and cblas.h headers; OpenBLAS does have it all and is recommended) 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 -DCMAKE_INSTALL_PREFIX=${YOUR_PREFIX} .
  make install
  python3 setup.py install --user

Above, replace ${YOUR_PREFIX} with the path to where you want to install the shared library; you will also need to make sure that the linker can find it; on Linux, this means the path ${YOUR_PREFIX}/lib is included in your LIBRARY_PATH and LD_LIBRARY_PATH environment variables. The same applies to the GSL and OpenBLAS dependencies: they must be installed where the installation scripts and linker can find them (setting the C_INCLUDE_PATH environment variable might be necessary as well).

Special care might need to 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