Introduction to MEEP

Posted on Thu 20 July 2017 in MEEP

MEEP is a free (GNU GPL) finite-difference time-domain package developed by MIT for modelling electromagnetic systems.

It has some useful features such as:

  • 1D, 2D, 3D and cylindrical coordinates
  • Parallelism using the MPI standard
  • Arbitrary anisotropic electric permittivity ε and magnetic permeability μ
  • Dispersive ε(ω) and μ(ω) (including loss/gain) and nonlinear (Kerr & Pockels) dielectric and magnetic materials, and electric/magnetic conductivities σ.
  • PML absorbing boundaries and/or perfect conductor and/or Bloch-periodic boundary conditions.
  • Exploitation of symmetries to reduce the computation size — even/odd mirror symmetries and 90°/180° rotations.
  • Scriptability — either via a Scheme scripting front-end (as in libctl and MPB), or callable as a C++ library; a Python interface is also available.
  • Field output in the HDF5 standard scientific data format, supported by many visualization tools.
  • Arbitrary material and source distributions.
  • Field analysis including flux spectra, Maxwell stress tensor, frequency extraction, local density of states and energy integrals, near to far field transformations – all completely programmable.
  • Multi-parameter optimization, root-finding, integration, etcetera (via libctl).

I've been using MEEP for quite a few years and recently realised I had a whole bunch of different systems I had been modelling that would probably never see the light of day, but might be useful to others.

So I shall slowly be adding these MEEP examples to the blog. In the meantime, I recommend checking out MEEP – install it and go through the tutorials.