EMUstack: An open source route to insightful electromagnetic computation via the Bloch mode scattering matrix method

Björn C P Sturmberg*, Kokou B. Dossou, Felix J. Lawrence, Christopher G. Poulton, Ross C. McPhedran, C. Martijn de Sterke, Lindsay C. Botten

*Corresponding author for this work

Research output: Contribution to journalArticlepeer-review

9 Citations (Scopus)


We describe EMUstack, an open-source implementation of the Scattering Matrix Method (SMM) for solving field problems in layered media. The fields inside nanostructured layers are described in terms of Bloch modes that are found using the Finite Element Method (FEM). Direct access to these modes allows the physical intuition of thin film optics to be extended to complex structures. The combination of the SMM and the FEM makes EMUstack ideally suited for studying lossy, high-index contrast structures, which challenge conventional SMMs. Program summary: Program title: EMUstack. Catalogue identifier: AEZI_v1_0. Program summary URL: http://cpc.cs.qub.ac.uk/summaries/AEZI_v1_0.html Program obtainable from: CPC Program Library, Queen's University, Belfast, N. Ireland. Licensing provisions: GNU General Public License, version 3. No. of lines in distributed program, including test data, etc.: 154301. No. of bytes in distributed program, including test data, etc.: 5308635. Distribution format: tar.gz. Programming language: Python, Fortran. Computer: Any computer with a Unix-like system with Python, a Fortran compiler and F2Py [1]. Also required are the following free libraries LAPACK and BLAS [2], UMFPACK [3]. Developed on 1.6 GHz Intel Core i7. Operating system: Any Unix-like system; developed on Ubuntu 14.04 (using Linux kernel 3.16). RAM: Problem dependent; specifically on the resolution of the FEM mesh and the number of modes included. The given example uses approximately 100 MB. Classification: 10. External routines: Required are the following free libraries LAPACK and BLAS [2], UMFPACK [3]. Optionally exploits additional commercial software packages: Intel MKL [4], Gmsh [5]. Nature of problem: Time-harmonic electrodynamics in layered media. Solution method: Finite element method and the scattering matrix method. Running time: Problem dependent (typically about 3 s per wavelength including plane wave orders ≤3). References: [1]P. Peterson, F2PY: A tool for connecting Fortran and Python programs, International Journal of Computational Science and Engineering 4 (4) (2009) 296.[2]LAPACK, http://www.netlib.org/lapack[3]T.A. Davis, Algorithm 832: UMFPACK V4.3 - An Unsymmetric-Pattern Multifrontal Method, ACM Transactions on Mathematical Software 30 (2) (2004) 165-195.[4]Intel MKL, http://www.software.intel.com/intel-mkl[5]C. Geuzaine, J.-F. Remacle, Gmsh: a three-dimensional finite element mesh generator with built-in pre- and post-processing facilities, International Journal for Numerical Methods in Engineering 79 (2009) 1309-1331.

Original languageEnglish
Pages (from-to)276-286
Number of pages11
JournalComputer Physics Communications
Publication statusPublished - May 2016
Externally publishedYes


  • Computational electromagnetism
  • Finite Element Method
  • Maxwell solver
  • Scattering matrix method


Dive into the research topics of 'EMUstack: An open source route to insightful electromagnetic computation via the Bloch mode scattering matrix method'. Together they form a unique fingerprint.

Cite this