MIT Photonic-Bands


The MIT Photonic-Bands (mpb) package is a program for computing the band structures (dispersion relations) and electromagnetic modes of periodic dielectric structures, on both serial and parallel computers.

User instructions

mpb is available via the modules system. To add it to your environment run:

$ module load mpb/1.6.1

The following variants of mpb are available:

Serial version.
Serial version with inversion symmetry in the dielectric function assumed, which enables a factor of 2 saving in time and memory.
Parallel version.
Parallel version with inversion symmetry.

Two utility programs are also installed: mpb-data and mpb-split. The latter also has an inversion-symmetry analogue, mpbi-split.

The MPB website contains lots of documentation and a users’ manual. Documentation is also available in the man pages. Please cite MPB in any publication for which you found it useful.


GNU General Public License.

Admin notes

I compiled the serial versions in order to also produce the additional utilities. Given the parallel versions are given different names, I installed them all to the same module.

$ make distclean
$ ../mpb-1.6.1/configure CC=icc CFLAGS='-O3 -fPIC' F77=ifort FFLAGS='-O3 -fPIC' LDFLAGS=' -L${MKLROOT}/lib/intel64 -Wl,--no-as-needed -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -ldl' --with-libctl=$LIBCTL_ROOT/share/libctl --prefix=/common/debian/9.1/MPI/intel/2017.4/openmpi/2.1/mpb/mpb-1.6.1 --with-hermitian-eps
$ make && make install

The MPI and/or inversion symmetry versions were compiled by adding the combinations of ‘–with-mpi’ and ‘–with-inv-symmetry’ to the configure command. Note that ‘make distclean` must be run between compiling each variant.