Go to file
Marek Nečada 9a68cb0293 WIP rewriting lattice sums part.
Former-commit-id: 2a61b377bb5f8e675c6e6866a2f161b3bf31f34d
2020-06-01 16:34:25 +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
lepaper WIP rewriting lattice sums part. 2020-06-01 16:34:25 +03:00
misc Comment out debug prints 2019-06-19 15:09:16 +03:00
notes Notes about convention and spherical harmonics transformations. 2019-07-12 17:54:25 +03:00
qpms Use higher precision in some 2D irrep matrices. 2019-07-29 21:38:43 +03:00
tests PointGroup cython class, fix many bugs (quaternion ambiguity). 2019-07-24 18:26:12 +03: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 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 Overview of Legendre function and spherical harmonics conventions. 2019-07-09 20:25:29 +03:00
TODO.md Cython-wrap additional translations.h functions. 2019-07-22 10:08:09 +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 PointGroup cython class, fix many bugs (quaternion ambiguity). 2019-07-24 18:26:12 +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 .
  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