A python full-field electrodynamical solver, based on the Green dyadic method (volume integral technique in frequency domain).

coupled dipoles method, green dyadic method, electrodynamical simulations, nano optics, frequency-domain
pip install pyGDM2==1.0.3


Overview / Installation

pyGDM2 is available on pypi and gitlab.

Detailed documentation with many examples is avaiable at the pyGDM2 documentation website. See also the documentation paper on arXiv (1802.04071)



  • python (2.7, python)
  • numpy (numpy)
  • python 2 headers (under linux, install the package python-dev or python-devel)


  • fortran compiler (tested with gfortran. gcc)
  • openmp (openmp)
  • f2py (comes with numpy. link)

Optional Python packages

  • scipy (Strongly recommended. Used for standard solver LU decomposition and several tools. scipy)
  • matplotlib (Strongly recommended. For all 2D visualization tools. matplotlib)
  • mpi4py (for MPI parallelized calculation of spectra. mpi4py)
  • mayavi (for all 3D visualization. mayavi)
  • PIL (image processing. PIL)
  • PaGMO / PyGMO (version 2.4+. Required for the EO submodule. pagmo)

(all available via pip)

Installation under linux

Via pip

Install from pypi repository via

$ pip install pygdm2

Via setup script

The easiest possibility to compile (and install) pyGDM is via the setup-script, which uses the extended distutils from numpy.

To install pyGDM, run in the source directory:

$ python install

To install to a user-defined location, use the prefix option:

$ python install --prefix=/some/specific/location

To only compile without installation, use

$ python build

Manual compilation

  1. clone git:

    $ git clone
  2. compile fortran parts:

    $ cd fortranBase
    $ make
  3. optional, for system-wide usage add to path and pythonpath, e.g. add following lines to file "/home/USER/.profile", where "path_of_pyGDM_folder" is the pyGDM installation directory:

    export PATH
    export PYTHONPATH

Installation under Mac OS X

The default compiler on OSX uses a clang which does not support OpenMP. Hence compilation might fail. We therefore suggest using Anaconda and install gcc from the conda repository in a virtualenv:

$ conda create -n python2 python=2.7 anaconda

"anaconda" at the end will copy the whole anaconda distribution to the virtial env. You can omit this option and create a "blank" virtual environment to install only selected packages.

Next activate the virtualenv and install the required software:

$ source activate python2
$ conda install pip
$ conda install gcc
$ pip install pygdm2

Alternatively, you can download the latest version and compile it manually without OpenMP support, which should work with the default OSX compiler:

$ python install --no-openmp

Installation under windows

Via pip

There is a binary for 64bit windows on the pypi repository (tested on Win10). Install via

$ pip install pygdm2


Python code

  • P. R. Wiecha

Fortran code

  • C. Girard
  • A. Arbouet
  • R. Marty
  • P. R. Wiecha