Meep is a free and open-source software package for electromagnetics simulation via the finite-difference time-domain (FDTD) method spanning a broad range of applications.
- Free and open-source software under the GNU GPL.
- Complete scriptability via Python, Scheme, or C++ APIs.
- Simulation in 1d, 2d, 3d, and cylindrical coordinates.
- Distributed memory parallelism on any system supporting MPI.
- Portable to any Unix-like operating system such as Linux, macOS, and FreeBSD.
- Precompiled binary packages of official releases via Conda.
- Variety of arbitrary material types: anisotropic electric permittivity ε and magnetic permeability μ, along with dispersive ε(ω) and μ(ω) including loss/gain, nonlinear (Kerr & Pockels) dielectric and magnetic materials, electric/magnetic conductivities σ, saturable gain/absorption, and gyrotropic media (magneto-optical effects).
- Materials library containing predefined broadband, complex refractive indices.
- Perfectly matched layer (PML) absorbing boundaries as well as Bloch-periodic and perfect-conductor boundary conditions.
- Exploitation of symmetries to reduce the computation size, including even/odd mirror planes and 90°/180° rotations.
- Subpixel smoothing for improving accuracy and shape optimization.
- Custom current sources with arbitrary time and spatial profile as well as a mode launcher for waveguides and planewaves, and Gaussian beams.
- Frequency-domain solver for finding the response to a continuous-wave (CW) source as well as a frequency-domain eigensolver for finding resonant modes.
- ε/μ and field import/export in the HDF5 data format.
- GDSII file import for planar geometries.
- Field analyses including discrete-time Fourier transform (DTFT), Poynting flux, mode decomposition (for S-parameters), energy density, near to far transformation, frequency extraction, local density of states (LDOS), modal volume, scattering cross section, Maxwell stress tensor, absorbed power density, arbitrary functions; completely programmable.
- Adjoint solver for inverse design and topology optimization.
- Visualization routines for the simulation domain involving geometries, fields, boundary layers, sources, and monitors.
A time-domain electromagnetic simulation simply evolves Maxwell's equations over time within some finite computational volume, essentially performing a kind of numerical experiment. This can be used to calculate a wide variety of useful quantities. Major applications include:
- Transmittance and Reflectance Spectra — by Fourier-transforming the response to a short pulse, a single simulation can yield the scattering amplitudes over a broadband spectrum.
- Resonant Modes and Frequencies — by analyzing the response of the system to a short pulse, one can extract the frequencies, decay rates, and field patterns of the harmonic modes of lossy and lossless systems including waveguide and cavity modes.
- Field Patterns (e.g. Green's functions) — in response to an arbitrary source via a continuous-wave (CW) input (fixed-ω).
Meep's scriptable interface makes it possible to combine many sorts of computations along with multi-parameter optimization in sequence or in parallel.
Tutorial/Basics provides examples of the various kinds of computations.
The source repository is hosted on GitHub. Gzipped tarballs of tagged versions are in Releases. The release history is in NEWS. Installation instructions are in Installation.
For a list of topics, see the left navigation sidebar. For new users, the most important items to review are the Introduction, Tutorial/Basics, and FAQ.
This documentation is for the master branch of the source repository. Note that certain features described in this documentation may therefore be unavailable if you are using a tagged release.
For questions regarding setting up simulations, analyzing results, installation, etc., use the Discussions page on GitHub.
As an additional resource, archives of the meep-discuss mailing list, which is no longer active, are available which include postings from 2006-2021. These archives can also be accessed using a newsgroup reader via the NNTP interface address:
Bug Reports and Feature Requests
For bug reports and feature requests, please file a GitHub issue.
The Meep project is maintained by the developer community on GitHub. Acknowledgements provides a complete listing of the project contributors.
Support and Feedback
If you have questions or problems regarding Meep, you are encouraged to query the mailing list.