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.
Key Features
- 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.
Time-Domain Simulation#
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.
Download#
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.
Documentation#
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.
Discussion Forum#
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: news.gmane.io/gmane.comp.science.electromagnetism.meep.general
.
Bug Reports and Feature Requests#
For bug reports and feature requests, please file a GitHub issue.
Acknowledgements#
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.